龙格库塔方法的Miline-Hamming预测-校正算法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011-2012学年第2学期实验报告

实验名称:微分方程数值解实验学院:******

专业:**************班级:**********

班内序号:**

学号:********

姓名:******

任课教师:******

北京邮电大学

时间:****年**月**日

实验目标

用多环节Miline-Hamming预测-校正算法求下列方程的解

y‘=y−2x

,

y0=1,

0≤x≤4

其中解析解为 y x=1+2x

实验原理

计算龙格库塔显示公式计算预测值,然后用隐式公式进行校正。Miline-Hamming预测-校正公式为

p n+1=u n−3+4

h(2f n−f n−1+f n−2)

m n+1=p n+1+112

121

(c n−p n)

c n+1=1

9u n−u n−2+

3

h[f t n+1,m n+1+2f n−f n−1] u n+1=c n+1−

9

(c n+1−p n+1)

其对应的算法流程为

1)输入a,b,f(t,u),N,u0

2)置h=(b-a)/N,t0=a,n=1

3)计算f n-1=f(t n-1,u n-1)

K1=hf n-1

K2=hf(t n-1+h/2, u n-1+K1/2)

K3=hf(t n-1+h/2, u n-1+K2/2)

K4=hf(t n-1+h, u n-1+K3)

u n= u n-1+1/6(K1 +2K2 +2K3 +K4)

t n=a+nh

4)输出(t n ,u n)

5)若n<3,置n+1→n,返回3;

否则,置n+1→n,0→p0,0→c0,转6. 6)计算

f3=f(t3,u3)

t= t3+h

p=u0+4/3(2 f3–f2 +2f1)

m=p+112/121(c0-p0)

c=1/8(9u3- u1)+3/8h[f(t,m)+ 2 f3–f2]

u=c-9/121(c-p)

输出(t,u)

7)如n

否则停止。

实验过程

我们不妨设步长h=0.2,编程实现如下:

clear

clf

clc

%直接求解微分方程

y=dsolve('Dy=y-2*t/y','y(0)=1','t');

%Miline-Hamming预测-校正法

h=0.2;

t=0:h:4;

n=length(t);

u=zeros(1,n);

u(1)=1;

zbu(1,1)=t(1);

zbu(2,1)=u(1);

f=zeros(1,n);

p=zeros(1,n);

c=zeros(1,n);

m=zeros(1,n);

for i=2:n

if i-1<=3

f(i-1)=u(i-1)-2*t(i-1)/u(i-1);

k1=h*f(i-1);

k2=h*((u(i-1)+k1/2)-2*(t(i-1)+h/2)/(u(i-1)+k1/2)); k3=h*((u(i-1)+k2/2)-2*(t(i-1)+h/2)/(u(i-1)+k2/2)); k4=h*((u(i-1)+k3)-2*(t(i-1)+h)/(u(i-1)+k3));

u(i)=u(i-1)+1/6*(k1+2*k2+2*k3+k4);

zbu(1,i)=t(i);

zbu(2,i)=u(i);

else

f(i-1)=u(i-1)-2*t(i-1)/u(i-1);

p(i)=u(i-4)+4/3*h*(2*f(i-1)-f(i-2)+2*f(i-3));

m(i)=p(i)+112/121*(c(i-1)-p(i-1));

c(i)=1/8*(9*u(i-1)-u(i-3))+3/8*h*(m(i)-2*t(i)/m(i)+2*f(i-1)-f(i-2));

u(i)=c(i)-9/121*(c(i)-p(i));

zbu(1,i)=t(i);

zbu(2,i)=u(i);

end

end

zbu

%作图

plot(t,u,'r*','markersize',10)

hold on,

ezplot(y,[0,4])

hold on,

title('Miline-HammingÔ¤²â-УÕýËã·¨')

grid on

legend('Miline-HammingÔ¤²â-УÕýËã·¨','½âÎö½â')

%解真值

h=0.2;

t=0:h:4;

n=length(t);

for i=1:n

y(i)=(1+2*t(i))^(1/2);

zby(1,i)=t(i);

zby(2,i)=y(i);

end

zby

我们可以得到计算后的结果图像如图1所示

相关文档
最新文档