数学建模实验.docx
《数学建模实验.docx》由会员分享,可在线阅读,更多相关《数学建模实验.docx(11页珍藏版)》请在冰豆网上搜索。
数学建模实验
数学建模实验
数学建模课程实验报告
专题实验7
班级
数财系1班
学号
23
姓名
李丛文
实验题目
常微分方程数值解
实验目的
1.掌握用MATLAB求微分方程初值问题数值解的方法;
2.通过实例学习微分方程模型解决简化的实际问题;
3.了解欧拉方法和龙格库塔方法的基本思想。
实验内容
(包括分析过程、方法、和代码,结果)
1.用欧拉方法和龙格库塔方法求下列微分方程初值问题的数值解,画出解的图形,对结果进行分析比较
解;M文件
functionf=f(x,y)
f=y+2*x;
程序;
clc;clear;
a=0;b=1;%求解区间
[x1,y_r]=ode45('f',[ab],1);%调用龙格库塔求解函数求解数值解;
%%以下利用Euler方法求解
y
(1)=1;N=100;h=(b-a)/N;
x=a:
h:
b;
fori=1:
N
y(i+1)=y(i)+h*f(x(i),y(i));
end
figure
(1)
plot(x1,y_r,'r*',x,y,'b+',x,3*exp(x)-2*x-2,'k-');%数值解与真解图
title('数值解与真解图');
legend('RK4','Euler','真解');
xlabel('x');ylabel('y');
figure
(2)
plot(x1,abs(y_r-(3*exp(x1)-2*x1-2)),'k-');%龙格库塔方法的误差
title('龙格库塔方法的误差')
xlabel('x');ylabel('Error');
figure(3)
plot(x,abs(y-(3*exp(x)-2*x-2)),'r-')%Euler方法的误差
title('Euler方法的误差')
xlabel('x');ylabel('Error');
4.单摆运动是一个我们熟悉的物理模型,可以看作工程技术中一些振动问题的简化,图8中一根长l的(无弹性的)细线,一端固定,另一端悬挂一质量为m的小球,在重力作用下小球处于竖直的平衡位置,使小球偏离平衡位置一根小的角度
,然后让它无初速度的放开,小球就会沿圆弧摆动,在不考虑空气阻力的情况下建立
关于时间t的微分方程,设l=25cm,在
等于
和
两种情况下求方程的数值解,并与近似解
比较。
解;实验原理与数学模型:
在小球摆动过程中的任一位置θ,小球所受重力沿运动轨迹方向的分力为-mgsinθ(负号表示力的方向与θ的正方向相反),利用牛顿第二定律即得微分方程
描述单摆运动规律的微分方程
(1)是2阶微分方程,无解析解,但可用Matlab或其它软件编程求其数值解,但都需要先将它化成方程组的形式。
令
则微分方程
(1)化为
初始条件转化为
在前面的两式中,g=,l=,x10为10o=(弧度)及30o=(弧度)两种情况.
周期
根据上原理,可以建立模型,用matlab编程求解,过程如下,程序以单摆的两个周期来计算作图。
M文件;
functiondx=danbai(t,x)
g=;l=;
dx=[x
(2);-g/l*sin(x
(1))];
程序;
一.当
时
ts=0:
:
2;
a0=;
x0=[a0,0];
[t,x]=ode23(@danbai,ts,x0);
y=a0*cos(sqrt(40).*t);
[t,x(:
1),y]
subplot(1,2,2),plot(t,x(:
1),'-k*'),title('摆角10度数值解')
subplot(1,2,1),plot(t,y,'b*'),plot(t,y,'-r*'),title('摆角10度近似解')
ans=
0
二.当
时,
ts=0:
:
2;
a0=;
x0=[a0,0];
[t,x]=ode23(@danbai,ts,x0);
y=a0*cos(sqrt(40).*t);
[t,x(:
1),y]
subplot(1,2,2),plot(t,x(:
1),'-k*'),title('摆角30度数值解')
subplot(1,2,1),plot(t,y,'b*'),plot(t,y,'-r*'),title('摆角30度近似解')
ans=
0
从数据可以看出,角度为10o时精确(数值)解与近似解相差不大,而初始角度为30o时,随着时间的增加差别很大
实验结果分析或者实验总结和体会
龙格库塔方法和Euler方法求解常微分方程都能获得比较好的数值解,相比较而言龙格库塔方法的数值解的精度远远要比Euler方法的数值解的精度高。