文档介绍:该【二阶常微分方程的数值求解公开课一等奖课件赛课获奖课件 】是由【书犹药也】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【二阶常微分方程的数值求解公开课一等奖课件赛课获奖课件 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。二阶常微分方程的数值求解
一. 教学规定
掌握运用降阶把二阶常微分方程转化为一阶微分
方程组,再运用Euler措施数值求解,并能运用MATLAB
软件进行数值计算和符号运算。
二. 教学过程
考虑如下的二阶微分方程初值问题
运用Euler措施求解上述方程组可得如下数值格式
运用四阶R-K措施求解上述方程组可得如下数值格式
例1:用 Euler 法求解如下初值问题
当 h=,即 n=20 时,Matlab 源程序见
解:
clc;clear;
h=;
a=0;b=2;
x=a:h:b;
y(1)=1;
z(1)=-1;
for i=1:length(x)-1
y(i+1)=y(i)+h*z(i);
z(i+1)=z(i)+h*y(i);
end
plot(x,y,'r+',x,exp(-x),'k-');
xlabel('Variable x');
ylabel('Variable y');
数值解与真解如下图
例2:运用4阶R-K措施求解例1,并与Euler措施进行比较。
解 当 h=,即 n=20 时,R-K措施的Matlab 源程序见 ,数值成果见下图
function w=rightf_sys1(x,y,z)
w=y;
clc;clear;
h=;
a=0;b=2;
x=a:h:b;
Euler_y(1)=1;
Euler_z(1)=-1; %初值
RK_y(1)=1;
RK_z(1)=-1; %初值
for i=1:length(x)-1
%**** Euler Method ****%
Euler_y(i+1)=Euler_y(i)+h*Euler_z(i);
Euler_z(i+1)=Euler_z(i)+h*Euler_y(i);
%***** R-K4 Method*****%
K1=RK_z(i); L1=rightf_sys1(x(i),RK_y(i),RK_z(i)); % K1 and L1
K2=RK_z(i)+*h*L1;
L2=rightf_sys1(x(i)+*h,RK_y(i)+*h*K1,RK_z(i)+*h*L1);
% K2 and L2
K3=RK_z(i)+*h*L2; L3=rightf_sys1(x(i)+*h,RK_y(i)+*h*K2,RK_z(i)+*h*L2);
% K3 and L3
K4=RK_z(i)+h*L3; L4=rightf_sys1(x(i)+h,RK_y(i)+h*K3,RK_z(i)+h*L3); % K4 and L4
RK_y(i+1)=RK_y(i)+1/6*h*(K1+2*K2+2*K3+K4);
RK_z(i+1)=RK_z(i)+1/6*h*(L1+2*L2+2*L3+L4);
end
plot(x,Euler_y,'r+',x,exp(-x),'k-',x,RK_y,'b*');
xlabel('Variable x');
ylabel('Variable y');