Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
I)
PHƯƠNG PHÁP EULER.
BÀI TOÁN: Cho phương trình vi phân:
Chia đoạn [a;b] làm n đoạn bằng nhau, mỗi đoạn có chiều dài :
xj = a + jh, j = 0,n
và đặt: x0 = a;
; xn = b.
Giả sử ta đã biết yj tại xj (điều kiện đầu) ta sẽ tìm yj+1 tại xj+1 như sau:
Áp dụng công thức khai triển Taylor của hàm số y(x) tại xj:
y(x) = y(xj) + (x - xj)y’(xj) + (x - xj)2
, cj
(xj , xj+1)
Thay x = xj+1; yj =y(xj); y’(xj) = f(xj,yj); h=xj+1 – xj vào đẳng thức trên, ta có:
Yj+1 = yj + hf(xj,yj) + h2
, cj
(xj , xj+1) bỏ đi số hạng h2
, ta được hệ thức:
yj+1 = yj + hf(xj,yj) (*)
Công thức (*)được gọi là công thức Euler
Thuật toán:
Bước 1: Chia đoạn [a;b] làm n đoạn bằng nhau và bằng
và đặt:
x0 = a; xj =a + jh, j=0,n ; xn=b;
Bước 2: từ điều kiện ban đầu y0 = y(a), ta sẽ tính được yj , j=1,n
Yj+1 = yj + hf(xj,yj)
Tính cho đến khi yj+1 y(b) thì yj+1 là giá trị nghiệm cần tìm.
BÀI TẬP
Câu 1: cho bài toán Côsi: y’ = f(x,y) =
, y(0) = 1. Tìm nghiệm gần đúng bằng
phương pháp Euler trên đoạn [0,1] chọn bước h = 0.1.
Giải
Bằng máy VINACAL:
Từ công thức Euler
GVHD: TS Nguyễn Phú Vinh
ta cài công thức:
Trang 1
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
X = 0; Y = 1;
B = 0.1
Y = Y + B( ) : X = X + B
BẦM “=” ĐẾN KHI X=1 THÌ DỪNG
Ta có bảng kết quả
i
0
1
2
3
4
5
6
7
8
9
10
Xi
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
yi
1
1
1.005
1.01505
1.030276
1.050881
1.077153
1.109468
1.148299
1.194231
1.247972
Bằng Excel
Trong đó công thức ô:
D4 = D3 + $B$2 kéo xuống ô D13
E4 = E3 + $B$2*(D3*E3)/2 kéo xuống ô E13
VỚI Ô $B$2 LÀ GIÁ TRỊ CỦA h (Cố định ô này-địa chỉ tuyệt đối) ta có kết quả
sau
GVHD: TS Nguyễn Phú Vinh
Trang 2
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Câu 2: cho bài toán hệ Cô si:
. Tìm
nghiệm gần đúng bằng phương pháp Euler trên đoạn [0,1], chọn bước h = 0,1
Giải:
Từ công thức Euler
Tính bằng VINACAL:
X=0; Y=1 ; M=1
;
B = 0,1
Ta cài công thức:
C là giá trị của
,y là giá trị của Yi. Dừng khi X=1
Kết quả giống như bảng excel dưới đây
Ta sử dụng Excel trong đó công thức của các ô được tính như sau:
Ô C2 = 0,1 = h với $C$2 là ô chứa giá trị của h (cố định ô này – địa chỉ tuyệt đối)
E3 = X0 = 0, F3 = Y0 = 1, G3 = Z0 = 1ĐỀ CHO: y(0)=1, z(0) = 1
E4 = E3 + $C$2 tăng x=x + h
F4 = F3+$C$2*((G3 -F3)*E3) theo công thức của Yi+1 không cần biểu diển thêm 2
cột fi(x,y,z) i=1,2
G4 =G3+$C$2*((G3+F3)*E3)
// theo công thức của Zi+1
Kết quả :
GVHD: TS Nguyễn Phú Vinh
Trang 3
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
II)
PHƯƠNG PHÁP EULER CẢI TIẾN.
BÀI TOÁN: Cho phương trình vi phân:
THUẬT TOÁN:
Bước 1: chia đoạn [a;b] làm n đoạn bằng nhau, mỗi đoạn có chiều dài
và đặt: x0 = a; xj = a + jh, j=0,n; xn = b;
Bước 2: từ điều kiện ban đầu y0 = y(a), ta sẽ tính được yj , j=1,n
Yj+1(0) = yj + h.f(xj,yj)
Yj+1(k+1) = yj + [f(xj,yj) + f(xj+1,yj+1(k)) ]
(**)
Bước 3:
Nếu :
|Yj+1(k+1) – Yj+1(k)|
và j+1
Nếu:
|Yj+1(k+1) – Yj+1(k)|
và j+1=n thì yj+1(k+1)
y(b) là giá trị nghiệm cần tìm
BÀI TẬP
Câu 1: cho bài toán Côsi: y’ = f(x,y) = 3x + , y(0) = 1. Tìm nghiệm gần đúng bằng
phương pháp Euler cải tiến trên đoạn [0,0.2] chọn bước h = 0.05. tính y(0.2)=?
GVHD: TS Nguyễn Phú Vinh
Trang 4
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Giải:
h= 0,05
X = 0; Y = 1; B=0.05
----------------------------------------------------------Tính Y(X+B)=y(0.05)
D=0
Ta có công thức (*)
= 1.025
D = 1 GỌI (*) = 1,029063
= 1,029113
= 1,029114
= 1,029114
ANS Y; X = X +B
-----------------------------------------------------------Tính y(X+B)=y(0.1)
D=0
GỌI (*)
D=1
GỌI (*)
= 1.062342
= 1,066507 = 1,066559 = 1,066560 = 1,066560
ANS Y; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,15)
D=0
GỌI (*)
= 1.108224
D=1
GỌI (*)
= 1,112495 = 1,112548 = 1,112549 = 1,112549
ANS Y;
X=X+B
---------------------------------------------------------Tính y(X+B)=y(0.2)
D=0
GỌI (*)
GVHD: TS Nguyễn Phú Vinh
= 1.162862
Trang 5
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
D=1
GỌI (*)
= 1,167241 = 1,167296 = 1,167297 = 1,167297
Ta có bảng sau
x
0
0.05
y
1
1.025
1.029063
1.029113
1.029114
1.029114
0.05 1.029114
0.1 1.062342
1.066507
1.066559
1.066560
1.066560
0.1 1.066560
0.15 1.108224
1.112495
1.112548
1.112549
1.112549
0.15 1.112549
0.2 1.162862
1.167241
1.167296
1.167297
1.167297
0.2 1.167297
GVHD: TS Nguyễn Phú Vinh
Trang 6
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
y(0,2)= 1,167297
Làm bằng Excel trường hợp h=0,05 Gài công thức:
LÀM VỚI CHU KÌ ĐẦU TIÊN
1. Cột D nhập thủ công
2. E2 = 1, D2 = 0VÌ y(0) = 1
3. Cột F là giá trị hàm f(x,y) = 3x +
với x y tai vi trí thứ i
4. F2 = 3*D2 + E2/2
5. E3 = E2 + $C$1*(F2)THEO CÔNG THỨC EULER
6. E4 = $E$2 + $C$1*($F$2 +3*$D$3 + E3/2)/2 EULER CẢI TIẾN. Rồi
kéo xuống đến E7 (lặp 4 lần), đến khi chúng hoàn toàn giống nhau theo
một sai số cho trước thì dừng.
7. Copy giá trị y(0.05) = 1.029114 lần lặp cuối xuống ô E9, và làm tương tự
cho chu kì mới
8. TA CÓ KẾT QUẢ SAU:
GVHD: TS Nguyễn Phú Vinh
Trang 7
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Câu 2: Cho bài toán Côsi: y’ = f(x,y)=
, y(0) = 1 tìm nghiệm gần đúng bằng
phương pháp Euler cải tiến trên đoạn [0,1], chọn bước h = 0,1.
Giải:
Với h = 0,1 Ta có công thức:
X = 0; Y = 1; B=0.2
----------------------------------------------------------Tính y(X + B)= Y (0,1)
D=0
Ta có công thức (*)
=1
D = 1 GỌI (*) = 1,0025
= 1,00250625
= 1,002506266
= 1,002506266
ANS Y ; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,2)
D = 0 GỌI (*)
= 1,007518797
D = 1 GỌI (*) = 1,010050125 = 1,010062782 = 1,010062845 = 1,010062846
ANS Y ; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,3)
D = 0 GỌI (*)
= 1,020163474
D = 1 GỌI (*) = 1,022764386
= 1,022783893 = 1,022784039 = 1,02278404
ANS Y; X = X + B
--------------------------------------------------------GVHD: TS Nguyễn Phú Vinh
Trang 8
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Tính y(X+B)=Y(0,4)
D = 0 GỌI (*)
= 1,038125801
D = 1 GỌI (*) = 1,040836178
= 1,040863282
= 1,040863553 = 1,040863556
ANS Y; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,5)
D = 0 GỌI (*)
= 1,061680827
D = 1 GỌI (*) = 1,064543202 = 1,064578981 = 1,064579429
= 1,064579434
ANS Y ; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,6)
D = 0 GỌI (*)
= 1,09119392
D = 1 GỌI (*) = 1,094254586 = 1,094300496
= 1,094301185
= 1,094301195
= 1,130440492 = 1,130498422 = 1,130499435
= 1,130499453
ANS Y; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,7)
D=0
GỌI (*)
D = 1 GỌI (*)
= 1,127130231
ANS Y; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(0,8)
D=0
GỌI (*)
= 1,170066934
D = 1 GỌI (*) = 1,173684532 = 1,173756884 = 1,173758331
ANS Y;
= 1,17375836
X=X+B
--------------------------------------------------------GVHD: TS Nguyễn Phú Vinh
Trang 9
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Tính y(X+B)=Y(0,9)
D = 0 GỌI (*)
= 1,220708695
D = 1 GỌI (*) = 1,224699473
= 1,224789265
= 1,224791286
= 1,224791331
ANS Y; X = X + B
--------------------------------------------------------Tính y(X+B)=Y(1)
D = 0 GỌI (*)
= 1,279906941
D = 1 GỌI (*) = 1,28434681 = 1,284457806 = 1,28446058
= 1,284460651
Vậy Y(1)= 1,284460651
Làm bằng Excel:
Gài công thức Excel:
Cột D ta tự nhập số liệu. cột F: là hàm f(xi,yi)=
Ta làm với chu kì đầu tiên:
9. F3 = D3*E3
10. E4 = E3 + $C$2*($F$3)
11. E5 = $E$3 +$C$2*($F$3 + $D$4*E4/2)/2. Rồi kéo xuống đến E8 (lặp 4 lần),
đến khi chúng hoàn toàn giống nhau theo một sai số cho trước thì dừng.
12. Copy giá trị y(0.1) = 1.002506266 lần lặp cuối xuống ô E9, và làm tương tự
cho chu kì mới
GVHD: TS Nguyễn Phú Vinh
Trang 10
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Câu 3: cho bài toán Côsi: y’ =
, y(1)=1. Hãy tìm nghiệm gần đúng bằng
phương pháp Euler cải tiến trên [1,1.5], h=0,1.
Giải:
Ta có công thức:
X = 1; Y = 1; B=0.1
----------------------------------------------------------Tính y(X + B)= Y (1,1)
D=0
Ta có công thức (*)
GVHD: TS Nguyễn Phú Vinh
=1
Trang 11
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
D = 1 GỌI (*) = 0.9895
= 0,988456
= 0.988352
= 0,988342
ANS Y; X = X + B
----------------------------------------------------Tính y(X + B)= Y (1,2)
D=0
GỌI (*)
D = 1 GỌI (*)
= 0,965024
= 0,951247
= 0,949927
= 0.949801 = 0,949789
ANS Y; X = X + B
------------------------------------------------------Tính y(X + B)= Y (1,3)
D = 0 GỌI (*)
=0,895999
D = 1 GỌI (*)
= 0,878535
= 0,876985
= 0.876849
= 0,876837
ANS Y; X = X + B
-----------------------------------------------------Tính y(X + B)= Y (1,4)
D = 0 Gọi (*) = 0,784720
D = 1 GỌI (*) = 0,763568 = 0,761930
= 0,761805 = 0,761799 =0,761795
ANS Y; X = X + B
-----------------------------------------------------Tính y(X + B)= Y (1,5)
D = 0 Gọi (*)
= 0,623828
D = 1 GỌI (*) = 0,599770 = 0,598298
= 0,598210 = 0,598204
Giải bằng Excel:
Trong đó cột D nhập thủ công giá trị của x
D3 = 1 ; E3=1 vì y(1) =1; F3 = E3^2-D3^2 là giá trị của hàm y’=y2-x2
E4=E3+$C$2*(F3)
GVHD: TS Nguyễn Phú Vinh
Trang 12
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
E5=$E$3+$C$2*(F3+E4^2-$D$4^2)/2
Câu 4: cho bài toán Cô si:
Y(1)=0.77, y’(1)= -0.44. Tìm nghiệm
gần đúng bằng phương pháp Euler cải tiến trên đoạn[1,1.5], chọn h =0.1. ở mỗi
bước h ta lặp m = 5 lần.
Giải:
Đặt
Khi đó
GVHD: TS Nguyễn Phú Vinh
Trang 13
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Từ công thức (1)
(i=0,1,…,n-1)
(i=0,1,…,n-1)
Cách 1:Tính bằng VINACAL:
X = 1; Y = 0.77; M = -0.44
Vì không đủ bộ nhớ nên ta thay trực tiếp B=0.1 trong công thưc dưới.
Ta cài công thức: trong đó:
C là giá trị của
,y là giá trị của Yi.
E là giá trị của
,M là giá trị của Zi. Dừng khi X=1
D=0
THAY B =0.1
(*)
=
0.726
= -0.473
-----------------------------------------GVHD: TS Nguyễn Phú Vinh
Trang 14
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
D =1
------------------------------------------LẶP LẦN 2
GỌI (*)
(tức là gọi C)
GỌI (**)(tức là gọi E)
= 0.72435
= -0.4712175
-----------------------------------------GỌI (*)
(tức là gọi C)
GỌI (**)(tức là gọi E)
LẶP LẦN 3
=0.724439125
=-0.471302979
-------------------------------------------LẶP LẦN 4
GỌI (*)
(tức là gọi C)
GỌI (**)(tức là gọi E)
=0.724434851
=-0.471298879
------------------------------------------LẶP LẦN 5
GỌI (*)
(tức là gọi C)
GỌI (**)(tức là gọi E)
ANS Y
= 0.724435056
= -0.471299076
ANSZ
X =X +B (Ở đây vì bộ nhớ không đủ nên ta thay trức tiếp B=0.1 tức là : X = X +0.1)
Tiếp tục quay trở lại các bước trên bắt đầu cho D =0 và gọi (*) và (**) làm tương tự
các bước trên ta có bảng phía dưới.
Ta cũng có thể sử dụng công thức sau để tính thủ công:
Từ
với y(1)=0.77 z(1) =-0.44
Áp dụng công thưc (1) ta tính:
a) Y(1.1)
GVHD: TS Nguyễn Phú Vinh
Trang 15
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Làm tương tự với y(1.2), y(1.3),y(1.4),y(1.5) ta có bảng kết quả sau:
x
1
1.1
y
0.77
0.726
0.72435
0.724435
0.724435261
0.724435037
z
-0.44
-0.473
-0.4713
-0.471294773
-0.47129926
-0.471299069
1.
1 0.724435037
1.2 0.67730513
0.675825223
0.67591545
-0.471299069
-0.500897203
-0.499092676
-0.499093869
GVHD: TS Nguyễn Phú Vinh
Trang 16
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
0.67591539
0.675915167
1.
2 0.675915167
1.3 0.626005353
0.624705353
0.624800143
0.624799748
0.624799526
1.
3 0.624799526
1.4 0.572478077
0.571366443
0.571465077
0.571464334
0.571464114
1. 0.57146411
4
4
1.5 0.517114758
0.516198486
0.5163002
0.5162991
0.516298883
1. 0.51629888
5
3
-0.499098331
-0.499098142
-0.499098142
-0.525098147
-0.52320233
-0.523210246
-0.523214681
-0.52321449
-0.52321449
-0.545447174
-0.54347448
-0.543489352
-0.543493752
-0.543493558
-0.543493558
-0.561819001
-0.559784717
-0.559806713
-0.559811066
-0.559810865
-0.559810865
Cách 3: Làm bằng Excel
Với công thức của các ô như sau:
Cột D (giá trị của x) nhập thủ công
D3=X=1; E3 = Y(1)=0.77; F3=Z(1)=-0.44 ; C2=h=0.1
Làm cho chu kì đầu tiên tức là tính y(1.1)
G3 =F3
H3 =-F3/D3-E3
E4=E3+$C$2*(G3)
E5 =$E$3+$C$2*($G$3+F4)/2
kéo xuống E8
F4 =F3+$C$2*(H3)
GVHD: TS Nguyễn Phú Vinh
Trang 17
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
F5 =$F$3+$C$2*($H$3+(-F4/$D$4-E4))/2
kéo xuống ô F8
COPY giá tri E8 xuống E9 và F8 xuống F9 tương ứng với giá trị của y(1.1) và z(1.1)
và làm tương tự với y(1.2)…. Ta có kết quả sau:
GVHD: TS Nguyễn Phú Vinh
Trang 18
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
Câu 5: Cho bài toán Côsi:
y(0.5 Câu 5:)=1, z(0.5)=1, tìm nghiệm gần đúng bằng phương pháp Euler cải tiến
trên đoạn [0.5,1]. Chọn h=0,1. ở mỗi bước h ta lặp đúng m=4 lần.
Giải:
Từ công thức
(i=0,1,…,n-1)
Làm bằng Excel
Với công thức của các ô như sau:
Cột D (giá trị của x) nhập thủ công
D3=X=1;
E3 = Y(0.5)=1; F3=Z(0.5)=1;
C2=h =0.1
Làm cho chu kì đầu tiên tức là tính y(1.1)
G3 =(2*E3-D3)/F3
H3 =2*E3/(F3+D3)
E4 =E3+$C$2*G3
//=
//=
//
E5 = =$E$3+$C$2*($G$3+(2*E4-$D$4)/F4)/2
F4 =F3+$C$2*(H3)
//
F5 =$F$3+$C$2*($H$3+2*E4/(F4+$D$4))/2
GVHD: TS Nguyễn Phú Vinh
với G3 =
kéo xuống E7
với H3 =
kéo xuống ô F7
Trang 19
Đề Tài: Giải gần đúng phương trình vi phân bằng phương pháp Euler và Euler cải tiến.
COPY giá tri E7 xuống E8 và F7 xuống F8 tương ứng với giá trị của y(0.6) và z(0.6)
và làm tương tự với y(0.7)…. Ta có kết quả sau:
GVHD: TS Nguyễn Phú Vinh
Trang 20