- •Глава 8
- •8.1 Неявный метод Эйлера
- •8.2 Неявные одношаговые методы, основанные на разложениях Тейлора-Ито
- •8.2.1 Методы порядка точности 1.0
- •8.2.2 Методы порядка точности 1.5
- •8.2.3 Методы порядка точности 2.0
- •8.2.4 Методы порядка точности 2.5
- •8.2.5 Метод порядка точности 3.0
- •8.3 Неявные одношаговые конечно-разностные методы, основанные на разложениях Тейлора- Ито
- •8.3.1 Методы порядка точности 1.0
- •8.3.2 Методы порядка точности 1.5
- •8.3.3 Методы порядка точности 2.0
- •8.3.4 Методы порядка точности 2.5
- •8.4 О сходимости неявных сильных одношаговых методов
- •8.5 Сбалансированные неявные сильные численные методы
- •8.6 О полностью неявных сильных численных методах
- •17.4.1 Программа для численного эксперимента 8.1 при
- •17.4.2 Программа для численного эксперимента 8.2 при ,
- •17.4.3 Программа для численного эксперимента 8.9
- •17.4.4 Программа для численного эксперимента 8.14
17.4.2 Программа для численного эксперимента 8.2 при ,
clear;
t0=0; tk=1;
a=5; b=0.01;
st=1.73;
for jj=2:6,
randn ('state', 0);
dt=1/(2^jj);
t=t0:dt:tk;
l=max(size(t))-1;
he=0;
al1=1;al2=1;
for i=1:20*100,
x1(1)=1;
x2(1)=0;
H0=[x1(1); x2(1)];
y1(1)=1;
y2(1)=0;
a1=1/(1+al1*a*dt);
a2=1/(1+al2*a*dt);
a3=al1*al2*(a*dt)^2;
a4=(1/(1-a3*a1*a2))*a1;
sw=0;
for p=1:l,
u=randn;
sw=sw+u;
xx1=expm((-0.5*(b^2))*p*dt+b*sqrt(dt)*sw);
xx2=expm((-2*a-0.5*(b^2))*p*dt+b*sqrt(dt)*sw);
F=[xx1 0; 0 xx2];
D=[1 1; 1 -1];
H=0.5*D*F*D*H0;
x1(p+1)=H(1,1);
x2(p+1)=H(2,1);
y1(p+1)=a4*(y1(p)+((al1*a*a2)*(y2(p)+(1-al2)*a*(y1(p)-y2(p))*dt+b*y2(p)*sqrt(dt)*u)+(1-al1)*a*(y2(p)-y1(p)))*dt+b*y1(p)*sqrt(dt)*u);
y2(p+1)=a2*(y2(p)+(al2*a*y1(p+1)+(1-al2)*a*(y1(p)-y2(p)))*dt+b*y2(p)*sqrt(dt)*u);
end;
e(i)=sqrt((x1(l+1)-y1(l+1))^2+(x2(l+1)-y2(l+1))^2);
he=he+e(i);
end;
he=he/(20*100);
for j=1:20,
ee=0;
for k=(j-1)*100+1:j*100,
ee=ee+e(k);
end;
hh(j)=ee/100;
end;
s=0;
for j=1:20,
s=s+(hh(j)-he)^2;
end;
s=s/19;
hee(jj-1)=log(he);
he1(jj-1)=log(he)-st*sqrt(s/20);
he2(jj-1)=log(he)+st*sqrt(s/20);
ttt(jj-1)=log(1/(2^jj));
end;
e1=[he1(1) he2(1)];
e2=[he1(2) he2(2)];
e3=[he1(3) he2(3)];
e4=[he1(4) he2(4)];
e5=[he1(5) he2(5)];
tt1=[log(1/(2^2)) log(1/(2^2))];
tt2=[log(1/(2^3)) log(1/(2^3))];
tt3=[log(1/(2^4)) log(1/(2^4))];
tt4=[log(1/(2^5)) log(1/(2^5))];
tt5=[log(1/(2^6)) log(1/(2^6))];
plot(tt1,e1,tt2,e2,tt3,e3,tt4,e4,tt5,e5,ttt,hee);
pause;
Рис. 17.2 Результат численного эксперимента 8.2 при ,
17.4.3 Программа для численного эксперимента 8.9
clear;
t0=0; tk=1;
a=1.5; b=1.5;
st=1.73;
for jj=4:8,
randn ('state', 0);
dt=1/(2^jj);
t=t0:dt:tk;
l=max(size(t))-1;
he=0;
for i=1:20*100,
x(1)=1; y(1)=1;
sw=0;
for p=1:l,
u=randn;
ui0=sqrt(dt)*u;
ui00=0.5*dt*(u^2-1);
ui000=(dt^(3/2))*(1/6)*(u^3-3*u);
ui0000=(dt^2)*(1/24)*(u^4-6*(u^2)+3);
ui00000=(dt^(5/2))*(1/120)*(u^5-10*(u^3)+15*u);
ui000000=(dt^3)*(1/720)*(u^6-15*(u^4)+45*(u^2)-15);
sw=sw+u;
y(p+1)=(1/(1-0.5*a*dt))*(y(p)+0.5*a*dt*y(p)+b*ui0*y(p)+(b^2)*y(p)*ui00+0.5*a*b*y(p)*dt*ui0+(b^3)*y(p)*ui000+0.5*a*(b^2)*y(p)*dt*ui00+(b^4)*y(p)*ui0000+0.5*(b^3)*a*y(p)*dt*ui000+(b^5)*y(p)*ui00000-(1/12)*((dt*a)^3)*y(p)+(b^4)*a*0.5*dt*ui0000*y(p)+(b^6)*y(p)*ui000000);
end;
x(l+1)=x(1)*expm((a-0.5*(b^2))*l*dt+b*sqrt(dt)*sw);
e(i)=abs(x(l+1)-y(l+1));
he=he+e(i);
end;
he=he/(20*100);
for j=1:20,
ee=0;
for k=(j-1)*100+1:j*100,
ee=ee+e(k);
end;
hh(j)=ee/100;
end;
s=0;
for j=1:20,
s=s+(hh(j)-he)^2;
end;
s=s/19;
hee(jj-3)=he;
he1(jj-3)=he-st*sqrt(s/20);
he2(jj-3)=he+st*sqrt(s/20);
ttt(jj-3)=1/(2^jj);
end;
e1=[he1(1) he2(1)];
e2=[he1(2) he2(2)];
e3=[he1(3) he2(3)];
e4=[he1(4) he2(4)];
e5=[he1(5) he2(5)];
tt1=[1/(2^4) 1/(2^4)];
tt2=[1/(2^5) 1/(2^5)];
tt3=[1/(2^6) 1/(2^6)];
tt4=[1/(2^7) 1/(2^7)];
tt5=[1/(2^8) 1/(2^8)];
plot(tt1,e1,tt2,e2,tt3,e3,tt4,e4,tt5,e5,ttt,hee);
pause;
Рис. 17.3 Результат численного эксперимента 8.9
