西京学院数学软件实验任务书
课程名称数学软件实验班级数0901学号0座机电话号码7姓名李亚强实验课题欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta数值算法实验目的熟悉欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta数值算法实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成实验内容欧拉数值算法(显式,隐式,欧拉预估-校正法)
Runge-Kutta数值算法成绩教师 实验二十四实验报告
实验名称:欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta数值算法。
实验目的:进一步熟悉欧拉数值算法(显式,隐式,欧拉预估-校正法),Runge-Kutta数值算法。
实验要求:运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成程序设计。
实验原理:
欧拉数值算法(显式):
微分方程里最简单的方程形式莫过于一阶常微分方程的初值问题,即:
其中,为常数。
因为其简单但又是求解其他方程的基础,所以发展了许多典型的解法。所有算法中的就是代表上式中,而表示,表示。
简单欧拉法是一种单步递推算法。简单欧拉法的公式如下所示:
简单欧拉法的算法过程介绍如下:
给出自变量的定义域,初始值及步长。
对,计算
欧拉数值算法(隐式):
隐式欧拉法也叫退欧拉法,隐式欧拉法的公式如下所示:
隐式欧拉法是一阶精度的方法,比它精度高的公式是:
隐式欧拉的算法过程介绍如下。
给出自变量的定义域,初始值及步长。
对,用牛顿法或其他方法求解方
得出。
欧拉预估-校正法:
改进欧拉法是一种二阶显式求解法,其计算公式如下所示:
Runge-Kutta数值算法:
二阶龙格-库塔法有多种形式,除了改进的欧拉法外,还有中点法。中点法计算公式为:
实验内容:
%欧拉数值算法(显式)
function [h,k,X,Y,P,REn] Qeuler1 funfcn,x0,y0,b,n,tol
x x0; h b-x /n; X zeros n,1 ; y y0;
Y zeros n,1 ; k 1; X k x; Y k y';
for k 2:n+1
fxy feval funfcn,x,y ;
delta norm h*fxy,'inf' ;
wucha tol*max norm y,'inf' ,1.0 ;
if delta wucha
x x+h; y y+h*fxy; X k x;Y k y';
end
plot X,Y,'rp'
grid
label '自变量 X' , ylabel '因变量 Y'
title '用向前欧拉(Euler)公式计算dy/dx f x,y ,y x0 y0在[x0,b]上的数值解'
end
P [X,Y];
syms dy2,
REn 0.5*dy2*h^2;
%欧拉数值算法(隐式)
function [X,Y,n,P] Heuler1 funfcn,x0,b,y0,h,tol
n fix b-x0 /h ; X zeros n+1,1 ; Y zeros n+1,1 ;
k 1; X k x0; Y k,: y0; Y1 k,: y0;
clc,x0,h,y0
for i 2:n+1
X i x0+h; Y i,: y0+h*feval funfcn,x0,y0 ;
Y1 i,: y0+h*feval funfcn,X i ,Y i,: ;
Wu abs Y1 i,: -Y i,: ;
while Wu tol p Y1 i,: ;
Y1 i,: y0+h*feval funfcn,X i ,p ;
Y i,: p;
end
x0 x0+h; y0 Y1 i,: ;
Y i,: y0; plot X,Y,'ro'
grid on
xlabel '自变量 X' , ylabel '因变量 Y'
title '用向后欧拉公式计算dy/dx f x,y ,y x0 y0在[x0,b]上的数值解'
end
X X 1:n+1 ; Y Y 1:n+1,: ; n 1:n+1; P [n',X,Y]
%欧拉预估-校正法
function [H,X,Y,k,h,P] gaiEuler funfcn,x0,b,y0,tol
pow 1/3;
if nargin 5 | isempty tol ,
tol 1.e-6;
end;
if nargin 6 | isempty trace ,
trace 0;
end;
x x0; h 0.0078125*