Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (932.69 KB, 395 trang )
Ap dụng phương pháp Euler ấn cho phương trình vi phân đại số (2.3.6),
(2.3.7) ta được:
(A - L ) X [ + (AT X 2 Y - Ằ X 2 = 0, (A — L ) X I + (A T — L ) X 2 = 0.
(2.3.8)
(2.3.9)
Giả sử A là tham số thực
À < 0, À ^ 1.
Đặt
U
= (À — L ) X \ + X T X
2, V = x2,
hệ (2.3.6), (2.3.7) trở thành hệ phương trình vi phân thường
(2.3.10)
(2.3.11)
Đối biến số trong các số hạng của (2.3.8), (2.3.9)
u' = Ằv,
u =
l)zi,n “I" AínÍC2,nj
V.
vn = x2
,715
ta đi đến
(2.3.12)
(2.3.13) u n v n ỉ
và phép truy hồi
(u n
Un—
l) Ằu n -ị.
Đây chính là phương pháp Euler hiển cho phương trình vi phân thường
mặc dù ta đã dụng phương pháp Euler ẩn cho phương trình
U'
= XU
vi phân ẩn (2.3.4), (2.3.5). Vậy ta có kết luận, phương pháp Euler ẩn
áp dụng tới phương trình vi phân đại số (2.3.4), (2.3.5) là ổn định nếu
h<-ị
Các ví dụ trên cho thấy một số đặc thù khi sử dụng phương pháp Euler cho
phương trình vi phân đại số.
Phụ lục
Giải phương trình, hệ phương trình vi phân thường
trên Maple 16
Phụ lục trình bày tính toán một số ví dụ trên Maple 16 giải phương trình và hệ
phương trình vi phân.
Ví dụ 1. Giải phương trình
y' = xy 2 - 2xy, y(0) = 1,
trên [0,1] với h = 0.01 theo phương phấp Euler cải tiến và so sánh
với kết quả đúng của phương trình.
Giải
> / := ( x , y ) — > X * y 2 — 2 * X * y;
x y 2 - 2x y
/ := (x , y )
> h := 0.01;
h : = 0.01
> X : TI n* h
X := n —>■ nh
> y:= proc (n) option remember; y ( n — 1) + — f ( x ( n — 1 ) , y ( n — 1))
Ái
+
2
f(x(n)>y(n ~1) + hfixin
end
-
1
) , y i n -!)))
; y :=proc(n)
option remembev,
y ( n — 1) + 1/2 * h * f ( x ( n — 1 ) , y ( n — 1)) + 1/2 *
h * y ( n - l ) + h * f ( x ( n - 1 ) , y ( n - 1)) end proc
> »(0 ) := 1 ;
1 /(0 )
3
7
6
:= 1
> Sol := dsolve({điff(Y(X),X) = X ■ Y 2 (x ) - I X- Y(X),Y( 0) = !},
№)));
s l
° ■■=
> assign(Sol)',
> array([seq([n,y(n) : evalf(subs(X = ^,y(x)))],n = 0..10)]);
1
1 1.000000000
2 0.9999500000 0.9999500000
3 0.9998000000 0.9998000000
4 0.9995500000 0.9995500000
5 0.9992000001 0.9992000000
6 0.9987500006 0.9987500004
7 0.9982000019 0.9982000018
8 0.9975500049 0.9975500048
9 0.9968000110 0.9968000108
10 0.9959500223 0.9959500220
11 0.9950000420 0.9950000418
Ví dụ 2. Giải phương trình
y’ = X 2 + y 2 ,y( 0) = 0
theo phương pháp Euler cải tiến với h = 0.01 trên [0,1] và so sánh
với kết quả đúng của phương trình.
Giải
> X :=' x'\y ■.=' y'\
> f ■= {x,y)
X2
f ■= {x,y) ->
+ y2\
X2
+ y2
3
7
7
>h:= 0 .01 ;
3
7
8
h
:= 0.01
> x : n —¥ n ■ h
X
:= N —>• N H
> y:= proc (n) option remember; Y ( N — 1 ) + ^ • F { X ( N — 1 ), Y ( N —
1 )) +
2
• F { X { N ) , Y { N - 1))) end;
y :=proc(n)
option remember',
y(n — 1) + 1/2 * h* f(x(n — 1),y(n — 1)) + 1/2 * h* f(x(n ), y(n
- 1) + h * f{x(n - 1 ),y{n - 1))) end proc
>
0 (0 )
:= 0 ;
1 /(0 )
:= 0
> Y :=' Y ' ; X : = ' X';
> Sol := dsolve{{diff{Y{X), X) = X 2 + Y 2 {X), y(0) = 1}, (Y(X)))-,
10 X
X ( B e s s e l \ X 2 ) - BesselY{- f, ^X2))
-------------------—I —^------------------ti—I —^---- O T H E R
BesselJ{\, \X 2 )
- BesselY(\, \X 2 )
assign(Sol );
> X : n —>■ n ■ h
X := n nh
> array{[seq{[n ì y{n) ì evalf{subs{X = 7 ^,Y (X)))],n = 0..10)]);
100
0
1
;
1.000000000
2 0.9999500000
0.9999500000
3 0.9998000000
0.9998000000
4 0.9995500000
0.9995500000
5 0.9992000001
0.9992000000
6 0.9987500006
0.9987500004
7 0.9982000019
0.9982000018
8 0.9975500049
0.9975500048
9 0.9968000110
0.9968000108
10 0.9959500223
0.9959500220
11 0.9950000420
0.9950000418
Ví dụ 3. Giải phương trình
.
V
=
5x3 + 1
3 = V ' y(0) = 1
trên [0,1] theo phương pháp Euler cải tiến với h = 0.01 và so sánh
với giá trị đúng của phương trình.
Giải
> X :=' x’\y :=' y1-,
5 • X3 + 1)
(3-y)
/ := ( x , y )
> h:= 0.01;
h := 0.01
> y:= proc (n) option remember; Y ( N — 1) + — F ( X ( N — 1 ) , Y ( N — 1))
z
x n
n
+ 2 f( ( )^y( - 1 ) + h- f{x(n),y(n - 1))) end;
y :=proc(n)
option remember;
y(n — 1 ) + 1 / 2 * h* f(x(n — 1 ),y(n — 1 )) + 1 / 2 * h* f(x(n ), y(nl) + h* f(x(n -
1
),y(n - 1 ))) end proc
> y(0 ) := 1 ;
1 ,(0 )
:= 1
> Sol := dsolve({diff(Y(X),X) =
= 1},
S O L : = Y ( X ) = 3 - — >/16 - 1 0 X 4 - 8 X
> assign(Sol );
> array([seg([n,y(n),e^a//(sw&s(X = ^ y(X)))], n = 0..10)]);
0
0
1.0000000
1 1.005006278 00
1.0050062
72
2 1.010025251 1.0100252
26
3 1.015057242 1.0150571
86
4 1.020102729 1.0201026
28
5 1.025162348 1.0251621
90
6 1.030236892 1.0302366
64
7 1.035327317 1.0353270
06
8 1.040434742 1.0404343
33
9 1.045560451 1.0455599
34
1 1.050705897 1.0507052
0
55
(Vpf)));
3
8
1
Ví dụ 4. Giải phương trình
y ' = 2x y - X 2 , y ( 0) = 1
theo phương pháp Euler cải tiến với h = 0.02 trên [0,1].
Giải
> X : = ' x ' - , y :=' y ' ]
> f := ( x , y ) - > 2 • X ■ y - X 2 ]
f := ( x , y ) ^
2 ■ X ■ y - X2
> h := 0.02;
h := 0.02
> X:nn•h
X := 71 —»• n h
> y:= proc (n) option remember; 2/(n — 1) + — f ( x ( n — ĩ ) , y ( n — 1))
2
+
- 1) + ■
y
f(x(n),y(n - 1))) end;
:=proc(n)
option remembev,
y(n — 1) + 1/2 * h* f(x(n — 1), y(n — 1)) + 1/2 * h* f(x(n ),
y(n - 1) + h * f{x(n - 1 ),y{n - 1))) end proc
> y { 0) := 1;
1/(0) := 1
> Sol := dsolve({dif f(Y(X),X) = 2-X-Y{X)-X 2 , Y (0) = 1}, (rpí)));
Sol := Y{X) = -X- ^-e ỵ 2 yfĩrerf{x) + e* 2 Ái “t
> assign(Sol)',
> X : TI n • h
> array([seq([n,y(n),evalf(subs(X = Y (X)))],n = 0..10)]);
X := n —¥ nh
3
8
2
0
1
1
1 1.000396000 1.00039741
3
2 1.001577109 1.00157993
4
3 1.003530148 1.00353438
4
4 1.006243771 1.00624942
0
5 1.009708433 1.00971549
7
6 1.013916363 1.01392484
8
7 1.018861548 1.01887146
3
8 1.024539721 1.02455107
7
9 1.030948353 1.03096116
6
1 1.038086660 1.03810094
0
9
Ví dụ 5. Giải phương trình
Y'
= 3sin(2x) + cos(a^), 2 /(0 ) = 1
theo phương pháp Euler cải tiến với h = 0.01 trên [0,1] và so sánh
với giá trị đúng của phương trình.
Giải
> X :=' X ' \ Y :=' Y 1 ]
>
F
:= ( X :
Ỳ)
— ¥ 3 • sin(2 • X ) + cos(x);
/ := (X , y) —> 3 sin(2 • x) + cos(x)
>
H
:= 0 .0 1 ;
/i := 0 . 0 1
> y:= proc (n) option remember; y(n — 1) + —f(x(n — 1 ),y(n — 1))
z
+ 2 f ( x ( n ) ^ y ( n - 1 ) + h - f { x ( n ) , y ( n - 1))) end;
y :=proc(n)
option remember;
3
8
3
y(n — 1) + 1/2 * h* f(x(n — 1),y(n — 1)) + 1/2 * h* f(x(n ), y(n
- 1) + h * f{x(n - 1 ),y{n - 1))) end proc
> y{ 0 ) := l;
1 /(0 )
:= 1
>
> Sol := dsolve({dif f(Y(X),X) = 3 • sin(2 • X) + cos(X),y(0) =
l},(y(X)));
Sol := Y{X) = —- cos(2 X) + sm{X) + > assign(Sol );
= ĩẫpy (*)))]
1,
EVALF(SUBS(X
0
1
1.00000000
0
1
1.010299730 1.010299823
2
1.021198300 1.021198507
3
1.032694350 1.032694690
4
1.044786281 1.044786775
5
1.057472255 1.057472921
6
1.070750194 1.070751052
7
1.084617782 1.084618853
8
1.099072466 1.099073769
9
1.114111455 1.114113010
1
0
1.129731723 1.129733550
Ví dụ 6 . Giải phương trình
y ' = 3 x - y ( 1) = 2
> X : TI n • h
X
X := n —¥ nh
3
8
4
theo phương pháp Euler cải tiến với h = 0.1 trên [1,2] và so sánh với
giá trị đúng của phương trình.
Giải
>
X :='
x'\y
■.=' y';
> f := {x,y)
3 •XX
f := (x,y) -> 3íc - -
X
> h : = 0.1;
/ì := 0 . 1
X
:= 71 —»• 1 +
nh
> y:= proc (n) option remember; Y ( N — 1) + — F ( X ( N — 1 ) , Y ( N — 1))
z
x n
n
+ 2 f( ( )^y( - 1 ) + h- f{x(n),y(n - 1))) end;
y :=proc (n)
option remember',
y{n — 1) + 1/2 * h* f(x(n — 1),y(n — 1)) + 1/2 * h* f(x(n ),
y(n-l) + h* f{x(n - 1 ),y(n - 1))) end proc >»(1 ) :=2 ;
»(1 ) := 2
>
> Sol := dsolve({diff(Y(X),X) = 3 - X -
= 2}, (Y(X)));
X 3 -I- 1
S o l := Y ( X ) =
> assign(Sol)',
> array([seq([n, y(n), evalf (subs(X = ^,y(Ji)))],n = 0..10)]);
0
2
2.11909090
1 2.164583333 9
2.27333333
3
2 2.359230769 2.45923076
9