Tải bản đầy đủ (.doc) (20 trang)

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.

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 (375.98 KB, 20 trang )

Đề 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 = 0VÌ 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

ANSZ

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



×