向前欧拉公式计算
matlab
程序函数
function [H,X,Y
,k,h,P]=QEuler(funfcn,x0,b,y0,tol)
%
初始化
.
pow=1/3;
if nargin
tol = 1.e-6;
end;
x=x0;
h=0.0078125*(b-x);
y=y0(:);
p=128;
H=zeros(p,1);
X=zeros(p,1);
Y=zeros(p,length(y));
k=1;
X(k)=x;
Y(k,:)=y';
%
绘图
.
clc,x,h,y
% end
%
主循环
.
while (xx)
if x+h>b
h=b-x;
end
%
计算斜率
.
fxy=feval(funfcn,x,y);
fxy=fxy(:);
%
计算误差,设定可接受误差
.
delta=norm(h*fxy,'inf');
wucha=tol*max(norm(y,'inf'),1.0);
%
当误差可接受时重写解
.
if delta<=wucha
x=x+h; y=y+h*fxy; k=k+1;
if k>length(X)
X=[X;zeros(p,1)];
Y=[Y;zeros(p,length(y))];
H=[H;zeros(p,1)];
end
H(k)=h;