,,,
:
: ..
, 2010
1.
2.
2.1
2.2
2.3
2.4
2.5
2.6
3.
3.1
3.2
4. .
, .
, . MatLAB, , .
1.
:
x(t) 0 (0). 0 Dtm=hm=(tm+1-tm), m , m=. m+1 :
xm+1=xm+hmF(xm,tm)
xm,tm:
, , :
=
tm hm . .
:
1. . xm+1=xm+hmF(xm,tm) x(tm - 1) h . εami hm2. , ,
ε
2. . : A = PλP-1. : x = PλP-1x. a<0, , , . a>0 . , .
3. . :
h<2tmin,
.
2.
.
2.1
MatLAB MatLAB 6.5. Windows 95 , MatLAB 6.5 ( ). 4 : Start.m , , Fun.m , FunT , RK1.m .
2.2
. . .
2.3
, .1:
.
.
RK1.m, , :
1. ,
2. , , ,
3. t_out, y_out, .
FunT, .
.
2.4
:
a)
b)
c)
d)
2.5
MatLAB. start.m. 1.5 ( ). .
2.6
. MatLAB.
3.
, , . .
3.2
:
|
||
0,1 | 0,0099 | 256 |
0,01 | 0,01 | 1932 |
0,001 | 0,0073 | 358 |
0,0001 | 0,01 | 2569 |
0,00001 | 0,0015 | 1 |
c 2530, 0,0099.
3.3
:
2016, 0,01.
|
|
|
0,1 | 0,0091 | 157 |
0,01 | 0,01 | 1169 |
0,001 | 0,01 | 7129 |
0,0001 | 0,01 | 25258 |
0,00001 | 0,0012 | 1 |
2 0,01 0,001 0,01 .
4. .
, , 0,00001, 1.
, , .
0,00001 , .
, , , , , .
, , , , (2) .
:
, ,
. , . ( 1), , .
1 ., . .-.: , 1975.- 558 .
2 .., .. : . .- .: ,1989.- 432 .
3 .. / .. .- , 1995.- 67 .
1
:
h=0.01; %
t0=0; %
x0=[0;0];
Edop=0.01;
[t_out,y_out]=RK1(t0,x0,h,Edop); % RK1
ytoch=FunT(t_out); %
% - 1
plot(t_out,y_out);
grid;
title('Solution for x1 and x2 by method Runge-Kutta 1');
ylabel('x');
xlabel('t');
:
function [t_out,y_out]=RungeKutta1(t0,x0,h,Edop);
% - 1
t=t0;
x=x0;
t_out=t;
y_out=x0;
E=[1;1];
while E>Edop
K1=Fun(t,x);
dx=h*K1;
x0=x;
x1=x0+(h/2)*Fun(t+h,x);
x1=x1+(h/2)*Fun(t+h,x1);
x=x+dx;
E=abs(x1-x);
t=t+h;
t_out=[t_out,t];
y_out=[y_out,x];
end
:
function [t_out,y_out]=RungeKutta1(t0,x0,h,Edop);
% - 1
t=t0;
hmax=h;
x=x0;
xmax=max(x0)
t_out=t;
y_out=x0;
E=[1;1];
while E>Edop
K1=Fun(t,x);
dx=h*K1;
x0=x;
x1=x0+(h/2)*Fun(t+h,x);
x1=x1+(h/2)*Fun(t+h,x1);
x=x+dx;
E=abs(x1-x);
hi=(0.001*xmax)./(abs(Fun(t,x))+(0.001*xmax)./hmax);
h=min(hi);
if h>hmax
hmax=h;
end
t=t+h;
t_out=[t_out,t];
y_out=[y_out,x];
end
2
0,01:
0,001:
0,01:
0,01:
0,001:
0,01:
Copyright (c) 2024 Stud-Baza.ru , , , .