工程数值计算matlab实验报告第三次实验.docx
《工程数值计算matlab实验报告第三次实验.docx》由会员分享,可在线阅读,更多相关《工程数值计算matlab实验报告第三次实验.docx(13页珍藏版)》请在冰豆网上搜索。
工程数值计算matlab实验报告第三次实验
《工程数值计算》上机实验报告(第三次)
学生姓名****班级****学号*****
任课教师*****上机时间2019年11月7日,报告完成2019年11月8日
1.实验目的:
简述实验任务和目的
任务3.1:
采用以下两种方法求解线性方程组
(1)逆矩阵法
(2)数值迭代法
任务3.2:
非线性方程(组)的求根
(1)求
的根
(2))伞兵降落速度方程为
,其中g=9.81m/s^2,m=68kg,若要下落t=10s时速度达到v=40m/s请问阻力系数c是多少?
(3)求方程
的解
任务3.3:
微分方程组的求解
已知大气动力学模型的洛伦兹方程
,其中x(t)为大气流动的强度,y(t)和z(t)为水平和垂直方向的温度变化。
如果
=10,b=2.666667,r=28,初始条件为x(0)=6,y(0)=z(0)=5,请你:
(1)计算t=0~20范围内x(t)、y(t)和z(t)的数值解。
(2)分别画出y(t)和z(t)随时间t的变化曲线y–t和z–t。
(3)分别画出x随y和x随z变化的曲线(相平面图):
x–y和x-z。
(4)轻微改变初始条件x(0)=6.01,y(0)=z(0)=5,重复以上过程,画出相平面图(x–y和x–z),并与以上结果进行比较。
2.计算方法:
针对实验任务,结合课堂内容,说明解决方法,如:
采用何种
理论,列出相关公式,说明计算步骤,写出程序框图等
任务3.1两种方法求解线性方程组
(1)逆矩阵法
计算原理:
对于
或Ax=b
解为
或
流程图:
(2)数值迭代法
对于线性方程组
将对角线上各项留在左边,其余移到右边,方程写为
写成迭代形式
经过多次迭代计算逐渐逼近真值。
流程图:
任务3.2:
非线性方程(组)的求根
(1)
计算原理:
roots(P)函数将P视为一个具有n+1个元素的向量,代表n×n矩阵A的n次特征多项式。
多项式的根通过计算伴随矩阵A的特征值得出。
已知
构造矩阵
设
(x为该方程的解)
以3项来说明
原式:
联立以上3个方程得:
因此,只要解出λ(特征根)的值,就得到
的解。
从而,我们把解方程的根转化成了特征根的求解。
流程图:
(2)定义自定义函数,调用matlab的fslove函数求解方程。
(3)调用matlab的slove函数求解方程。
任务3.3:
微分方程组的求解
计算原理:
欧拉公式
(初值条件
)
流程图:
3.程序设计:
根据前面提到的计算方法编写程序;写出程序代码,并结合计
算方法对程序中关键步骤进行必要的文字说明
任务3.1两种方法求解线性方程组
%逆矩阵法求解方程组
clear;
A=[223;477;-245];%(系数矩阵)
B=[3;1;-7];%(列向量)
C=inv(A)*B%(求解)
%数值迭代法求解
n=length(B);
N=20;
eb=1e-3;%(迭代收敛精度)
%给定迭代初始点
fori=1:
n
x(1,i)=0;
end
fori=1:
N
i
x(i+1,1)=(B
(1)-A(1,2)*x(i,2)-A(1,3)*x(i,3))/A(1,1);%(迭代格式计算)
x(i+1,2)=(B
(2)-A(2,1)*x(i+1,1)-A(2,3)*x(i,3))/A(2,2);%(迭代格式计算)
x(i+1,3)=(B(3)-A(3,1)*x(i+1,1)-A(3,2)*x(i+1,2))/A(3,3);%(迭代格式计算)
e(i)=abs(x(i+1,1)-x(i,1));
ife(i)break%(跳出循环)
end
end
x
任务3.2:
非线性方程(组)的求根
(1)
%非线性方程组求根
(1)
clear;
c=[2,-4,3,-8,9];%(方程系数)
x=roots(c)
(2)
%定义函数
functionF=mf(x)
globalmgtv
F=m*g/x*(1-exp(-x/m*t))-v;
%调用函数
globalmgtv
m=68;
g=9.8;
t=10;
v=40;
X0=12;%(定义初值)
[X,Fval,Exit]=fsolve(@mf,12)
(3)
clear;
[x,y]=solve('x^2+x*y+y-3=0','x^2-4*x+3=0')
任务3.3:
微分方程组的求解
%微分方程求根
clear;
T=20;%(计算时长)
dt=2.5;%(时间步长)
N1=T/dt;
%初始点定义
x=6;
y=5;
z=5;
%参数取值
a=10;
b=2.666667;
c=28;
%Part2-程序主体
x1
(1)=x;
y1
(1)=y;
z1
(1)=z;
t
(1)=0;
fori=1:
N1
t(i+1)=i*dt;
x1(i+1)=x1(i)-a*(x1(i)-y1(i))*dt;
y1(i+1)=y1(i)+(c*x1(i)-y1(i)-x1(i)*z1(i))*dt;
z1(i+1)=z1(i)+(x1(i)*y1(i)-b*z1(i))*dt;
end
%Part3-画图
figure;
subplot(2,1,1)
plot(t,y1,'r-')
subplot(2,1,2)
plot(t,z1,'b-')
figure;
subplot(1,2,1)
plot(y1,x1,'r-')
subplot(1,2,2)
plot(z1,x1,'b-')
4.结果分析:
给出计算结果(可用数值、图表、曲线表示),并进行分析
任务3.1两种方法求解线性方程组
(1)逆矩阵法
(2)数值迭代法
经过16次迭代计算,得出符合精度需要的值(末尾一行)。
任务3.2:
非线性方程(组)的求根
(1)
(2)
Exit=1,说明计算结果可信。
(3)
任务3.3:
微分方程组的求解
原题数据输出结果(左y-t;右z-t)
更改数据后(第四问要求)结果(左x-y;右x-z)
对比可知,y-t曲线和x-y曲线都出现了一个数量级的差别,z-t曲线和x-z曲线变化不大。
5.其他:
说明实验中发现的问题及办法,个人体会、收获、思考等。
1、迭代求解线性方程组时,并没有按照预设迭代次数进行,而是满足精度后停止迭代,计算时,设置精度监测,可以提高计算效率,避免不必要的计算。
2、当任务三中的步长非常小时(如0.01),曲线呈现周期性起伏变化。