邓良剑授课
我们现在在哪 ?
之
本科《数学实验》课程
邓良剑授课
实际问题 模型求解(算法)
求解模型的准确而完整的清 晰描述,要有:输入->输出
若结果正确(合理)
=>输出结果
电脑运行输出结果
输出形式:数据
若结果不正确
(不合理)
=>修改、调试…
模型错误 算法设计错误 编程错误
建模 分析求解
编程实 现算法
数学模型
如:优化模型、方程模型等
v 第一层次: 算法-->编程(MATLAB语言)-->结果 v 第二层次: 问题建模(难、核心)+算法设计(难、
核心)+编程+分析结果+调试修改
应用数学解决问题的 (大体)流程
邓良剑授课
本课程最主要内容一
v 具备分析问题、数学建模和算法的能力,进而为后续编程打好基础 问题
分析问题并给出数学解决方法
设计算法,为编程铺垫
q 重点:问题的数学化能力
Ø 数学知识
Ø 问题与数学知识的联系
Ø 数学模型和算法的建立能力 Ø 积累与学习
邓良剑授课
本课程最主要内容二
v 知道算法,如何用MATLAB编程实现算法,最终得到(测试)结果 已知算法
MATLAB/Octave软件
编写程序(得结果)
q 重点:如何用MATLAB编程
Ø 基本语法规范
Ø 基本知识、基本命令、如何 写一个简单MATLAB程序
Ø 熟悉基本结构,如基本的顺序结 构、选择结构、循环结构等
Ø 简单的程序调试能力
邓良剑授课
学习《数学实验》的意义何在?
邓良剑授课
1. 重要链接:
[1] www.baidu.com 百度
[2] www.mathworks.com Matlab官网
[3] https://www.gnu.org/software/octave/
Octave官网
[4] https://www.ilovematlab.cn/
Matlab中文论坛
[5] https://www.ilovematlab.cn/forum-266-1.html
Matlab中文论坛MATLAB/Simulink 资源分享 (意义之一)
邓良剑授课
菜价a元/斤,打算 花30购买,问可以 购买多少斤菜?
分析可得求解模 型的算法:
x = 30/a
若结果正确 =>输出结果
例:输入a = 3, 输出 x = 10
电脑运行程序 输出结果
模型错误 算法设计错误 编程错误
建模 分析求解
编程实 现算法
设可以购买x斤,
则可得模型:
30= a*x
若结果不正确
例:输入a = 3, 输出 x = 4
=>修改、调试
举例一
(问题) (模型) (算法)
(结果)
邓良剑授课
若结果正确 =>输出结果
建模 分析求解
编程实 现算法
若结果不正确,
调试、修改
举例二
(问题) (模型)
(算法)
(结果)
图像修补问题
邓良剑授课
学习《数学实验》之前知道的必备知识
邓良剑授课
一、什么是数学实验
• 数学实验是与计算机技术、数学知识、应用数学知识有关的实践性课 程。
• 数学实验的主要教学目的:
• 培养学生对数学知识的探究意识、对数学知识的应用意识
• 培养学生在实验中用所学的数学知识和计算机技术去认识问题和解决实际问题 的能力
• 培养学生学习数学的积极性
邓良剑授课
二、数学实验课程内容
• 1. 数学软件的使用与程序设计
主要工具为MATLAB/Octave等数学软件
• 2. 数学基础应用实验
微积分实验,线性代数实验
• 3. 数学方法与模型实验
包含非线性方程求根,曲线拟合,微分方程实验,数值积分,最优化 模型实验,随机模拟实验等
邓良剑授课
二、数学实验课程内容
邓良剑授课
三、如何学习数学实验
• 1. 熟悉MATLAB程序设计语言的语法,常用函数;
• 2. 熟悉结构化程序设计方法
• 1)自顶向下,2)逐步细化,3)模块化设计
• 4)程序结构: 顺序结构,分支结构,循环结构
• 3. 逐步加深对算法的认识
• 编程习惯:先设计算法,后编程实现
• 算法的输入、输出:明确已知,未知
• 算法描述的结构:顺序结构,分支结构,循环结构
• 算法描述的规范:流程图,自然语言,伪代码
邓良剑授课
三、如何学习数学实验
• 4. 在学习与应用数学过程中,多观察分析、培养探究意识
• 验证实验,应用实验,探究实验
• 5. 了解一些典型数学模型,逐步认识数学建模过程
• 6. 多动手实践!!!
邓良剑授课
三、实验平台:MATLAB/Octave软件
• 认识 MATLAB界面
• 两个软件界面有相似之处, Octave界面:
命令窗口:
输入程序并 运行。
编辑窗口:编辑程序,运行程序,调试程序等操作。
邓良剑授课
在命令窗口输入程序语句
示例:
构造一个3行2列的随机矩阵赋值给变量a。
输入程序语句:
a=rand(3,2)
邓良剑授课
在命令窗口运行程序语句
按回车键运行程序,
在命令窗口查看结果。
邓良剑授课
MATLAB/Octave界面:编辑器窗口
邓良剑授课
MATLAB/Octave界面:编辑器窗口
在编辑器窗口:编写程序,
运行程序,调试程序,打
开、保存程序文件。
邓良剑授课
MATLAB/Octave界面:查看编辑器窗口运行结果
在编辑器窗口按F5执行程序
通过“命令窗口”查看结果
邓良剑授课
两个简单例子
邓良剑授课
例子1:限定区域的随机投点实验
• 问题:请在矩形区域U={(x,y)| 0≤x ≤e, 0 ≤y ≤1}中随机产生10000个点的 坐标,仅绘制落在区域D内的点。D为曲线y=x/e, y=lnx, y=0所围区域。
• 分析:
• 1. 三条曲线围成一个曲边三角形, 曲线 y=x/e, y=lnx的交点P坐标(e,1);
• 2. 区域D包含在矩形区域U={(x,y)| 0≤x ≤e, 0 ≤y ≤1}中。
D U
e
P(e,1)
y=x/e y=lnx y=1
y=0
邓良剑授课
• 实验基础:
• 1. 产生均匀投点坐标: 设r为[0,1]区间均匀分布随机数.
令 x= ar,则ar为[0,a]区间上均匀分布随机数.
• rand为产生0-1区间均匀分布随机数的函数.
• rand(1,N)表示产生1行N列的一个随机数向量.
• exp(1)返回自然常数e.
• 2. 绘制曲线可用eplot('fx',[xmin xmax ymin ymax])函数;
• 3. 绘制投点可用plot(x,y, '.').
例子1:限定区域的随机投点实验
邓良剑授课
• 实验步骤:
• 1. 绘制区域D的左右边界曲线: 左边界: y=x/e, 右边界y=lnx(即x=ey ).
D={(x,y)| 0 ≤y ≤1, ey ≤x ≤ey } C=exp(1); ezplot('x/exp(1)',[0 C 0 1]), hold on
ezplot('log(x)', [0 C 0 1])
例子1:限定区域的随机投点实验
邓良剑授课
• 实验步骤:
• 2. 在区域U中随机投点: U={(x,y)| 0≤x ≤e, 0 ≤y ≤1}
N=10000; x= C*rand(1,N); y= rand(1,N);
• 3. 由查找函数find找出D中点的在数组x, y中的下标,然后绘制这些投点.
idx=find(x>=C*y & x<=C.^y); %找到落在区域D中点在数组x,y的下标
例子1:限定区域的随机投点实验
D={(x,y)| 0 ≤y ≤1, ey ≤x ≤ey }
邓良剑授课
• 程序实现:
close all
C =exp(1); %调用函数exp构造自然常数2.718...
ezplot('x/exp(1)',[0 C 0 1]), hold on ezplot('log(x)', [0 C 0 1])
axis([0 C 0 1])
N=10000; % 随机投点个数 x= C*rand(1,N); y= rand(1,N);
idx=find(x>=C*y & x<=C.^y); %找到落在区域D中点在数组x,y的下标 plot(x(idx),y(idx),'.') %调用plot绘制投点效果图
1 2 3 4 5 6 7 8 9
例子 1:限定区域的随机投点实验
邓良剑授课
• 通过实验,我们还可以 统计点落在D中的个数,
从而计算点落在区域D 中的频率p。
• 思考:如何利用本实验 估算区域D的面积。
例子 1:限定区域的随机投点实验
邓良剑授课
动⼿实践1 (5min):
• 问题:请在矩形区域U={(x,y)| 0≤x ≤e, 0 ≤y ≤1}中随机产生10000个点的坐标,1) 仅 绘制落在区域D内的点, D为曲线y=x/e, x=e, y=0所围区域; 2) 并估计区域D的面积。
• 分析:
• 1. 三条曲线围成一个曲边三角形, 曲线 y=x/e, y=e的交点P坐标(e,1);
• 2. 区域D包含在矩形区域U={(x,y)| 0≤x ≤e, 0 ≤y ≤1}中。
e
P(e,1)
D U y=x/e
y=1
y=0
x=e
邓良剑授课
例子2:摆线动画实验 (自学-分析-编程)
• 摆线及其方程:
一个圆在直线上滚动而不滑动时,圆周上的一点M所绘出的曲线称为 摆线,r为圆的半径,t为转动角度. 已知摆线的参数方程如下:
当t从0变到2 π时,点M的轨迹称为摆线的一拱.
î í ì
-
=
-
=
) cos 1
(
) sin (
t r
y
t t
r x
l 实验任务:请用动画表示摆线一拱的构造过程(0 ≤ t ≤ 2
π)。
邓良剑授课
l 分析:
l 1. 为了用动画表示摆线构造过程,需要将t的取值区间[0, 2
π
]离散化,绘制当t=T时的如下图像:
– 点M随转动角度t从0变化到T的运动轨迹;
– 正在运动的圆
例子2:摆线动画实验
邓良剑授课
•
2. 绘制在t=T时圆:需要先确定给定t时圆的方程.设圆的转动角度为t时,点M坐标为(X,Y),设运动圆的圆心坐标(x0, y0).
可知x0=X+a sint, y0=r,得圆的方程
l 分析:
. )
( )
( x - x
0 2+ y - r
2= r
2î í ì
+
=
+
=
q q sin
0
cos r r
y
r x
也可表示出该圆的参数方程:
x
例子 2:摆线动画实验
邓良剑授课
程序实现:
r=10; t=linspace(0,2*pi,100);%转动角度离散化
X=r*(t-sin(t)); Y=r*(1-cos(t));%计算摆线一拱离散点的坐标
for
k=1:length(t)hold off
plot(X(1:k),Y(1:k),'.','linewidth',3)%绘制摆线上离散点 x0 = X(k)+r*sin(t(k)); y0=r; % 圆心
x1 = x0+ r*cos(t); y1=y0+r*sin(t); % 圆的坐标(x1,y1) hold on, plot(x1,y1,'linewidth',3) % 绘制圆
axis([-r, (2*pi*r+r), 0, 2*r]), axis equal
set(gca,'fontsize',14,'linewidth',3), pause(0.05),
end
1 2 3 4 5 6 7 8 9 10 11
例子2:摆线动画实验
邓良剑授课