Professional Documents
Culture Documents
Phuong Trinh VI Phan
Phuong Trinh VI Phan
Phuong Trinh VI Phan
where L is the length of the pendulum, g ≈ 32.17 ft/s2 is the gravitational constant of the
earth, and θ is the angle the pendulum makes with the vertical. If, in addition, we specify
xác định bởi phương trình
the position vi phân
of the pendulum when thebậc haiθ(t ) = θ , and its velocity at that
motion begins, 0 0
point, θ ′ (t0 ) = θ0′ , we have what is called an initial-value problem.
For small values of θ, the approximation θ ≈ sin θ can be used to simplify this problem
to the linear initial-value problem
d 2θ g
d2θ g+ θ(t sin
+ θ = 0,
θ=0 ′ ′
dt 2
dt 2 L L ) = θ , θ (t ) = θ . 0 0 0 0
This problem can be solved by a standard differential-equation technique. For larger values
of θ, the assumption that θ = sin θ is not reasonable so approximation methods must be
used. A problem of this type is considered in Exercise 8 of Section 5.9.
với L là chiều dài con lắc, g là hằng số hấp dẫn của trái đất, θ là góc tạo
Any textbook on ordinary differential equations details a number of methods for ex-
plicitly finding solutions to first-order initial-value problems. In practice, however, few of
bởi con lắc và trục thẳng đứng. the problems originating from the study of physical phenomena can be solved exactly.
259
Ta xét vị trí ban đầu của con lắc khi bắt đầu dao động là θ(t0 ) = θ0 và
vận tốc ban đầu tại điểm này là θ0 (t0 ) = θ00 , ta có bài toán giá trị đầu.
Copyright 2010 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
d 2θ g
+ θ = 0, θ(t0 ) = θ0 , θ0 (t0 ) = θ00
dt 2 L
Bài toán này có thể giải bằng các phương pháp quen thuộc. Tuy nhiên với
giá trị θ lớn, ta không thể giả thiết θ = sin θ. Để tìm nghiệm cho bài toán
này, ta cần sử dụng các phương pháp xấp xỉ nghiệm.
Ta xét bài toán giá trị đầu bậc nhất, bài toán Cauchy,
0
y (t) = f (t, y (t)), a 6 t 6 b,
(1)
y (a) = α
với y = y (t) là hàm cần tìm, khả vi trên đoạn [a, b], y0 là giá trị ban đầu
cho trước của y (t) tại t = a.
Đối với bài toán Cauchy (1) ta chỉ có thể tìm được nghiệm đúng của một
số phương trình đơn giản, còn đối với trường hợp f (x, y ) có dạng bất kỳ
thì nói chung không có phương pháp giải.
Ngoài ra, trong những trường hợp có thể tìm ra nghiệm đúng của bài toán
Cauchy (1) quá phức tạp thì người ta cũng ít dùng.
Vì vậy, việc tìm những phương pháp giải gần đúng bài toán Cauchy có vai
trò rất quan trọng trong thực tế.
Để tìm nghiệm gần đúng của bài toán (1) ta chia đoạn [a, b] thành n đoạn
nhỏ bằng nhau với
b−a
h= .
n
Khi đó các điểm nút là t0 = a, tk = t0 + kh, k = 0, 1, 2, . . . , n, tn = b.
Giả sử y (t) là nghiệm duy nhất của bài toán (1), có đạo hàm đến cấp 2
liên tục trên đoạn [a, b].
Khi đó với mỗi k = 0, 1, 2, . . . , n − 1 theo công thức khai triển Taylor trên
đoạn [tk , tk+1 ], ta có
(tk+1 − tk )2
y (tk+1 ) = y (tk ) + y 0 (tk )(tk+1 − tk ) + y 00 (ξk ) ,
2
với ξk ∈ (tk , tk+1 ).
h2 00
y (tk+1 ) = y (tk ) + h.f (tk , yk ) + y (ξk )
2
y0 = α
yk+1 ≈ yk + hf (tk , yk ),
với k = 0, 1, 2, . . . , n − 1.
Từ (t0 , y0 ) = (a, α) thuộc đường cong y = y (t), kẻ tiếp tuyến với đường
Example 1 Euler’s method1 wasEuler’s
Example used 0inmethod
the first illustration with h = 0.5 to approximate
with h = 0.5 the solution
cong (cóto hệ số góc
the initial-value (a) =wasfproblem
làtheyinitial-value
problem
to
used in the
(a, α)). first illustration
Đường tiếp tuyến tosẽapproximate
cắt t =thetsolution
1 tại
y1 chính là giá trị gần đúng của y (t 1 ).
y′ = y − t 2 + 1, 0′ ≤ t ≤ 2,2 y(0) 1, = 0.5.
Tại (t1 , y1 ), ta kẻ đường thẳng vớiy =hệy −sốt +góc 0≤
f (tt 1≤, 2,y1 )y(0)
cắt= 0.5.
t = t2 tại y2 là
giá trị gần đúng của
Use Algorithm 5.1 UseyAlgorithm
with (t
N 2=).
10 to5.1
determine
with N = approximations,
10 to determine and compare these and
approximations, withcompare
the these with the
exact values given exact = (t +
by y(t)values 1)2 −
given by0.5e
t
y(t) .= (t + 1)2 − 0.5et .
Ví dụ
Sử dụng phương pháp Euler để xấp xỉ nghiệm của bài toán Cauchy
0
y (t) = y − t 2 + 1, 0 6 t 6 2,
y (0) = 0.5
với n = 10. Tại những điểm nút chia so sánh giá trị gần đúng với giá trị
chính xác, biết nghiệm chính xác của bài toán là y (t) = (t + 1)2 − 0.5e t .
Giải.
2−0
Với n = 10 thì h = = 0.2, tk = 0.2k, y0 = 0.5.
10
Công thức tính nghiệm gần đúng là
với k = 0, 1, . . . , 9.
Bấm máy. Y = Y + 0.2(Y − M 2 + 1) : M = M + 0.2
1 CALC Y = 0.5 =, M = 0 =
2 Y =, M = 0.2 =
k tk yk y (tk ) |y (tk ) − yk |
0 0.0 0.5000000 0.5000000 0.0000000
1 0.2 0.8000000 0.8292986 0.0292986
2 0.4 1.1520000 1.2140877 0.0620877
3 0.6 1.5504000 1.6489406 0.0985406
4 0.8 1.9884800 2.1272295 0.1387495
5 1.0 2.4581760 2.6408591 0.1826831
6 1.2 2.9498112 3.1799415 0.2301303
7 1.4 3.4517734 3.7324000 0.2806266
8 1.6 3.9501281 4.2834838 0.3333557
9 1.8 4.4281538 4.8151763 0.3870225
10 2.0 4.8657845 5.3054720 0.4396874
Khi đó với y (t) là nghiệm chính xác của bài toán giá trị đầu
y 0 (t) = f (t, y ), a ≤ t ≤ b, y (a) = α và y0 , y1 , . . . , yn là nghiệm
xấp xỉ của bài toán cho bởi công thức Euler, khi đó với mỗi k = 0, 1, . . . , n
hM L(tk −a)
|y (tk ) − yk | ≤ [e − 1]
2L
yk + hf (tk , yk ).
Ví dụ
Sử dụng phương pháp Euler cải tiến để xấp xỉ nghiệm của bài toán Cauchy
0
y (t) = y − t 2 + 1, 0 6 t 6 2,
y (0) = 0.5
với n = 10. Tại những điểm nút chia so sánh giá trị gần đúng với giá trị
chính xác, biết nghiệm chính xác của bài toán là y (t) = (t + 1)2 − 0.5e t .
2−0
Với n = 10 thì h = = 0.2, y0 = 0.5. Công thức tính nghiệm gần
10
đúng là
f (tk , yk ) + f (tk+1 , yk + hf (tk , yk ))
yk+1 = yk + h
2
với k = 0, 1, . . . , 9.
Bấm máy.
Y = Y + 0.1 × (Y − M 2 + 1 + Y + 0.2(Y − M 2 + 1) − (X + 0.2)2 + 1) :
M = M + 0.2
1 CALC Y = 0.5 = M = 0 =
2 Y =, M = 0.2
k tk yk y (tk ) |y (tk ) − yk |
0 0.0 0.5 0.5000000 0.0000000
1 0.2 0.826 0.8292986 0.0032986
2 0.4 1.20692 1.2140877 0.0071677
3 0.6 1.6372424 1.6489406 0.0116982
4 0.8 2.110235728 2.1272295 0.0169938
5 1.0 2.617687588 2.6408591 0.0231715
6 1.2 3.149578858 3.1799415 0.0303627
7 1.4 3.693686206 3.7324000 0.0387138
8 1.6 4.235097172 4.2834838 0.0483866
9 1.8 4.755618549 4.8151763 0.0595577
10 2.0 5.23305463 5.3054720 0.0724173
Bài tập
Sử dụng công thức Euler và công thức Euler cải tiến để xấp xỉ nghiệm của
các bài toán sau
1 y 0 = te 3t − 2y , 0 ≤ t ≤ 1, y (0) = 0 với h = 0.5.
2 y 0 = cos 2t + sin 3t, 0 ≤ t ≤ 1, y (0) = 1 với h = 0.25
3 y 0 = 1 + y /t, 1 ≤ t ≤ 2, y (1) = 2 với h = 0.25.
1+t
4 y0 = , 1 ≤ t ≤ 2, y (1) = 2, với h = 0.25
1+y
h2 00 h3
y (tk+1 ) = y (tk ) + hy 0 (tk ) + y (tk ) + y 000 (ξ)
2 3!
h2 0 h3
= y (tk ) + hf (tk , y (tk )) + f (tk , y (tk )) + y 000 (ξ)
2 3!
Ta lại có
∂f ∂f
f 0 (tk , y (tk ) = (tk , y (tk )) + (tk , y (tk )).y 0 (tk )
∂t ∂y
Chọn a1 , α, β thỏa
h h
1 = a1 , = a1 α, f (tk , y (tk )) = a1 β
2 2
ta được
h h
a1 = 1, α= , β= f (tk , y (tk ))
2 2
Vậy
h h
y (tk+1 ) ≈ y (tk ) + hf tk + , y (tk ) + f (tk , y (tk ))
2 2
y0 = α
h h
yk+1 = yk + h f tk + , yk + f (tk , yk )
2 2
Nếu ta sử dụng
a1 f (t, y ) + a2 f (t + α, y + βf (t, y ))
1
và đồng nhất các hệ số, ta có a1 = a2 = và α = β = h. Ta có công
2
thức Euler cải tiến
Công thức Euler cải tiến
y0 = α
h
yk+1 = yk + [f (tk , yk ) + f (tk+1 , yk + hf (tk , yk ))]
2
Công thức Runge-Kutta có độ chính xác cao hơn công thức Euler, vì dùng
khai triển Taylor nghiệm y = y (x) của bài toán (1) với nhiều số hạng hơn.
Sử dụng quá trình xây dựng trên đối với công thức Taylor bâc cao hơn, ta
có thể xây dựng Phương pháp Runge - Kutta với các bậc cao, và phổ biến
nhất là bậc 4
1
yk+1 = y (tk + h) ≈ yk + (K1k + 2K2k + 2K3k + K4k )
6
K1k = hf (t
k , yk )
K1k
h
K2k = hf tk + , yk +
2 2
K2k
h
K3k
= hf tk + , yk +
2 2
Kk
k
= hf (tk + h, yk + K3 )
4
Ví dụ
Sử dụng phương pháp Runge-Kutta bậc 4 để xấp xỉ nghiệm của bài toán
Cauchy 0
y (x) = y − t 2 + 1, 0 6 t 6 2,
y (0) = 0.5
với n = 10. Tại những điểm nút chia so sánh giá trị gần đúng với giá trị
chính xác, biết nghiệm chính xác của bài toán là y (t) = (t + 1)2 − 0.5e t .
Giải.
2−0
Với n = 10 thì h = = 0.2, tk = 0.2k, y0 = 0.5. Ta có
10
1
y (0.2) ≈ y1 = y0 + (K10 + 2K20 + 2K30 + K40 )
6
1
= 0.5 + (A + 2B + 2C + D) ≈ 0.8292933
6
Shift - STO - F
k tk yk y (tk ) |y (tk ) − yk |
0 0.0 0.5000000 0.5000000 0.0000000
1 0.2 0.8292933 0.8292986 0.0000053
2 0.4 1.2140762 1.2140877 0.0000114
3 0.6 1.6489220 1.6489406 0.0000186
4 0.8 2.1272027 2.1272295 0.0000269
5 1.0 2.6408227 2.6408591 0.0000364
6 1.2 3.1798942 3.1799415 0.0000474
7 1.4 3.7323401 3.7324000 0.0000599
8 1.6 4.2834095 4.2834838 0.0000743
9 1.8 44.8150857 4.8151763 0.0000906
10 2.0 5.3053630 5.3054720 0.0001089
Bài tập
Sử dụng công thức Runge - Kutta bậc 4 để xấp xỉ nghiệm cho các phương
trình sau
y y 2
1 y0 = − với 1 ≤ t ≤ 2, y (1) = 1 và h = 0.1, nghiệm chính
t t
xác y (t) = t/(1 + ln t).
y y 2
2 y0 = 1 + + với 1 ≤ t ≤ 3, y (1) = 0 và h = 0.2, nghiệm chính
t t
xác y (t) = t tan(ln t).
3 y 0 = −5y + 5t 2 + 2t với 0 ≤ t ≤ 1, y (0) = 1/3 và h = 0.1, nghiệm
1
chính xác y (t) = t 2 + e −5t .
3
H
Chia đoạn [t0 , t0 + H] thành n đoạn nhỏ bằng nhau có độ dài h = . Các
n
điểm chia là tk = t0 + kh, k = 0, 1, . . . , n. Giá trị gần đúng tại điểm tk của
x(t) là xk = x(tk ), của y (t) là yk = y (tk )
x(tk ) ≈ xk = xk−1 + hf (tk−1 , xk−1 , yk−1 )
y (tk ) ≈ yk = yk−1 + hg (tk−1 , xk−1 , yk−1 )
k = 1, 2, . . . , n
K1x = hf (tk−1 , xk−1 , yk−1 )
K1y = hg (tk−1 , xk−1 , yk−1 )
K2x = hf (tk−1 + h, xk−1 + K1x , yk−1 + K1y )
K2y = hg (tk−1 + h, xk−1 + K1x , yk−1 + K1y )
1
x(tk ) ≈ xk = xk−1 + (K1x + K2x )
2
1
y (tk ) ≈ yk = yk−1 + (K1y + K2y )
2
k = 1, 2, . . . , n
Ví dụ
Cho hệ 0
x (t) = tx − 2y + 1
0
y (t) = 2x + ty + sin t
, t>1
x(1) = 0.25
y (1) = 0.75
Sử dụng công thức Euler cải tiến để xấp xỉ giá trị của x(t) và y (t) tại
t = 1.2 với bước h = 0.2.
1
x(1.2) ≈ x1 = x0 + (K1x + K2x ) = 0.1153
2
1
y (1.2) ≈ y1 = y0 + (K1y + K2y ) = 1.2325
2
được chuyển về hệ phương trình vi phân cấp 1 bằng cách đặt y (t) = x 0 (t)
0
x (t) = f (t, x(t), y (t)) = y
0
y (t) = g (t, x(t), y (t)) = F (t, x, y )
x(t0 ) = α
y (t0 ) = β
Ví dụ
Cho phương trình vi phân cấp 2
Đặt y (t) = x 0 (t). Phương trình đã cho được biến đổi thành hệ
0
x (t) = f (t, x(t), y (t)) = y
0
y (t) = g (t, x(t), y (t)) = −2x + 2y + e 2t sin t
x(0) = −0.4
y (0) = −0.6
Với h = 0.1 ta có
K1x = h.yk−1
K1y = h(−2x 2tk−1 . sin t
k−1 + 2yk−1
+e k−1 )
K1y
K2x = h yk−1 +
2
h K1x K1y
K2y = hg tk−1 + , xk−1 + , yk−1 +
2 2 2
h K2x K2y
K3x = hf tk−1 + , xk−1 + , yk−1 +
2 2 2
h K2x K2y
K3y = hg tk−1 + , xk−1 + , yk−1 +
2 2 2
K4x = hf (tk−1 + h, xk−1 + K3x yk−1 + K3y ),
K4y = hg (tk−1 + h, xk−1 + K3x , yk−1 + K3y )
1
x(tk ) ≈ xk = xk−1 + (K1x + 2K2x + 2K3x + K4x )
6
1
y (tk ) ≈ yk = yk−1 + (K1y + 2K2y + 2K3y + K4y )
6
với k = 1, 2, . . . , n.
PHƯƠNG TRÌNH VI PHÂN 40 / 56
Hệ phương trình vi phân Công thức Runge-Kutta bậc bốn
tk x(tk ) xk x 0 (tk ) yk
0.0 −0.4000 −0.4000 −0.60000 −0.6000
0.1 −0.4617 −0.4617 −0.6316 −0.6316
0.2 −0.5256 −0.5256 −0.6401 −0.6401
0.3 −0.5886 −0.5886 −0.6136 −0.6136
0.4 −0.6466 −0.6466 −0.5366 −0.5366
Các phương pháp tìm nghiệm gần đúng của phương trình vi phân
thường đòi hỏi các điều kiện được cho tại một thời điểm ban đầu nào
đó.
Đối với phương trình vi phân bậc hai, ta cần 2 giá trị y (x0 ) và y 0 (x0 ).
Tuy nhiên, nhiều bài toán trong thực tế cho thấy điều kiện của hàm
cần tìm được cho tại nhiều thời điểm khác nhau. Vấn đề này dẫn tới
việc tìm nghiệm gần đúng của 1 dạng bài toán thứ hai được gọi là bài
toán biên.
Introduction
A common problem in civil engineering concerns the deflection of a beam of rectangular
cross section subject to uniform loading while the ends of the beam are supported so that
they
Xétundergo no deflection.
bài toán
S S
0 l x
w(x)
Suppose that l, q, E, S, and I represent, respectively, the length of the beam, the intensity
of the uniform load, the modulus of elasticity, the stress at the endpoints, and the central
moment of inertia. The differential equation approximating the physical situation is of the
form
d2w S qx
(x) = w(x) + (x − l),
dx 2 EI 2EI
where w(x) is the deflection a distance x from
PHƯƠNG theVI left
TRÌNH PHÂNend of the beam. Since no deflection
43 / 56
Bài toán biên tuyến tính cấp 2 Đặt vấn đề
Trong phần này chúng ta chỉ xét bài toán biên của phương trình vi
phân thường tuyến tính cấp hai với điều kiện biên được cho ở 2 điểm
có dạng
Chọn số tự nhiên bất kỳ n > 0. Chia đều đoạn [a, b] thành n đoạn bởi
các điểm chia x0 = a, xk = x0 + kh, k = 1, 2, . . . , n − 1, xn = b với
b−a
h= .
n
Tại các nút xk , k = 1, 2, . . . , n − 1 bên trong đoạn [a, b] sử dụng công
thức sai phân hướng tâm, ta có
∀k = 1, 2, . . . , n − 1.
Đây chính là hệ phương trình đại số tuyến tính cấp
n − 1 : AY = B với A là ma trận
2p1 p1 q1
r 1 − 2 2
+ 0 ... 0
p2 hq2 h 2p 2h
2 p2 q2
− r2 − 2 + ... 0
A= h 2 2h h h 2 2h
... ... ... ... ...
2pn−1
0 0 0 . . . rn−1 −
h2
PHƯƠNG TRÌNH VI PHÂN 47 / 56
Bài toán biên tuyến tính cấp 2 Phương pháp sai phân hữu hạn
Y = [y1 , y2 , . . . , yn−1 ]T
và p
1 q1
f1 − − α
h2 2h
f2
B=
...
p fn−2 q
n−1 n−1
fn−1 − + β
h2 2h
Ví dụ
Xét bài toán biên
y 00 − y 0 − 2y = cos x, π
0<x <
π 2
y (0) = −0.3, y ( ) = −0.1
2
có nghiệm chính xác
Sử dụng phương pháp sai phân hữu hạn xấp xỉ nghiệm gần đúng và so
π
sánh với nghiệm chính xác trong trường hợp h = .
8
Ta có hệ phương trình
y0 = −0.3, y4 =−0.1
1 −1 2
1 −1
− yk−1 + −2 − 2 yk + + yk+1 = cos(xk )
h2 2h h h2 2h
∀k = 1, 2, 3.
y0 = −0.3, y4 = −0.1
1 2
( h2 + 2h )y0 + (−2 − h2 )y1 + ( h12 − 2h
1 1
)y2 = cos( π8 )
⇔
( 12 + 2h
1
)y1 + (−2 − h22 )y2 + ( h12 − 2h
1
)y3 = cos( π4 )
1h
1
)y2 + (−2 − h22 )y3 + ( h12 − 2h
1
)y4 = cos( 3π
( h2 + 2h 8
)
(−2 − h22 )y1 +( h12 − 2h
1
cos( π8 ) − ( h12 + 2h
1
)y2 +0y3 = )y0
⇔ ( 1 + 2h
1
)y1 +(−2 − h22 )y2 +( h12 − 2h
1
)y3 = cos( π4 )
h2
0y1 +( h12 + 2h
1
)y2 +(−2 − h22 )y3 = cos( 3π
8
) − ( h12 − 2h1
)y4
Bấm máy.
π
−Shift+STO+M
8
Mode - eqn - anx+bny+cnz=dn
k xk yk y (xk ) |y (xk ) − yk |
0 0 −0.30000 −0.30000 0.00000
π
1 −0.31569 −0.31543 0.00025
8
π
2 −0.28291 −0.28284 0.00007
4
3π
3 −0.20700 −0.20719 0.00019
8
π
4 −0.10000 −0.10000 0.00000
2
Bài tập
1 Sử dụng phương pháp sai phân hữu hạn giải bài toán
y 00 = 2y 0 − y + xe x − x 0 ≤ x ≤ 2, y (0) = 0, y (2) = −4
với h = 0.5 và so sánh sai số với nghiệm là
y (x) = 61 x 3 e x − 35 xe x + 2e x − x − 2,
2 Sử dụng phương pháp sai phân hữu hạn giải bài toán
y 00 = 4(y − x), 0 ≤ x ≤ 1, y (0) = 0, y (1) = 2
1 1
với h = và h = và so sánh sai số với nghiệm là
2 4
y (x) = e 2 (e 4 − 1)−1 (e 2x − e −2x ) + x,
3 Sử dụng phương pháp sai phân hữu hạn giải bài toán
π π
y 00 + 4y = cos x, 0 ≤ x ≤ , y (0) = 0, y( ) = 0
4 4
π
với h = 8 và so sánh sai số với nghiệm là
√
−1 2
y (x) = 3 cos 2x − 6 sin 2x + 13 cos x.
PHƯƠNG TRÌNH VI PHÂN 54 / 56
Bài toán biên tuyến tính cấp 2 Ví dụ
Sử dụng phương pháp sai phân hữu hạn giải bài toán
1 y 00 = −(x − 1)y 0 + 2y + (1 − x 2 )e −x , 0 ≤ x ≤ 1, y (0) =
−1, y (1) = 0 với h = 14 .
2 y 00 = x −1 y 0 + 3x −2 y + x −1 − 1, 1 ≤ x ≤ 2, y (1) = y (2) = 0, với
h = 0.5