Matlab的实际应用设计经典.docx
- 文档编号:26363140
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:50
- 大小:480.31KB
Matlab的实际应用设计经典.docx
《Matlab的实际应用设计经典.docx》由会员分享,可在线阅读,更多相关《Matlab的实际应用设计经典.docx(50页珍藏版)》请在冰豆网上搜索。
Matlab的实际应用设计经典
Matlab的实际应用设计(经典)
课
程
设
计
学院:
数学学院
学号:
20106496
姓名:
黄星奕
辅导老师:
陈晓红殷明
二、思考与实验
试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。
三、问题分析
用递推算法。
首先分析椰子数目的变化规律,设最初的椰子数为p0,即第一个水手所处理之前的椰子数,用p1、p2、p3、p4、p5分别表示五个水手对椰子动了手脚以后剩余的椰子数目,则根据问题有
再用x表示最后每个水手平分得到的椰子数,于是有
所以
p5=5x+1
利用逆向递推的方法,有
但由于椰子数为一正整数,用任意的x作为初值递推出的p0数据不一定是合适的。
在实验中可以用for循环语句结合break语句来寻找合适的x和p0,对任意的x递推计算出p0,当计算结果为正整数时,结果正确,否则选取另外的 x再次重新递推计算,直到计算出的结果p0为正整数为止。
四、源程序
n=input('inputn:
');
forx=1:
n
p=5*x+1;
fork=1:
5
p=5*p/4+1;
end
ifp==fix(p)
break;
end
end
disp([x,p]);
五、实验结果
六、结果分析
从理论上分析,由于
所以
要使得最初的椰子数p0为整数,必须取(x+1)为45(=1024)的倍数,一种简单的处理可取x=1023。
1.2
一、问题描述
1.2设,
(1)从
尽可能精确的近似值出发,利用递推公式:
计算机从
到
的近似值;
(2)从
较粗糙的估计值出发,用递推公式:
计算从
到
的近似值;
(3)分析所得结果的可靠性以及出现这种现象的原因。
二、问题分析
有种方法可以尽可能地精确的计算
的值,我们可以根据积分计算得
=ln1.2=0.1823,然后可以编程求解
到
的近似值。
三、源程序及运行结果
(1)fun=inline('1./(5+x)','x')
z=quad(fun,0,1)
forn=1:
20
z=-5*z+1/n
end
z=0.0188
z=0.0169
z=0.0155
z=0.0135
z=0.0156
z=-0.0011
z=0.0770
z=-0.3186
z=1.6554
z=-8.2179
z=41.1453
z=-205.6737
z=1.0284e+003(省略前7项)
(2)fun=inline('(x.^30)./(5+x)','x')
z=quad(fun,0,1)
forn=30:
-1:
2
z=-0.2*z+1/(5*n)
end
z=0.0130
z=0.0141
z=0.0154
z=0.0169
z=0.0188
z=0.0212
z=0.0243
z=0.0285
z=0.0343
z=0.0431
z=0.0580
z=0.0884
(限于篇幅省略前18项)
四、结果分析
第二种算法较为可靠,原因是迭代时系数较小,第一种方法虽然
较精确,但
后面的迭代系数绝对值为5,将误差逐步放大,所以最后结果反而不精确了。
1.3绘制Koch分形曲线
一、问题描述
1.3绘制Koch分形曲线:
从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5个结点的新的图形(图1);在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代替,再次形成新的图形(图2),这时,图形中共有17个结点。
这种迭代继续进行下去可以形成Koch分形曲线。
在迭代过程中,图形中的结点将越来越多,而曲线最终显示细节的多少取决于所进行的迭代次数和显示系统的分辨率。
Koch分形曲线的绘制与算法设计和计算机实现相关。
二、思考与实验:
(1)考虑在Koch分形曲线的形成过程中结点数目的变化规律。
设第k次迭代产生结点数为
,第
迭代产生结点数为
,试写出
和
之间的递推关系式;
(2)参考问题分析中的算法,考虑图1到图2的过程,即由第一次迭代的5个结点的结点坐标数组,产生第二次迭代的17个结点的结点坐标数组的算法;
(3)考虑由第k次迭代的
个结点的结点坐标数组,产生第
次迭代的
个结点的结点坐标数组的算法;
(4)设计算法用计算机绘制出如下的Koch分形曲线(图3)。
图1图2
图3
三、问题分析
①考虑由直线段(2个点)产生第一个图形(5个点)的过程,设
和
分别为原始直线段的两个端点。
现在需要在直线段的中间依次插入三个点
产生第一次迭代的图形(图1)。
显然,
位于
点右端直线段的三分之一处,
点绕
旋转60度(逆时针方向)而得到的,故可以处理为向量
经正交变换而得到向量
,形成算法如下:
(1)
;
(2)
;
(3)
;
在算法的第三步中,A为正交矩阵。
;
这一算法将根据初始数据(
和
点的坐标),产生图1中5个结点的坐标。
这5个结点的坐标数组,组成一个5×2矩阵。
这一矩阵的第一行为为
的坐标,第二行为
的坐标,第二行为
的坐标……第五行为
的坐标。
矩阵的第一列元素分别为5个结点的x坐标,第二列元素分别为5个结点的y坐标。
②在Koch分形曲线的形成过程中结点数目的变化规律。
设第k次迭代产生结点数为nk,第k+1次迭代产生结点数为nk+1,nk和nk+1之间的递推关系式如下
③由第k次迭代的nk个结点的结点坐标数组,产生第k+1次迭代的nk+1个结点的结点坐标数组的算法可参考上面两点到五点的算法进行设计。
四、源程序
p=[00;100];%给出初始数据两个点的坐标
a=[cos(pi/3)-sin(pi/3);sin(pi/3)cos(pi/3)];
%设置用于正交变化的正交矩阵
fork=1:
5%开始执行第一到第五次迭代
n=max(size(p));d=diff(p)/3;
%统计前一轮迭代的结点数及形成结点向量
q=p(1:
n-1,:
);p(5:
4:
4*n-3,:
)=p(2:
n,:
);
%保护前一轮的结点坐标数组
p(2:
4:
4*n-6,:
)=q+d;%插入第一组新结点
p(3:
4:
4*n-5,:
)=p(2:
4:
4*n-6,:
)+d*a';
%用正交变换计算第二组新结点
p(4:
4:
4*n-4,:
)=q+2*d;%插入第三组新结点
end
plot(p(:
1),p(:
2))%根据结点坐标绘图
五、实验结果
实验二
2.1用高斯消元法的消元过程作矩阵分解。
一、問題描述
2.1用高斯消元法的消元过程作矩阵分解。
设
消元过程可将矩阵A化为上三角矩阵U,试求出消元过程所用的乘数
、
、
并以如下格式构造下三角矩阵L和上三角矩阵U
验证:
矩阵A可以分解为L和U的乘积,即A=LU。
二、源程序及運行結果
%将矩阵A分解为L和U的乘积,即A=LU。
a=input('a=');
u=zeros(3,3);l=eye(3,3);
fori=1:
3
u(1,i)=a(1,i);
end
forj=2:
3
l(j,1)=a(j,1)/u(1,1);
end
fork=2:
3
u(k,k:
3)=a(k,k:
3)-l(k,1:
k-1)*u(1:
k-1,k:
3);
l(k+1:
3,k)=(a(k+1:
3,k)-l(k+1:
3,1:
k-1)*u(1:
k-1,k))/u(k,k);
end
disp(l);
disp(u);
实验结果
a=[20,2,3;1,8,1;2,-3,15]
1.000000
0.05001.00000
0.1000-0.40511.0000
20.00002.00003.0000
07.90000.8500
0015.044311
2.3验证希尔伯特矩阵的病态性
一、问题描述
2.3验证希尔伯特矩阵的病态性:
对于三阶矩阵
取右端向量
,验证:
(1)向量
是方程组
的准确解;
(2)取右端向量b的三位有效数字得
,求方程组的准确解
,并与X的数据
作比较。
说明矩阵的病态性。
二、源程序及运行结果
(1)H=[11/21/3;1/21/31/4;1/31/41/5]
b=[11/613/1247/60]'
H\b
ans=
1.0000
1.0000
1.0000
所以
是方程组
的准确解
(2)b=[1.831.080.783]'
b=
1.8300
1.0800
0.7830
H\b
ans=
1.0800
0.5400
1.4400
所算得的解误差较大,所以希尔伯特矩阵呈现病态性
实验三
3.1用泰勒级数的有限项逼近正弦函数
一、问题描述
3.1用泰勒级数的有限项逼近正弦函数
用计算机绘出上面四个函数的图形。
二、源程序
图一
x=0:
0.1:
pi/2;
y1=x;
y2=x-x.^3/6;
y3=x-x.^3/6+x.^5/120;
plot(x,y1,x,y2,x,y3)
legend('y=x','y=x-x^3/6','y=x-x^3/6+x^5/120')
图二
x=0:
0.1:
pi;
y4=sin(x);
plot(x,y4);
legend('y=sin(x)')
三、实验结果
图一
图二
3.2绘制飞机的降落曲线
一、问题描述
3.2绘制飞机的降落曲线
一架飞机飞临北京国际机场上空时,其水平速度为540km/h,飞行高度为1000m。
飞机从距机场指挥塔的横向距离12000m处开始降落。
根据经验,一架水平飞行的飞机其降落曲线是一条三次曲线。
建立直角坐标系,设飞机着陆点为原点O,降落的飞机为动点
,则
表示飞机距指挥塔的距离,
表示飞机的飞行高度,降落曲线为
该函数满足条件:
(1)试利用
满足的条件确定三次多项式中的四个系数;
(2)用所求出的三次多项式函数绘制出飞机降落曲线。
二、问题分析
由题设得a(0)=a
(1)=0
a
(2)=1/48000
a(3)=-1/(72000*12000)
三、源程序
fplot(inline('(1/4800)*x.^2-1/(72000*12000)*x^3'),[0,12000])
四、实验结果
3.3追赶曲线的计算机模拟
一、问题描述
3.3追赶曲线的计算机模拟:
问题描述:
欧洲文艺复兴时期的著名人物达•芬奇曾经提出一个有趣的“狼追兔子”问题,当一只兔子正在它的洞穴南面60码处觅食时,一只饿狼出现在兔子正东的100码处。
兔子急忙奔向自己的洞穴,狼立即以快于兔子一倍的速度紧追兔子不放。
兔子一旦回到洞穴便逃脱厄,问狼是否会追赶上兔子?
这一问题的研究方法可以推广到如鱼雷追击潜艇、地对空导弹击飞机等问题上去。
在对真实系统做实验时,可能时间太长、费用太高、危险太大、甚至很难进行。
计算机模拟是用计算机模仿实物系统,对系统的结构和行为进行动态演示,以评价或预测系统的行为效果。
根据模拟对象的不同特点,分为确定性模拟和随机性模拟两大类。
模拟通常所用的是时间步长法,即按照时间流逝的顺序一步一步对所研究的系统进行动态演示,以提取所需要的数据。
二、思考与实验
(1)设兔子奔跑的速度为
,则狼运动的速度为
。
建立平面直角坐标系,若当
时刻,兔子位于点
处,狼位于点
处。
试根据
,
的坐标确定一个单位向量
描述狼在
时段内的运动方向。
(2)根据狼的运动方向和速度推导
到
的坐标的具体表达式;
(3)用计算机绘制追赶曲线的图形(包括静态和动态的图形)。
三、问题分析
首先计算狼的初始位置到兔子洞穴的直线距离:
由于狼奔跑的速度是兔子速度的两倍,兔子跑60码的时间狼可以跑120码。
如果狼沿直线奔向兔窝,应该是可以追上兔子的。
但是,有人推导出狼在追赶兔子过程中的运动曲线为
根据曲线方程,当
时,
。
也就是说,在没有兔窝的情况下兔子一直往北跑,在跑到大约66码处将被狼追上。
由此可知,在有兔窝时狼是追赶不上兔子的。
用计算机模拟的方法也可以得到同样的结论。
取时间步长为1s,随时间步长的增加,考虑这一系统中的各个元素(狼和兔子)所处的位置变化规律,用计算机作出模拟。
最后,根据第60s时狼所在的位置的坐标,判断狼是否能追上兔子。
设兔子所在位置为动点Q,狼所在位置为动点P。
在时刻tk,两个动点的坐标分别为:
Q(uk,vk),P(xk,yk),动点P的轨迹就是追赶曲线。
在tk时刻到tk+1时刻这个时段,P点的运动方向可以用单位向量描述:
显然,uk=0,vk=tk。
四、源程序
设在初始时刻兔子和狼的位置分别为
Q(0,0),P(100,0)
初始时刻的狼、兔距离为100码,我们不妨规定当狼、兔距离小于0.5码时,兔子被狼追上,结束追赶。
下面MATLAB程序可计算并绘制追赶曲线。
x
(1)=100;y
(1)=0;u
(1)=0;v
(1)=0;
t=1;d=100;e=[-10];
whiled>0.5
x(t+1)=x(t)+2*e
(1);
y(t+1)=y(t)+2*e
(2);
t=t+1;u(t)=0;v(t)=t;
e=[-x(t)t-y(t)];
d=sqrt(e
(1)^2+e
(2)^2);
e=e/d;
end
plot(u,v,'o',x,y)
五、实验结果
实验四
4.1线性拟合
一、问题描述
曾任英特尔公司董事长的摩尔先生早在1965年时,就观察到一件很有趣的现象:
集成电路上可容纳的零件数量,每隔一年半左右就会增长一倍,性能也提升一倍。
因而发表论文,提出了大大有名的摩尔定律(Moore’sLaw),并预测未来这种增长仍会延续下去。
下面数据中,第二行数据为晶片上晶体数目在不同年代与1959年时数目比较的倍数。
这些数据是推出摩尔定律的依据:
年代
1959
1962
1963
1964
1965
增加倍数
1
3
4
5
6
试从表中数据出发,推导线性拟合的函数表达式。
二、源程序
x=[0,3,4,5,6];
y=[1,3,4,5,6];
p=polyfit(x,y,1)
p=
0.83020.8113
xi=0:
0.2:
6;
yi=polyval(p,xi);
plot(x,y,'o',xi,yi);
五、实验结果
4.2
问题描述:
参考算法4.2设计绘制Bezier曲线的程序,选取四个点的坐标数据作为控制点绘制飞机机翼剖面图草图的下半部分图形;结合例4.4中上半部分图形绘出完整的机翼草图。
最后写出机翼剖面图曲线上20个点处的坐标数据。
源代码及结果:
p=[50-50;60-60;100-80;150-60;200-40];
n=size(p,1);
t=linspace(0,1)';
b=0;
fork=0:
n-1
tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k);
b=b+tmp*p(k+1,:
);
end
plot(p(:
1),p(:
2),'.:
',b(:
1),b(:
2))
4.3神经元模型用于蠓的分类识别
一、问题描述
问题描述:
生物学字试图对两类蠓虫(Af与Apf)进行鉴别,依据的资料是蠓虫的触角和翅膀的长度,已经测得9只Af和6只Apf的数据(触角长度用x表示,翅膀长度用y表示)
Af数据
x
1.24
1.36
1.38
1.38
1.38
1.40
1.48
1.54
1.56
Y
1.27
1.74
1.64
1.82
1.90
1.70
1.82
1.82
2.08
Apf数据
x
1.14
1.18
1.20
1.26
1.28
1.30
Y
1.78
1.96
1.86
2.00
2.00
1.96
现需要解决三个问题:
(1)如何凭借原始资料(15对数据,被称之为学习样本)制定一种方法,正确区分两类蠓虫;
(2)依据确立的方法,对题目提供的三个样本:
(1.24,1.80),(1.28,1.84),(1.40,2.04)加以识别;(3)设Af是宝贵的传粉益虫,Apf是某种疾病的载体,是否应该修改分类方法。
二、问题分析
问题分析:
首先画出15对数据的散点图,其中,Af用*标记,Apf用×标记。
观察图形,可以发现,Af的点集中在图中右下角,而Apf的点集中在图中左上角。
应该存在一条直线L位于两类点之间,作为Af和Apf分界线,这条直线L的确定应依据问题所给的数据,即学习样本。
设这条直线的方程为
对于平面上任意一点P(x,y),如果该点在直线上,将其坐标代入直线方程则使方程成为恒等式,即使方程左端恒为零;如果点
不在直线上,将其坐标代入直线方程,则方程左端不为零。
由于Af和Apf的散点都不在所求的直线上,故将问题所提供的数据代入直线方程左端应该得到表达式的值大于零或者小于零两种不同的结果。
这需要建立一个判别系统,引入判别函数
当
属于Af类时,
,否则
。
为了对判别系统引入学习机制,在学习过程中将两种不同的状态,以“1”和“-1”表示。
当
属于Af类时,
,否则
。
取
于是由所给数据形成约束条件,这是关于判别函数中的三个待定系数
的线性方程组:
这是包括三个未知数共15个方程的超定方程组,可以求方程组的最小二乘解。
三、思考与实验:
(1)根据上面分析写出对应的正规方程组并求解。
(2)确定分类边界直线的方程。
由所给数据用判别函数判别三个新蠓虫的类属,即当
时,判为Af类:
当
时,判为Apf类。
四、源程序
xy=[1.241.27;1.361.74;1.381.64;1.381.82;1.381.90;
1.401.70;1.481.82;1.541.82;1.562.08;1.141.78;
1.181.96;1.201.86;1.262.00;1.282.00;1.301.96];
%学习样本数据
z=[1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1;-1];
x=xy(:
1);y=xy(:
2);x1=x(1:
9);y1=y(1:
9);x2=x(10:
15);y2=y(10:
15);
plot(x1,y1,'*',x2,y2,'x'),pause%绘制原始数据散点图
X=[xyones(x)];
A=X'*X;B=X'*z;w=A\B;%求解正规方程组
a=-w
(1)/w
(2);b=-w(3)/w
(2);
t=1.10:
0.02:
1.60;u=a*x+b;%确定分类直线数据
plot(x1,y1,'*',x2,y2,'x',t,u)%在散点图中画分类直线
五,实验结果
六、结果分析
运行上面程序可求出超定方程组的最小二乘解并画出分类边界曲线。
为了由所给数据用判别函数判别三个新蠓虫的类属,即当
时,判为Af类;当
时,判为Apf类。
运行上面程序后,键入下面命令
xx=[1.241.801;1.281.841;1.402.041];
xx*w
plot(t,u,xx(:
1),xx(:
2),'o')
求得
ans=-0.3877
-0.2384
-0.0235
这说明,所给数据反映出三个蠓虫均属于Apf类。
实验五
5.1用几种不同的方法求积分
的值。
一、问题描述
5.1用几种不同的方法求积分
的值。
(1)牛顿-莱布尼茨公式;
(2)梯形公式;(3)辛卜生公式;(4)复合梯形公式。
。
二、源程序及运行结果
fun=inline('4./(1+x.^2)','x')
fun=
Inlinefunction:
fun(x)=4./(1+x.^2)
(1)牛顿-莱布尼茨公式
symsx;
z1=int(4./(1+x.^2),x,0,1)
z1=pi
z1=
pi
z1=
3.1416
(2)梯形公式
z2=1/2*[fun(0)+fun
(1)]
z2=
3
(3)辛卜生公式
z3=1/6*[fun(0)+4*fun(0.5)+fun
(1)]
z3=
3.1333
(4)复合梯形公式
z4=0.05*[fun(0)+2*fun(0.1)+2*fun(0.2)+2*fun(0.3)+2*fun(0.4)+2*fun(0.5)+2*fun(0.6)+2*fun(0.7)+2*fun(0.8)+2*fun(0.9)+fun
(1)]
z4=
3.1399
或者
clear;x=0:
0.1:
1;y=4./(1+x.^2);trapz(x,y)
ans=
3.1399
5.2设计算法计算30个不同的概率值
一、问题描述
5.2设X为标准正态随机变量,即X~N(0,1)。
现分别取
,试设计算法计算30个不同的概率值;
,并将计算结果与概率论教科书中的标准正态分布函数表作比较。
(提示:
二、源程序
fun=inline('exp(-x.^2/2)/sqrt(2*pi)');
a=0;h=0.1;
fork=1:
30
a=a+h;
p=quad(fun,a,4)
end
三、实验结果
p=
0.4601
p=
0.4207
p=
0.3821
p=
0.3445
p=
0.3085
p=
0.2742
p=
0.2419
p=
0.2118
p=
0.1840
p=
0.1586
5.3设某城市男子的身高X~N(170,36)(单位:
cm),应如何选择公共汽车门的高度H使男子与车门碰头的机会小于1%。
问题分析:
由题设男子身高数据服从平均值为170(cm),方差为6(cm)的正态分布,其分布密度函数为
按正态分布的分布规律(
原则),这个城市的男子身高超过188(cm)的人数极少。
故可以对H=188,187,186,…求出概率
的值,观察使概率不超过1%的H,以确定公共汽车门应该取的高度。
概念值的计算实际上是求定积分
(1)选用一种数值求积公式或用数学软件分别计算出H=180、181、…、188时定积分近似值。
(2)根据上面计算的积分值,按题目要求确定公共汽车门的高度取值(答案184cm)。
如果将汽车门的高度取180cm,是否满足大多数市民的利益?
(3)用计算机模拟的方法来检验你的结论,计算机产生10000个正态随机数(它们服从均值为1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 实际 应用 设计 经典
