微分方程数值解法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微分方程数值解法
课程设计报告
班级: ___________
姓名: ___________
学号: ____________
成绩:_______________
二零一七年6月 22 日
目录
第一题常微分方程数值解-----------------------------------
1.1 实验目的----------------------------------------------------
1.2 实验原理----------------------------------------------------
1.3 用matlab编写源程序----------------------------------------
1.4 数值解及其误差举例------------------------------------------
1.5 运行结果及其截图 -------------------------------------------------------------------
1.6实验总结----------------------------------------------------- 第二章常系数扩散方程的经典差分格式----------------------------
2.1 实验目的---------------------------------------------------
2.2 实验原理---------------------------------------------------
2.3 用matlab编写源程序----------------------------------------
2.4 数值解及其误差举例------------------------------------------
2.5 运行结果及其截图------------------------------------------- 2.6实验总结----------------------------------------------------- 第三章常系数扩散方程的经典差分格式---------------------------
3.1 实验目的---------------------------------------------------
3.2 实验原理----------------------------------------------------
3.3 用matlab编写源程序-----------------------------------------
3.4 数值解及其误差举例------------------------------------------
2.5 运行结果及其截图-------------------------------------------- 2.6实验总结-----------------------------------------------------
参考文献--------------------------------------------------
设计一:常微分方程数值解
1.1:实验目的
用显式单步法:4阶龙格库塔法和显式Adams 计算洛伦兹方程并比较计算结果,初始值取(5,5,10)。
1.2:实验原理
洛伦兹方程是一组典型的非线性方程,来源于大气物理研究。在一定的参数下,方程的解表现出了非常复杂而又有趣的现象。本专题要求采用数值积分的方法,求解如下洛伦兹方程:
)(x y dt dx -==σ
y z x dt dy --=)(ρ
z xy dt dy β-= 其中,取283810===ρβσ,,。
t 为从0开始的时间变量,积分初值
{})0(),0(),0(z y x 为任意
的不全为零的数值即可。
实验内容和步骤:
用matlab 实现4阶龙格库塔法和Adams 外插法,代入初始值并得到结果。
1.3:实验过程
四阶龙格库塔法matlab实现源程序:
m文件:
function [x,y,z]= luc(x1,y1,z1,h)%参数含义 x1,y1,z1是初始值,h是步长kfx=0;ksx=0;ktx=0;kfhx=0; %k1,k2,k3,k4的三个分量形式的初始化
kfy=0;ksy=0;kty=0;kfhy=0;
kfz=0;ksz=0;ktz=0;kfhz=0;
x0=x1;y0=y1;z0=z1;
kfx=10*(y0-x0); %求k1x
kfy=x0*(28-z0)-y0; %求k1y;
kfz=x0*y0-8/3*z0; %求k1z;
x0=x1+1/2*h*kfx; %变量替换
y0=y1+1/2*h*kfy;
z0=z1+1/2*h*kfz;
ksx=10*(y0-x0); %求k2x;
ksy=x0*(28-z0)-y0; %求k2y;
ksz=x0*y0-8/3*z0; %求k2z;
x0=x1+1/2*h*ksx;
y0=y1+1/2*h*ksy;
z0=z1+1/2*h*ksz;
ktx=10*(y0-x0); %求k3x;
kty=x0*(28-z0)-y0; %求k3y;
ktz=x0*y0-8/3*z0; %求k3y;
x0=x1+1/2*h*ktx;
y0=y1+1/2*h*kty;
z0=z1+1/2*h*ktz;
kfhx=10*(y0-x0); %求k4x;
kfhy=x0*(28-z0)-y0;%求k4y;
kfhz=x0*y0-8/3*z0; %求k4z;
x=x1+h/6*(kfx+2*ksx+2*ktx+kfhx);%求u(n+1)x分量的值
y=y1+h/6*(kfy+2*ksy+2*kty+kfhy);%求u(n+1)y分量的值
z=z1+h/6*(kfz+2*ksz+2*ktz+kfhz);%求u(n+1)z分量的值
End
%执行语句:
a=1:1:3000;b=1:1:3000;c=1:1:3000;
x1=5;y1=5;z1=10;
for i=1:1:3000;
[x,y,z]=luc(x1,y1,z1,0.01);