实验三 飞机如何定价1(数学建模)
实验三 飞机如何定价——方程求解
一、实验目的及意义
[1] 复习求解方程及方程组的基本原理和方法; [2] 掌握迭代算法;
[3] 熟悉MATLAB 软件编程环境;掌握MATLAB 编程语句(特别是循环、条件、控制等语句) ; [4] 通过范例展现求解实际问题的初步建模过程;
通过该实验的学习,复习和归纳方程求解或方程组求解的各种数值解法(简单迭代法、二分法、牛顿法、割线法等),初步了解数学建模过程。这对于学生深入理解数学概念,掌握数学的思维方法,熟悉处理大量的工程计算问题的方法具有十分重要的意义。
二、实验内容
1.方程求解和方程组的各种数值解法练习
2.直接使用MATLAB 命令对方程和方程组进行求解练习 3.针对实际问题,试建立数学模型,并求解。
三、实验步骤
1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据各种数值解法步骤编写M 文件 3.保存文件并运行;
4.观察运行结果(数值或图形) ;
5.根据观察到的结果写出实验报告,并浅谈学习心得体会。
四、实验要求与任务
基础实验
1. 用图形放大法求解方程 x sin(x ) = 1. 并观察该方程有多少个根。
x=-100:0.01:100;y=-100:0.01:100;y=x.*sin(x);plot(x,y);hold on,line([-100,100],[1,1])
看出方程应有无穷多解,选定在x=[-10,10] 1.
图(1) 图(2)
图(3) 图(4)
易看出,其中四个根分别在[-9.35,-9.30][-6.45,-6.40],[-2.78,-2.76],[-1.1,-1.12] 有对称性可得其他四根分别在[9.35,9.30][6.45,6.40],[2.78,2.76],[1.1,1.12]之间
53
2.将方程x +5x - 2x + 1 = 0 改写成各种等价的形式进行迭代,观察迭代是否收敛,并给出解释。
程序:x=1;y=1;z=1;
for k=1:100
x=(x.^5+5*x.^3+1)/2; y=(-5*y.^3+2*y-1).^(1/5); z=-5*(1/z)+2*(1/z.^3)-1/(z.^4);
end x,y,z 结果如下
x =Inf;y =2.0162 - 0.8223i;z =1.8933
3.求解下列方程组
-x ⎧⎪2x 1-x 2=e 1
(1)⎨ -x 2
⎪⎩-x 1+2x 2=e
222⎧x -5x +7x 123=-12
⎪
(2) ⎨3x 1x 2+x 1x 3-11x 1=0
⎪2x x +40x =0
1⎩23
直接使用MATLAB 命令:solve()和fsolve()对方程组求解。 方程(1)求解 solve() 求解
[x1,x2]=solve('2*x1-x2-exp(-x1)=0','-x1+2*x2-exp(-x2)')
x1 =0.[***********][1**********]036 x2 =0.[***********][1**********]036 fsolve()求解
M 文件:function eq =fun (x )
eq(1)=2*x(1)-x(2)-exp(-x(1)); eq(2)=-x(1)+2*x(2)-exp(-x(2)); end
运行x=fsolve('fun',[1,1]) x =
0.5671 0.5671 方程(2)求解
[x1,x2,x3]=solve('x1^2-5*x2^2+7*x3^2+12=0','3*x1*x2+x1*x3-11*x1=0','2*x2*x3+40*x1=0' ,‘double x1’, ‘double x2’, ‘double x3’); ans =
1.0e+002 *
0.0100 0 0 -0.0031 0 0 -3.8701 - 0.3270i -3.8701 + 0.3270i ans =
5.0000 1.5492 -1.5492 2.9579 0 0 -0.3123 +50.8065i -0.3123 -50.8065i
ans =
1.0e+002 *
-0.0400 0 0 0.0213 0 + 0.0131i 0 - 0.0131i 0.1194 - 1.5242i 0.1194 + 1.5242i
function eq = qiujie(x)
eq(1)=x(1)^2-5*x(2)^2+7*x(3)^2+12; eq(2)=3*x(1)*x(2)+x(1)*x(3)-11*x(1); eq(3)=2*x(2)*x(3)+40*x(1); end ans =
0.0000 1.5492 0.0000
4.编写用二分法求方程根的函数M 文件。 用二分法求解方程 x -2x +12 先建立方程的M 文件f(x)
function fun = f(x) fun=x^3-2*x^2+12; end
二分法建立M 文件erfen a=-20;b=20; for k=1:1000
3
2
h=(a+b)/2; if f(h)*f(a)
elseif f(h)*f(a)>0 a=h; else break end end h
输入 erfen 得结果 h =-1.7814
应用实验
1. 炮弹发射角的问题
炮弹发射视为斜抛运动,已知初始速度为200 m/s,问要击中水平距离360m 、垂直距离160m 的目标,当忽略空气阻力时,发射角应多大?此时炮弹的运行轨迹如何?试进行动态模拟。
解:
不考虑空气阻力,炮弹在水平分量方向做匀速直线运动,在竖直分量方向做竖直上抛运动。设炮弹与水平面夹角为a, 经时间t 击中目标,则可列:
x =200cos(a ) t ……………………………①
y =200sin(a ) t -5t 2………………………②
用MATLAB 软件编程求解
[a,t]=solve('t*200*cos(a)=360', 't*200*sin(a)-5*t^2=160'); double(a),double(t)
输出结果: ans =
1.5248 0.4642 -1.6168 -2.6774 ans =
39.1401 2.0130 -39.1401 -2.0130
又因为发射角a 的取值应在[0,做图
π
]之间,可知发射角度应为0.4642和1.5248 2
t=linspace(0,40,1000);x=t*200*cos(1.5248); y=t*200*sin(1.5248)-5*t.^2; plot(x,y)
line([0,360],[160,160])
t=linspace(0,2,1000);x=t*200*cos(0.4642);y=t*200*sin(0.4642)-5*t.^2; plot(x,y) line([0,360],[160,160])
进一步思考:如果要考虑水平方向的阻力,且设阻力与(水平方向)速度成正比,系数为 0.1(1/s),结果又如何?此时炮弹的运行轨迹如何?试进行动态模拟。
用微分法研究水平方向运动状况:设t 时刻水平方向加速度为a 由于a =0.1v
dv
=0.1v dt 0.1t
可得v =e
1
dv =0.1dt v
则水平方向有x =200cos(a ) e -0.1t t
如上建立方程组用软件求解
[a,t]=solve('200*cos(a)*exp(-0.1*t)*t=360', 't*200*sin(a)-5*t^2=160' );
double(a),double(t)
ans = 0.3923 -228.8108 ans = 2.5017 -1.7471
则应选择发射角为0.3923 画图如下