Курсовая работа: Исследование неявного метода Эйлера для линейной системы ОДУ с постоянным и переменным шагом
U=feval(funU, t+h);
if (t+h)>tfinal, h=tfinal-t; end
yp1=(I-A*h)\(y+h*B*U);
eam=abs(h*((yp1-y)-h*(y-ym1)/h1)/(h+h1));
if eam<=ep
yt=(I-A*h/2)\((I-A*h/2)\(y+h/2*B*U)+h/2*B*U);
h1=h;
ym1=y;
y=yp1;
eout=[eout;abs(y-yt).'];
tout=[tout;t]; yout=[yout;y.'];
h=min(sqrt((n*ep)./eam)*h);
t=t+h;
else h=h/2;
end
if trace
home, t, h, y
end
end
- rkpost1.m
function [tout, yout, eout]=rkpost1(funA, funB, funU, t0, tfinal, y0, h, trace)
if nargin<7, h=(tfinal-t0)/5; end
if nargin<8, trace=1; end
t=t0; y=y0;
tout=t; yout=y.';
if trace
clc, t, h, y
end
A=feval(funA);
B=feval(funB);