matlab 欧拉算法 附截图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设系统方程为:y t y y /2)1(-=,1)0(=y ,用改进欧拉法求解各离散点y 的数值解,步长
10,1.0≤≤=t h ,解析解为t y 21+=
。
解:改进欧拉法
),(1n n n p
n y t hf y y +=+
)],(),([5.0111p
n n n n n c
n y t f y t f h y y +++++=
已知 n n n n n y t y y t f /2),(-=
n n n n n n n p
n y ht y h y t y h y y /2)1()/2(1-+=-+=+
1
111111/5.0/)5.01()]/2()/2[(5.0+++++++-+-+=-+-+=n n n n n n n n n n n n n c n y ht hy y ht y h y t y y t y h y y 程序:
h=0.1; t=0:h:1;
N=length(t); y=ones(1,N); ey=ones(1,N);
zy=ones(1,N); for k=1:N-1
y(1,k+1)=(1+h)*y(1,k)-(2*h*(k-1)/(N-1))./y(1,k);%预估公式 ey(1,k+1)=(1+h)*ey(1,k)-(2*h*(k-1)/(N-1))./ey(1,k);%欧拉公式
y(1,k+1)=(1+0.5*h)*y(1,k)-(h*(k-1)/(N-1))./y(1,k)+0.5*h*y(1,k+1)-(h*k/(N-1))./y(1,k+1);%改进欧拉
zy(1,k+1)=(1+2*k/(N-1)).^0.5;%解析解 end
plot(t,zy,'-xk',t,y,':ob',t,ey,'-.*r','linewidth',1.0); xlabel('t'); ylabel('y'); 截图: