向前欧拉公式在Matlab解微分方程初值解的问题0
fuqilin1202013.07.04浏览527次分享举报
用向前欧拉公式(10.8)求解初值问题,dy/dx=-3x+8x-7,y(0)=1,分别取n=10,n=100,并将计算结果与精确解作比较,写出在每个子区间[xk,xk+1]上的局部截断误差公式,画出数值解与精确解在区间[0,1]上的图形.
主程序:
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