Professional Documents
Culture Documents
Numerical Method
Numerical Method
Numerical Method
May 29
• Phương pháp Cramer, phương pháp thế, phương pháp sử dụng ma trận nghịch đảo.
• Phương pháp khử Gauss, Gauss-Jordan. Thực hiện các thao tác hàng.
• Phân tích nhân tử. Nếu phân tích A = LU , với L là ma trận tam giác dưới và U là
ma trận tam giác trên, thì có thể tính y từ Ly = b, rồi tính được x từ y = U x. Một số
phương pháp phân tích dưới đây có thể áp dụng:
– Phương pháp Cholesky: Chỉ áp dụng khi A là ma trận xác định dương. Ta
1
phân tích A = L ● LT , với L là ma trận tam giác dưới. Xác định L:
¯
U
√ aj1
l11 = a11 , lj1 = (2 ≤ j ≤ n)
l11
¿
Á j−1
ljj = Á
Àa − ∑ l 2
jj js (2 ≤ j ≤ n)
s=1
1 j−1
lpj = (apj − ∑ ljs .lps ) (2 ≤ j, j + 1 ≤ p ≤ n)
ljj s=1
⎡ 9 −3 −3⎤
⎢ ⎥
⎢ ⎥
A = ⎢−3 10 1 ⎥
⎢ ⎥
⎢−3 1 5 ⎥
⎣ ⎦
Phân tích A theo phương pháp Cholesky và Doolittle. Áp dụng giải hệ phương trình
Ax = b, với b = [−9, −1.5, 5]T
Giải:
Phương pháp Gauss-Jordan. Đưa về ma trận bậc thang thu gọn.
⎡ 9 −3 −3 −9⎤⎥ ⎡ 0 27 0 −13.5⎤ ⎡−3 10 1 −1.5⎤
⎢ ⎢ ⎥ ⎢ ⎥
⎢ ⎥ 3D2 +D1 →D1 ⎢ ⎥ ⎢ ⎥
⎢−3 10 1 −1.5⎥ ÐÐÐÐÐÐ→ ⎢−3 10 1 −1.5⎥ Ð → ⎢ ⎥
⎢ ⎥ D2 −D3 →D3 ⎢ ⎥ ⎢ 0 1 0 −0.5⎥
⎢−3 1 5 5⎥⎦ ⎢ 0 9 −4 −6.5⎥ ⎢ 0 9 −4 −6.5⎥
⎣ ⎣ ⎦ ⎣ ⎦
⎡−3 10 1 −1.5⎤ ⎡1 0 0 ⎤
−1⎥
9D2−D3 →D3 ⎢
⎢ ⎥ 10D +D −D →D ⎢
⎥ 1 ⎢ ⎥
ÐÐÐÐÐÐ→ ⎢ 0 1 0 −0.5⎥ ÐÐÐÐÐÐÐÐÐ → ⎢0 1 0 −0.5⎥
2 3 1
D →D3 ⎢ ⎥ D →D1 ⎢ ⎥
⎢ 0 0 1 0.5⎥ ⎢0 0 1 0.5⎥
1 1
4 3 3 1
⎣ ⎦ ⎣ ⎦
Phương pháp Cholesky. Ta xây L theo từng cột. Tại mỗi cột j hiện tại, mình tính phần
tử trên đường chéo ljj trước tiên (bởi các phần tử cột trước); rồi bắt đầu tính các phần tử
cùng cột nhưng hàng dưới, tăng dần theo hàng.
⎡ 3 0 0⎤ ⎡y1 ⎤ ⎡ −9⎤ ⎡ −3⎤
⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥
Ta có: Ly = b hay ⎢−1 3 0⎥ ⎢y2 ⎥ = ⎢−1.5⎥, suy ra y = ⎢−1.5⎥
⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢−1 0 2⎥ ⎢y3 ⎥ ⎢ 5⎥ ⎢ 1⎥
⎣ ⎦⎣ ⎦ ⎣ ⎦ ⎣ ⎦
⎡3 −1 −1⎤ ⎡x1 ⎤ ⎡ −3⎤ ⎡ −1⎤
⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥
LT x = y hay ⎢0 3 0 ⎥ ⎢x2 ⎥ = ⎢−1.5⎥, suy ra x = ⎢−0.5⎥
⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢0 0 2 ⎥ ⎢x3 ⎥ ⎢ 1⎥ ⎢ 0.5⎥
⎣ ⎦⎣ ⎦ ⎣ ⎦ ⎣ ⎦
2
Phương pháp Doolitle. Xây các phần tử trên đường chéo trước, rồi xây L đi xuống và U
đi sang phải.
⎡ 1 0 0⎤ ⎡9 −3 −3⎤
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
A = ⎢−1/3 1 0⎥ ● ⎢0 9 0⎥
⎢ ⎥ ⎢ ⎥
⎢−1/3 0 1⎥ ⎢0 0 4⎥
⎣ ⎦ ⎣ ⎦
´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¶ ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¶
L U
(a) Tính toán 3 lần lặp, sai số 10−3 các phương pháp trên, giải gần đúng hệ phương
trình Ax = b với b = [−9, −1.5, 5]T , x(0) = 0 và
⎡ 9 −3 −3⎤
⎢ ⎥
⎢ ⎥
A = ⎢−3 10 1⎥
⎢ ⎥
⎢−3 1 5⎥
⎣ ⎦
(a) Phần cộng, nhân ma trận, tính ma trận nghịch đảo có thể bấm máy.
⎡ 1 −1/3 −1/3⎤
⎢ ⎥
⎢ ⎥
Ta chuyển A = ⎢−0.3 1 0.1⎥⎥
⎢
⎢−0.6 0.2 1⎥⎦
⎣
⎡ 0 1/3 1/3⎤ ⎡ −1⎤
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
Phương pháp Jacobi. C = I − A = ⎢0.3 0 −0.1 ⎥ , b = ⎢−0.15⎥.
⎢ ⎥ ⎢ ⎥
⎢0.6 −0.2 0⎥⎦ ⎢ 1⎥⎦
⎣ ⎣
i xTi [Cxi ]T
0 [0, 0, 0] [0, 0, 0]
1 [−1, −0.15, 1] [0.283, −0.4, −0.57]
2 [−0.717, −0.55, 0.43] [−0.04, −0.258, −0.32]
3 [−1.04, −0.408, 0.68]
3
3 Nội suy
Với (i ∈ [0, n − 1]) xây dựng đa thức gi (x) cho đoạn [xi , xi+1 ]
gi (x) = ai (x − xi )3 + bi (x − xi )2 + ci (x − xi ) + di
(0,1,2) (0,1,2)
gi (xi ) = yi = fi và gi (xi+1 ) = gi+1 (xi + 1)
hi = xi+1 − xi , Si = gi (xi )(∀i = 0, .., n − 1) và Sn = Sn−1
′′
Ví dụ
Giải.
π 2π
(a) n = 3, x = [0, , , 0.5π]
3 3
Phương pháp Lagrange.
4
π π π
(x − )(x − )(x − 0.5π) π (x − 0)(x − )(x − 0.5π)
pn (x) = f (0) 6 3 + f( ) 3
π π 6 π π π π
(0 − )(0 − )(0 − 0.5π) ( − 0)( − )( − 0.5π)
6 3 6 6 3 6
π π π
π (x − 0)(x − 6 )(x − 0.5π) (x − 0)(x − )(x − )
6 3
+ f( ) + f (0.5π)
3 π π pi π π π
( − 0)( − )( − 0.5π) (0.5π − 0)(0.5π − )(0.5π − )
3 3 6 3 6 3
pn (x) = −0.11387x3 − 0.06547x2 + 1.02043x
https://atozmath.com/CONM/NumeInterPola.aspx?q=LI Lagrange
https://atozmath.com/CONM/NumeInterPola.aspx Newton
Phương pháp Spline.
S0 = f 2 (0) = 0
π
S3 = f 2 ( ) = −1
2
π
Do h0 = h1 = h2 =
6 √
π 2π π 36 3
S0 + S1 + S2 = ( − 1)
6 3 6 π 2
π 2π π 36 3 √
S1 + S2 + S3 = ( − 3)
6 3 6 π 2
Giải hệ ta có: S1 = −0.50998, S2 = −0.89213
5
4 Xấp xỉ bình phương tối thiểu
(a) Trình bày các phương pháp xấp xỉ bình phương tối thiểu rời rạc và liên tục.
⎛ 1 ⎞ 2
Áp dụng phương pháp xấp xỉ bình phương tối thiểu rời rạc cho f (x) = e−x /2
⎝ (2π)−0.5 ⎠
với x trên đoạn [0, 1].
(b) Tính bằng tay với 5 điểm mốc cách đều, xây dựng đa thức bậc 1, bậc 2 theo phương
pháp bình phương tối thiểu. Đánh giá sai số.
(a) Áp dụng phương pháp xấp xỉ bình phương tối thiểu liên tục cho f (x) = sin (x) với x
trên đoạn [0, π/2]. Đánh giá sai số.
Giải.
(a) Phương pháp xấp xỉ bình phương tối thiểu rời rạc và liên tục:
- Phương pháp xấp xỉ bình phương tối thiểu rời rạc:
• Bước 1: Xác định tập hữu hạn điểm rời rạc trên miền [a, b].
• Bước 2: Xác định hàm xấp xỉ P (xn ) = an xn + an−1 xn−1 + ... + a0 x0 với n <= m.
m
• Bước 3: Xác định sai số bình phương E = ∑ (f (xi ) − P (xi ))2
i=1
• Bước 1: Xác định hàm xấp xỉ P (xn ) = an xn + an−1 xn−1 + ... + a0 x0 với n <= m.
n b b
∑ ak ∫ xj+k dx = ∫ xj f (x) dx,
k=0 a a
i x f (x) x2 y2 xy
0 0 2.5066 0 6.2832 0
1 0.1 2.4941 0.01 6.2206 0.2494
2 0.2 2.457 0.04 6.0368 0.4914
3 0.3 2.3963 0.09 5.7424 0.7189
4 0.4 2.3139 0.16 5.3542 0.9256
sum 1 12.168 0.3 29.6372 2.3853
m m m
m ∑ xi y i − ∑ x i ∑ y i 5 ∗ 2.3853 − 1 ∗ 29.6372
a1 = i=1 i=1 i=1
= = −0.483
m
m( ∑ x2i ) − ( ∑ xi )2
m
5 ∗ 0.3 − 12
i=1 i=1
6
Ta có P (xi ) = 2.5302 − 0.483x
m
Sai số: E = ∑ (f (xi ) − P (xi ))2 ≈ 1.9072 ∗ 10− 3
i=1
Phần còn lại là huyền thoại, các thanh niên tự giải nốt.
(c) Đa thức bậc 2 có dạng P2 (x) = ax x2 + a1 x + a0 với:
π/2 π/2 π/2 π/2
a0 ∫ 1 dx + a1 ∫ x dx + a2 ∫ x2 dx = ∫ sin(x) dx
0 0 0 0
7
5 Tính gần đúng đạo hàm
Ví dụ
(a) Viết các công thức tính gần đúng đạo hàm bậc nhất và bậc 2. Áp dụng tính gần
1
đúng đạo hàm cho hàm số f (x) = e−x /2 trên [0, 1] với 5 điểm mốc cách
2
(2π)0.5
Giải.
(a) Chỉ cần chọn 1 phương pháp để tính.
Đạo hàm của f (x) tại x0 làlà:
f (x0 + h) − f (x0 )
f (x0 ) = lim
′
h→0 h
Từ đó có một các đơn giản để tính xấp xỉ đạo hàm của f (x0 ) là:
′
f (x0 + h) − f (x0 )
f (x0 ) ≈
′
h
với sai số
∣ hf (2) (ξ) ∣
E=
2
3-point
2h [f (x0 + h) − f (x0 − h)]
1
midpoint
h2 (3)
Sai số: 6 f (ξ1 ) với ξ1 ở giữa x0 − h và x0 + h
3-point
2h [−3f (x0 ) + 4f (x0 + h) − f (x0 + 2h)]
1
endpoint
h2 (3)
Sai số: 3 f (ξ0 ) với ξ0 ở giữa x0 và x0 + 2h
5-point
12h [f (x0 − 2h) − 8f (x0 − h) + 8f (x0 + h) − f (x0 + 2h)]
1
midpoint
h4 (5)
Sai số: 30 f (ξ) với ξ ở giữa x0 − 2h và x0 + 2h
5-point
12h [−25f (x0 ) + 48f (x0 + h) − 36f (x0 + 2h) + 16f (x0 + 3h) − 3f (x0 + 4h)]
1
endpoint
h4 (5)
Sai số: 5 f (ξ) với ξ1 ở giữa x0 và x0 + 4h
Đạo hàm
f (2) (x0 ) = h−2 .[f (x0 − h) − 2f (x0 ) + f (x0 + h)]
bậc 2
h2 (4)
Sai số: 12 f (ξ) với ξ ở giữa x0 − h và x0 + h
2h
1
⇔ f (0.2) = [−3f (0.2) + 4f (0.4) − f (0.6)]
′
2 ∗ 0.2
h2 (3) 0.22 (3)
Đánh giá sai số: E = 3 f (ξ) = 3 f (ξ) với ξ ∈ [0.2, 0.6]
8
hoặc
1
f (x0 ) = [f (x0 + h) − f (x0 − h)]
′
2h
1
⇔ f (0.2) = [f (0) + f (0.4)]
′
2 ∗ 0.2
Đánh giá sai số: E = h3 f (3) (ξ) = 0.22 (3)
(ξ) với ξ ∈ [0, 0.4]
2
6 f
Áp dụng công thức 5 điểm:
1
f (x0 ) = [−25f (x0 ) + 48f (x0 + h) − 36f (x0 + 2h) + 16f (x0 + 3h) − 3f (x0 + 4h)]
′
12h
1
⇔ f (0.2) = [−25f (0.2) + 48f (0.4) − 36f (0.6) + 16f (0.8) − 3f (1.0)]
′
12 ∗ 0.2
h4 (5) 0.24 (5)
Đánh giá sai số: E = 5 f (ξ) = 5 f (ξ) với ξ ∈ [0.2, 1.0]
hoặc
1
f (x0 ) = [f (x0 − 2h) − 8f (x0 − h) + 8f (x0 + h) − f (x0 + 2h)]
′
12h
1
⇔ f (0.2) = [f (−0.2) − 8f (0) + 8f (0.4) − f (0.6)]
′
12h
Đánh giá sai số: E = h30 f (5) (ξ) = 0.2 (5) (ξ) với ξ ∈ [−0.2, 0.6]
4 4
30 f
(Nhớ chú ý đừng như công thức 5-point midpoint này dính -0.2 ngoài khoảng [0,1] rồi)
Áp dụng công thức tính đạo hàm bậc 2:
(b)
Ví dụ
(a) Viết các công thức tính gần đúng tích phân theo công thức hình thang, công thức
Simpson và công thức điểm giữa. Áp dụng, tính gần đúng tích phân cho hàm số
1
f (x) = e−x /2 trên [0, 1] với 4 điểm mốc. Đánh giá sai số.
2
(2π)−0.5
(b) Tính bằng máy trên [0, 1] với 50 điểm mốc. Đánh giá sai số.
(a) Có 3 dạng:
Bảng 3: Phương pháp tính tích phân
h = (b − a)/n
Trapezoidal Rule Tn = h2 [f (x0 ) + 2f (x1 ) + ... + 2f (xn−1 ) + f (xn )]
Midpoint Rule Mn = h [f ( x0 +x
2
1
) + f ( x1 +x
2
2
) + ... + f ( xn−12+xn )]
Chẵn: x2, Lẻ: x4
Simpson Rule
Sn = h3 [f (x0 ) + 4f (x1 ) + 2f (x2 ) + ... + 2f (xn−2 ) + 4f (xn−1 ) + f (xn )]
9
√
Áp dụng: f (x) = 2π.e−x /2 , h = 0.25, Đáp án: 2.14473
2
Kết quả:
Trapezoidal Rule: 2.144681614275053
Midpoint Rule : 2.1140466356463916
Simpson Rule : 2.1447322933497492
Ví dụ
(a) Trình bày các phương pháp giải gần đúng PTVP bậc nhất.
Áp dụng giải PT y ′ = 2xy, y(1) = 1, h = 0.1, tính đến y2 . Đánh giá sai số.
(b) Lập trình tính đến y10 với h = 0.01. Đánh giá sai số.
(a) Phương trình vi phân là phương trình có dạng F (x, y, y ′ , ..., y (n)) = 0.
10
Bảng 4: Áp dụng các phương pháp xấp xỉ PTVP bậc nhất
Ví dụ
(a) Trình bày các phương pháp giải gần đúng hệ PTVP bậc nhất và bậc cao. Áp dụng
giải hệ sau:
√
y ′ = 3 y − tx′
x(0) = −2, x′ (0) = 0, y(0) = 8
Chuyển bài toán trên thành 1 hệ tương đương các phương trình vi phân bậc nhất
với các giá trị ban đầu. Lấy 2 bước với phương pháp Euler và độ dài bước h = 0.5
cho hệ này.
11
(b) Giải bằng máy với h = 0.01 trên đoạn [0, 1]. Đánh giá sai số.
(a) ● Hệ n PTVP bậc nhất có dạng: Y (x) = [y1 (x), y2 (x), ..., yn (x)]T
Khi đó: F (y, x) = dYdx(x) = [ y1dx
(x) y2 (x) (x) T
, dx , ..., yndx ]
Ta giải tương tự với các phương pháp nêu ở bài trước (cho PTVP bậc nhất), thay Y
thành vector.
● Đối với hệ PTVP bậc cao, ta đưa về hệ phương trình bậc nhất.
⎡x′ ⎤ ⎡ ⎤ ⎡−2⎤
⎢ ⎥ ⎢ √
z ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
Áp dụng. Đặt z = x′ , ta có F (x, y, z) = ⎢y ′ ⎥ = ⎢ 3 y − tz ⎥ , Y (0) = ⎢ 8 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢z ′ ⎥ ⎢e−z + x − cos (t)⎥ ⎢0⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦
i = 0 i = 1 i = 2
Y = [−2, 8, 0]T Y = [−2, 9, −1]T Y = [−2.5, 10.29, −1.08]T
F = [0, 2, −2]T F = [−1, 2.58, −0.159]T
(b) Kết quả chạy chương trình với h = 0.01 trên đoạn [0, 1]: (Tự chạy nha).
12
8 Tính gần đúng trị riêng bằng phương pháp lũy thừa
Ví dụ
(a) Trình bày các phương pháp tính gần đúng trị riêng trội nhất và véctơ riêng trội
nhất. Áp dụng tính với ma trận cấp 2 với 5 bước. Đánh giá sai số.
(b) Lập trình với ma trận cấp 10 với 50 bước. Đánh giá sai số.
Giải. Các phương pháp tính gần đúng trị riêng trội nhất và vector riêng trội nhất:
Ví dụ ma trận cấp 2:
3 2 1
A=[ ] , with x0 = [ ]
2 3 0
Euclidean Scaling.
13
14