Professional Documents
Culture Documents
Numerical Methods - Book
Numerical Methods - Book
5/2021
Mục lục
i
Đại học Xây dựng Bộ môn Toán Ứng dụng
Phần mềm Mathematica (gọi tắt Math) phục vụ việc học tập và kiểm tra của sinh viên ĐHXD được
cung cấp tại
tinyurl.com/dhxd-thtt
1. Lệnh
Mỗi cửa sổ của Math gồm các ô, mỗi ô được bao bởi dấu ngoặc bên trái gồm hai phần: phần Input chữ
đậm chứa các lệnh và Output hiển thị các kết quả tương ứng.
Lệnh gồm lệnh tính toán, lệnh gán biến, gán hàm và các lệnh (hàm) có sẵn của Math.
Khi con trỏ ở ô nào, bấm phím dịch Shift + Enter để thực hiện tuần tự các lệnh ở riêng ô đó. Sau
khi dịch, Math tự động gán nhãn In[n]:= cho phần lệnh và Out[n]= cho phần kết quả.
1
Đại học Xây dựng Bộ môn Toán Ứng dụng
2. Biến
Lệnh
var = expr
để gán biểu thức expr cho biến var. Sau phép gán này, var là biến xác định. Biến chưa sử dụng trong
phép gán nào gọi là biến bất định. Để đưa biến về biến bất định ta dùng lệnh:
Clear[var]
Clear[var1 , var2 , ...]
hoặc một trong hai lệnh sau để thoát toàn bộ
Quit
Exit
Biến % lưu kết quả của biểu thức gần đây nhất.
3. Biểu thức
Biểu thức toán học gồm các hằng số, biến, các phép toán(1) +, -, *, /, ^, dấu nhóm biểu thức ( ) và
các hàm:
Hàm lý thuyết Hàm trong Math
sin x Sin[x]
cos x Cos[x]
tan x Tan[x]
cot x Cot[x]
(1)
Tạo nhanh phân số và lũy thừa bằng phím tắt Ctrl + ∧ , Ctrl + 6.
arcsin x ArcSin[x]
arccos x ArcCos[x]
arctan x ArcTan[x]
arccot x ArcCot[x]
ln x Log[x]
loga x Log[a, x]
|x | Abs[x]
Một số thao tác cơ bản với biểu thức:
• N[expr, n] cho kết quả của biểu thức expr với n chữ số chắc. Hàm N[expr] hoặc expr//N
cho kết quả trên ứng với n = 6 mặc định của phần mềm.
• Expand[expr] khai triển biểu thức expr, nếu biểu thức là đa thức thì kết quả là đa thức dạng
chuẩn.
4. Lệnh có sẵn
TênLệnh[tham số 1 , tham số 2 , ...]
trong đó
• TênLệnh có ký tự đầu viết hoa, nếu là từ ghép thì viết hoa các ký tự đầu.
• Mỗi tham số có thể gồm nhiều lệnh con. Khi đó các lệnh con đó ngăn nhau bởi dấu ;
Lệnh kết thúc bởi dấu ; sẽ không hiển thị kết quả, ngoại trừ Print, Plot.
• Tham số phương trình có thể gồm nhiều phương trình, khi đó các phương trình gom vào trong
dấu { } và ngăn cách bởi dấu ,
Tham số biến cũng vậy.
2. Véctơ
Khai báo
Phép toán
Cho hai véctơ cùng cỡ u = (u1 , u2 , ... , un ), v = (v1 , v2 , ... , vn ) và k là số hoặc biến bất định, ta có
Lệnh Kết quả
u+v u + v = (u1 + v1 , u2 + v2 , ... , un + vn )
u-v u − v = (u1 − v1 , u2 − v2 , ... , un − vn )
k*u ku = (k u1 , k u2 , ... , k un )
n
X
u.v hu, v i = ui vi .
i=1
Ngoài ra các phép toán khác như *, /, ^, !, tác động hàm. . . được thực hiện một cách tự nhiên theo vị
trí tương ứng.
3. Ma trận
Khai báo
2 −1 3
Ma trận A = được khai báo bằng hai cách
0 4 1
Cách 1: Xem mỗi hàng của A là một véctơ và A là véctơ lập từ các hàng đó
Phép toán
Tương tự véctơ, ta cũng có phép toán tự nhiên theo vị trí tương ứng của ma trận. Ngoài ra các lệnh
quan trọng sau:
Lệnh Kết quả Chú thích
A.B AB
Inverse[A] A−1
MatrixPower[A, k] Ak số nguyên k có thể 6 0
T
Transpose[A] A
Det[A] |A|
MatrixRank[A] r (A)
đa thức đặc trưng, λ là
CharacteristicPolynomial[A, λ] P λ
biến bất định.
Giả sử ma trận vuông A có các véctơ riêng ui = (ui1 , ui2 , ...) ứng với giá trị riêng λi , i = 1, 2, ... Khi đó
lệnh
Eigensystem[A]
cho kết quả {Λ, U} trong đó Λ là véctơ có thành phần thứ i là λi , U là ma trận có hàng thứ i là ui .
−6 −1 −7
Ví dụ: Cho ma trận A = 3 5 −1. Viết lệnh và trình bày kết quả cho yêu cầu:
4 1 5
i) Tìm đa thức đặc trưng, từ đó tìm các giá trị riêng của A
ii) Cho biết các véctơ riêng của A kèm theo giá trị riêng tương ứng
iii) Ma trận A có chéo hóa được không, vì sao?
HD:
Lệnh Kết quả
−6 −1 −7
A = 3 5 −1;
4 1 5
λ = −2
P λ =0⇔ . A có hai giá trị riêng λ1 = −2, λ2 = 3
λ=3 (bội 2)
{{3, 3, −2}, {{−1, 2, 1}, {0, 0, 0},
Eigensystem[A]
{−2, 1, 1}}}
ii)Véctơ riêng ứng với 3 là u1 = (−1, 2, 1), ứng với −2 là u2 = (−2, 1, 1)
iii) A không chéo hóa được vì không có hệ 3 véctơ riêng độc lập tuyến tính.
Xét hệ phương trình AX = B trong đó A, X , B là các ma trận cỡ tương thích, X là biến ma trận cần tìm.
Hàm
LinearSolve[A, B]
có thể cho các kết quả sau:
• Thông báo
LinearSolve::nosol :
Linear equation encountered which has no solution...
cho biết hệ vô nghiệm.
• Khi hệ có nghiệm duy nhất hoặc vô số nghiệm thì kết quả là một nghiệm riêng X0 của hệ (nghiệm
nào đó thỏa mãn hệ). Ta dùng tiếp lệnh
Nullspace[A]
để xác định cơ sở của không gian nghiệm N của hệ thuần nhất AX = 0. Nghiệm của hệ có dạng:
X0 + N
x1 − 2x2 + 7x3 + 2x4 = 1
Ví dụ: Giải hệ phương trình
x1 + x2 − 8x3 + x4 = 4
HD:
Trình bày Lệnh
1 −2 7 2 1 −2 7 2
*A= , b = (1, 4) A=
1 1 −8 1 1 1 −8 1
b = {1, 4}
* PT có nghiệm riêng X0 = (3, 1, 0, 0) X0 = LinearSolve[A, b]
* Không gian nghiệm N của PT AX = 0 có cơ sở {u1 = U = NullSpace[A]
(−4, 1, 0, 3), u2 = (3, 5, 1, 0)}
* PT có nghiệm tổng quát: X = X0 + c1 u1 + c2 u2 hay x1 = n = Length[U]
3 − 4c1 + 3c2 , x2 = 1 + c1 + 5c2 , x3 = c2 , x4 = 3c1 hs = Table[C[i], {i, 1, n}]
X = X0 + hs.TN
• Phép gán /.x-> được thực hiện sau mọi phép toán khác.
Tương tự, lệnh f/.{x->a , y->b} khi thay đồng thời x, y vào f , và f/.x->X với X là véctơ, cho
véctơ các giá trị tương ứng của f .
Nếu biểu thức đã khai báo dưới dạng hàm, ta dùng lệnh f[a], f[a,b], f[X]
Ví dụ:
Lệnh Kết quả
(2x + y )|x →(1+x −y ) =
2x+y/.x->1+x-y/.y->x y →x
2 + x − y) + y y →x = 2 + x
(1
2x+y/.{x->1, y->2} 5
2y/.y->{-1,0,1,2} {-2,0,2,4}
2. Giới hạn
Lệnh Kết quả
Limit[f, x->a] lim f
x →a
Limit[f, x->a, Direction->1] lim f
x →a−
Limit[f, x->a, Direction->-1] lim f
x →a+
3. Đạo hàm
Lệnh Kết quả
D[f, x] f 0 (x)
D[f, {x,k}] f (k ) (x)
D[f, {x,k}]/.x->a f (k ) (a)
ta dùng lệnh
n
X D[f, {x,k}]/.x->a
(x − a)k
k=0
k!
hoặc hàm tắt Series[f, {x,a,n}]
Ví dụ: Hàm Series[Ex , {x, 0, 3}] cho:
x2 x3
ex = 1 + x + + + O x4 .
2 6
5. Tích phân
Ngoài cách nhập mẫu tính tích phân từ công cụ BasicInput, ta có thể dùng lệnh
Lệnh Kết quả
Z
Integrate[f, x] fdx
Z b
Integrate[f, {x,a,b}] fdx
Za b Z d
Integrate[f, {x,a,b}, {y,c,d}] dx fdy
a c
trong đó x, y là các biến bất định.
Một số tích phân suy rộng phụ thuộc tham số chỉ hội tụ với ràng buộc nhất định của tham số. Khi đó
ta bổ sung ràng buộc là tham số cuối của lệnh Integrate
Assumptions -> điều kiện
trong đó điều kiện gồm các ràng buộc liên kết với nhau bởi toán tử logic, hoặc thường tổ hợp lại trong
dấu { } nếu chỉ có toán tử “và”.
Z ∞
Ví dụ: e−ax dx hội tụ khi a > 0. Các lệnh
0
IntegrateZ[E−a∗x , {x,0,∞} , Assumptions -> a>0]
∞
Simplify[ E−a∗x dlx , a>0]
0
1
đều cho kết quả .
a
( ( (
y 0 = 2y − 3z y (0) = −1 y = 5e−x − 6ex
Ví dụ: với có nghiệm :
z 0 = y − 2z z (0) = 3 z = 5e−x − 2ex
DSolve[
{y0 [x] == 2y[x] − 3z[x] , z0 [x] == y[x] − 2z[x] , y[0] == −1 , z[0] == 3} ,
{y[x] , z[x]} ,
x]
Simplify[%]
1. If - Rẽ nhánh
If[điều kiện, khối lệnh 1, khối lệnh 2*]
trong đó nếu điều kiện đúng thì thực hiện khối lệnh 1, ngược lại thực hiện khối lệnh 2 (không
có tùy chọn này tức là không thực hiện gì).
• mỗi khối lệnh có thể gồm nhiều lệnh - ngăn cách bởi dấu ;
Khi lệnh rẽ nhiều nhánh được điều khiển bởi nhiều điều kiện, có thể dùng các hàm If lồng nhau, tuy
nhiên nên dùng hàm Piecewise bằng cách gõ [Esc]pw[Esc] để tạo mẫu, Ctrl+Enter để tạo thêm
nhánh. (
khởi tạo
khối lệnh
điều kiện
điều khiển
• điều khiển viết trước nhưng thực hiện sau, và có thể không có (lệnh For chỉ có ba tham số). Ta
cũng viết
For[khởi tạo, điều kiện, khối lệnh ; điều khiển]
tức là đặt các lệnh điều khiển vào phần khối lệnh.
• khởi tạo, điều khiển, khối lệnh có thể gồm nhiều lệnh.
Ví dụ: Lệnh
For[i=1 , i ≤ 50 , i++ , i=i2 +1]
i
cho kết quả i = 123, được mô tả trong bảng sau:
Bước lặp i điều kiện i1 (i=i2 +1) i2 (i++)
1 1 1 ≤ 50 = T 2 3
2 3 3 ≤ 50 = T 10 11
3 11 11 ≤ 50 = T 122 123
123 123 ≤ 50 = F dừng
• nếu không có biến địa phương, dòng khai báo biến có dạng:
{},
• biểu thức cuối cùng của khối lệnh (không có dấu kết thúc ;) trả về kết quả của chương trình con.
§5. Sai số
Sai số mô hình
Bài tập
1. Tìm khai triển Mac-Laurin của hàm số f (x) = ex ln (1 + sin x) tới cấp 5 bằng hai cách.
2. Viết chương trình con tìm giá trị lớn nhất và giá trị nhỏ nhất của dãy: Đầu vào: dãy u, Đầu ra: {LN, NN}.
3. Viết chương trình con tìm vị trí của số x trong dãy u: Đầu vào: x, u; Đầu ra: vt.
i) f ∈ C [a, b].
Khi đó
a) ∃x ∗ ∈ [a, b] : f (x ∗ ) = 0.
b) Xét dãy đoạn [an , bn ] xác định bởi
i) [a0 , b0 ] = [a, b].
an + bn
ii) Đặt cn = . Nếu f (an ) f (cn ) < 0, đặt [an+1 , bn+1 ] = [an , cn ]; ngược lại, tức là f (cn ) f (bn ) ≤ 0,
2
đặt [an+1 , bn+1 ] = [cn , bn ].
thì
i) an , bn −−−→ x ∗ .
n→∞
b−a
ii) ∀xn ∈ [an , bn ] : |xn − x ∗ | ≤ bn − an = (thường chọn xn = an ).
2n
[a0 , b0 ] ⊃ [a1 , b1 ] ⊃ ... là các khoảng chứa nghiệm x ∗ và
bn −1 − an −1 b−a
bn − an = = .
2 2n
12
Đại học Xây dựng Bộ môn Toán Ứng dụng
Giả sử
i) f 0 , f 00 không đổi dấu trên [a, b].
ii) f (a) f (b) < 0.
Khi đó
a) ∃!x ∗ ∈ (a, b) : f (x ∗ ) = 0.
b) Xét dãy {xn }:
i) x0 ∈ [a, b] : f (x0 ) f 00 > 0 (thường chọn x0 là a hoặc b).
ii) Công thức lặp
f (xn )
xn+1 = xn − (1.1)
f 0 (xn )
y y = f (x) y y = f (x)
a x∗ x a x∗ x
x3 x2 x1 x0 = b x3x2 x1 x0 = b
thì
i) {xn } đơn điệu và lim xn = x ∗ .
n→∞
Mặt khác f 0 (1) = 1 > 0, f 0 (4) = 40 > 0 ⇒ f 0 (x) > 0, ∀x ∈ [1, 4].
f (1) = −3 < 0, f (4) = 45 > 0.
ii-iv) f (4) f 00 > 0 ⇒ x0 = 4. Công thức lặp
M
và sai số |xn − x ∗ | ≤ |xn − xn−1 |2 =: εn trong đó
2m
n xn εn
0 4
1 2.875 13.9219
2 2.21883 4.73619
3 1.92841 0.927734
4 1.86641 0.0422842
5 1.86371 0.0000803536
6 1.86371 2.76859 · 10−10 (2)
n xn
0 4
1 2.875
2 2.56255
3 2.38103
1
Một ứng dụng đơn giản của công thức Newton, là tìm nghịch đảo x = của số thực a. Xét phương
a
trình
1
f (x) = − a = 0.
x
1 2
Ta có f 0 (x) = − 2
, f 00 (x) = . Theo công thức Newton
x x3
1
−a
f (xn ) xn
xn+1 = xn − = xn − = xn (2 − axn ) (∗)
f 0 (xn ) 1
−
xn2
1
Ví dụ: Tính gần đúng bằng dãy lặp trên tới khi có hai phần tử của dãy trùng nhau tới 5 chữ số sau
9.347
dấu phảy.
Với a = 9.347, có thể chọn x0 = 0.1, ta có |1 − ax0 | = 0.0653 < 1. Công thức lặp (∗) cho ta bảng giá
trị
n xn
1 0.10653
2 0.106984
3 0.106986
√
Một ứng dụng khác, khai căn x = a. Xét phương trình f (x) = x 2 − a = 0. Ta có f 0 (x) = 2x, f 00 (x) = 2,
và công thức lặp
f (xn ) xn2 − a 1 a
xn+1 = xn − = xn − = xn + .
f 0 (xn ) 2xn 2 xn
√
Ví dụ: Tính gần đúng 2.
Chọn x0 = 2. Ta có dãy nghiệm gần đúng tới khi hai phần tử liên tiếp trùng nhau tới 5 chữ số sau dấu
phảy:
n xn
1 1.5
2 1.41667
3 1.41422
4 1.41421
5 1.41421
Giả sử
i) g (x) ∈ [a, b] ∀x ∈ [a, b].
ii) g là ánh xạ co trên [a, b] tức là ∃q < 1 ∀x, y ∈ [a, b]:
Khi đó
a) ∃!x ∗ ∈ [a, b] : x ∗ = g (x ∗ ).
b) Xét dãy {xn }:
a+b
i) x0 ∈ [a, b] bất kì (thường chọn x0 = ).
2
ii) Công thức lặp
xn+1 = g (xn ) (1.4)
thì
i) lim xn = x ∗ .
n→∞
2 9 − x2
g 00 (x) = = 0 ⇔ x = 3 ∈ [1, 4]
9(x 2 + 3)5/3
(3)
Đánh giá bằng đồ thị 1.6 ≤ g (x) ≤ 2.6 + 0.2.
n xn εn
0 2.5
1 2.09917 0.247314
2 1.94927 0.0924898
3 1.8945 0.033789
4 1.87475 0.0121887
5 1.86766 0.0043737
...
9 1.86377 0.000071735
−4
Nghiệm gần đúng có sai số 10 : x9 = 1.86377.
v) Xét
qn −10 n 10−10 (1 − q)
|x1 − x0 | < 10 ⇒q <
1−q |x1 − x0 |
−10 (1 − q)
10
⇒ n > logq = 23.4491 ⇒ chọn n = 24.
|x1 − x0 |
2. Định lý Sturm
Định nghĩa 1. Đa thức P (x) gọi là không chứa bậc hai nếu không có đa thức Q (x) bậc dương sao cho
Q 2 | P.
P
Mệnh đề 1. Với mọi đa thức P (x), không chứa bậc hai.
gcd (P, P 0 )
P
Ngoài ra P và có cùng tập nghiệm.
gcd (P, P 0 )
(4)
Đánh giá bằng đồ thị q = 0.38 + 0.005.
Định lý 2. Dãy Sturm của đa thức một biến P (x) xác định bởi
P0 = P
P1 = P 0
Pi+1 = − Pi −1 mod Pi
đến khi Pk +1 = 0.
Ký hiệu V (a) là số lần đổi dấu của dãy P0 (a) , P1 (a) , ... , Pk (a), trong đó mỗi số 0 (nếu có) trong dãy
chỉ tính là một lần đổi dấu. Khi đó, số nghiệm của P trong khoảng (a, b] là V (a) − V (b).
n
! p1
X
kx kp = |xi |p .
i=1
Cho ma trận thực A = aij m×n
, chuẩn p ≥ 1 của A là
kAx kp
kAkp = sup
x 6=θ kx kp
trong đó x ∈ Rn .
√
i) p = 2 ⇒ kAk2 = kAk = max λi , trong đó λi là các giá trị riêng của AT A.
1≤i ≤n
m
X
ii) p = 1 ⇒ kAk1 = max |aij |.
1≤j ≤n
i=1
n
P
iii) p = ∞ ⇒ kAk∞ = max |aij |.
1≤i ≤m j=1
Các hàm tính chuẩn của ma trận trong Math giống như của véctơ.
Trong phần này ta chủ yếu sử dụng chuẩn ∞.
5 0 2
Ví dụ: A = .
3 −2 −4
*kAk1 = max{|5| + |3| , |0| + |−2| , |2| + |−4|} = max{8, 2, 6} = 8.
*kAk∞ = max{5 + 0 + 2, 3 + 2 + 4} = 9.
34 −6 −2
T
*A A = −6 4
8
−2 8 20
λ=0
3 2
P λ = −λ + 58λ − 792λ = 0 ⇔ λ = 22
λ = 36
√ √ √
⇒ kAk = max{ 0, 22, 36} = 6.
2. Hệ lặp đơn
Xét hệ
x = Bx + g
trong đó x = (x1 , x2 , ... , xn ) ∈ Rn , B = bij n
, g = (g1 , g2 , ... , gn ). Phương trình này có dạng khai triển
x1 = b11 x1 + b12 x2 + ... + b1n xn + g1
x2 = b21 x1 + b22 x2 + ... + b2n xn + g2
...
xn = bn1 x1 + bn2 x2 + ... + bnn xn + gn
thì
i) lim x k = x ∗ .
k →∞
Giả sử trong công thức lặp đơn, tại mỗi bước, các thành phần vừa tính được dùng luôn để tính thành
phần kế tiếp. Khi đó ta có công thức Seidel với tốc độ hội tụ nhanh hơn:
x k +1 = P b x k +1 + P b x k + g
i ij j ij j i
j <i j ≥i (1.8)
i = 1, n
qk
1
−8 10−8 (1 − q)
x − x 0
< 10 ⇒q < k
1−q ∞ kx 1 − x 0 k∞
10−8 (1 − q)
⇒ k > logq = 35.5744 ⇒ chọn k = 36.
kx 1 − x 0 k∞
3. Hệ chéo trội
Xét hệ
Ax = b (∗)
trong đó x = (x1 , x2 , ... , xn ), A = aij n
, b = (b1 , b2 , ... , bn ).
Giả sử A chéo trội theo hàng, tức là trên mỗi hàng, phần tử trên đường chéo chính có trị tuyệt đối lớn
hơn tổng trị tuyệt đối các phần tử còn lại:
P
|aii | > |aij |
j 6=i
i = 1, n
Khi đó
n
X
(∗) ⇔ aij xj = bi , ∀i = 1, n
j=1
!
X
⇔ aii xi = − aij xj + bi , ∀i = 1, n
j 6=i
!
X aij bi
⇔ xi = − xj + , ∀i = 1, n
aii aii
j 6=i
Đặt
− aij
nếu i 6= j bi
bij = aii , gi = với i, j = 1, n (1.9)
0 nếu i = j aii
thì
n
!
X
(∗) ⇔ xi = bij xj + gi , ∀i = 1, n
j=1
⇔ x = Bx + g
trong đó
n
X aij
= max 1
X X
q = kB k∞ = max |bij | = max −
aii 1≤i ≤n |aii | |aij | < 1
1≤i ≤n 1≤i ≤n
j=1 j 6=i j 6=i
q
và sai số kXk − X ∗ k∞ ≤ kXk − Xk −1 k∞ , trong đó Xk = (xk , yk , zk ).
1−q
k xk yk zk εk
0 0 0 0
1 −1.94805 2.31481 −0.628931 5.26094
2 −2.05503 1.74941 −1.69458 2.42193
3 −2.52769 2.03343 −1.52226 1.07423
4 −2.43875 1.79696 −1.68828 0.537424
5 −2.52203 1.88227 −1.59603 0.209651
...
14 −2.49051 1.84063 −1.61858 0.000927176
v) Ta có
qk −8 k 10−8 (1 − q)
kX1 − X0 k∞ < 10 ⇒q <
1−q kX1 − X0 k∞
−8 (1 − q)
10
⇒ k > logq = 56.0703 ⇒ chọn k = 57.
kX1 − X0 k∞
k xk yk zk
0 0 0 0
1 −1.94805 1.55724 −1.44206
2 −2.43686 1.80777 −1.59935
3 −2.48494 1.83714 −1.6164
4. Hệ ba đường chéo
uk bk
uk = , bk = và dk +1 = dk +1 − lk uk , bk +1 = bk +1 − lk bk .
dk dk
* Ta có
bn
xn =
dn
và với k = n − 1 ↓ 1:
xk = bk − uk xk +1 .
Số phép toán: 6 (n − 1) + 1 + 2 (n − 1) = 8n − 7.
Ví dụ:
di −2 −2 −2 −2 −2
ui 1 1 1 1
li 1 1 1 1
bi 3 −9 7 −5 4
3 4 5 6
di −2 − − − −
2 3 4 5
1 2 3 4
ui − − − −
2 3 4 5
3 3 14 6
bi − 5 −
2 2 5 5
xi 1 5 0 2 −1
Cho ma trận khả nghịch A. Để tìm X = A−1 , ta áp dụng công thức tương tự công thức lặp khi tìm
nghịch đảo của số thực
Xn+1 = Xn (2I − AXn )
trong đó chọn X0 thỏa mãn kI − AX0 k < 1, thường là nghiệm gần đúng thu được khi tính A−1 theo phương
pháp Gauss. Ta cũng có
−2.9 −4.5 3.5
Ví dụ: A = 1.1 0.3 3.3.
−1.4 −4.8 3.6
−0.6 0 0.6 −0.618 0.018 0.576
Chọn X0 = 0.3 0.2 −0.5, ta có X1 = 0.315 0.205 −0.484.
0.2 0.3 −0.1 0.167 0.267 −0.166
Sau 5 bước, hai ma trận đã giống nhau tới 5 chữ số sau dấu phảy
−0.61599 0.0218436 0.578855
A−1 ' X5 = 0.312363 0.201689 −0.488569 .
0.176933 0.277414 −0.148536
Cho không gian véctơ V . Ánh xạ tuyến tính L : V → R gọi là một phiếm hàm tuyến tính.
VD. Trên không gian hàm V thường xét một số phiếm hàm:
L (f ) = f (x0 )
(k )
L (f ) = f (x0 )
Z b
L (f ) = f (x) f0 (x) dx.
a
Cho hệ n hàm độc lập tuyến tính {f1 , f2 , ... , fn } trong V và n phiếm hàm độc lập tuyến tính L1 , L2 , ... , Ln .
Khi đó tồn tại duy nhất hàm P có dạng
n
X
P = ci fi
i=1
sao cho
Li (P) = bi , ∀i = 1, n (∗)
Thật vậy,
n
!
X
(∗) ⇔ Li cj fj = bi , ∀i = 1, n
j=1
n
X
⇔ Li fj cj = bi , ∀i = 1, n
j=1
n
X
⇔ aij cj = bi , ∀i = 1, n
j=1
hay
Ac = b
trong đó A = aij n , b = (b1 , b2 , ... , bn ), c = (c1 , c2 , ... , cn ). Với các giả thiết độc lập tuyến tính của hệ hàm
và hệ phiếm hàm, ta có |A| = 6 0. Do đó, bài toán có nghiệm duy nhất.
25
Đại học Xây dựng Bộ môn Toán Ứng dụng
Tìm
n
X
P (x) = ai x i
i=0
Đây là trường hợp đặc biệt của bài toán nội suy tổng quát với hệ hàm
f0 = 1, f1 = x, f2 = x 2 , ... , fn = x n
j
và phiếm hàm Li (f ) = f (xi ). Ta có Li x j = xi với i, j = 0, n, trong đó quy ước 00 = 1. Hoặc, ta biến đổi
trực tiếp
n
X j
(∗) ⇔ aj xi = bi , i = 0, n
j=0
1 x0 x02 ... x0n a0 y0
1
x1 x12 n
... x1 a1 y1
⇔
1 x2 x22 ... x2n
a2 = y2
... ... ...
1 xn xn2 ... xnn
an yn
Q
Định thức của hệ là định thức Vandermonde: |A| = xj − xi 6= 0.
i <j
P (−1) = a − b + c − d = 4, P (0) = a = 3,
P (1) = a + b + c + d = 2, P (2) = a + 2b + 4c + 8d = 7
Tìm
n
X
P (x) = yi Li (x) (2.1)
i=0
(
0 nếu i 6= j
trong đó Li xj = δij = .
1 nếu i = j
Y Q
Ta có Li (x) = C x − xj . Mặt khác Li (xi ) = 1 nên C xi − xj = 1. Vậy
j 6=i
j 6=i
Y x − xj
Li (x) = (2.2)
xi − xj
j 6=i
x −1 0 1 2
Ví dụ:
y 4 3 2 7
(x − 0) (x − 1) (x − 2) x3 x2 x
L−1 (x) = =− + −
(−1 − 0) (−1 − 1) (−1 − 2) 6 2 3
(x + 1) (x − 1) (x − 2) x3 x
L0 (x) = = − x2 − +1
(0 + 1) (0 − 1) (0 − 2) 2 2
3 2
(x + 1) (x − 0) (x − 2) x x
L1 (x) = =− + +x
(1 + 1) (1 − 0) (1 − 2) 2 2
3
(x + 1) (x − 0) (x − 1) x x
L2 (x) = = −
(2 + 1) (2 − 0) (2 − 1) 6 6
3
⇒ P (x) = 4L−1 (x) + 3L0 (x) + 2L1 (x) + 7L2 (x) = x − 2x + 3.
Định nghĩa 2 (Sai phân). Cho dãy yi , i = 0, 1, .... Sai phân cấp k của dãy tại phần tử yi được định nghĩa
quy nạp:
∆0 yi ≡ yi
(2.3)
∆k yi = ∆k −1 yi+1 − ∆k −1 yi .
k
X
(−1)k −j Ck yi+j .
k j
Tổng quát: ∆ yi =
j=0
yi ∆yi ∆2 yi ∆3 yi ...
y0
∆y0
y1 ∆2 y0
∆y1 ∆3 y0 ...
2
y2 ∆ y1
..
∆y2 .
..
y3 .
..
.
xi − xi −1 = h, ∀i = 1, n.
x − x0
Công thức Newton tiến: tính t = và
h
n k −1
X ∆k y0 Y
P (x) = (t − i)
k!
k =0 i=0 (2.4)
∆2 y0 ∆n y0
= y0 + ∆y0 t + t (t − 1) + ... + t (t − 1) ... (t − n + 1)
2! n!
x − xn
Công thức Newton lùi: tính t = và
h
n k −1
X ∆k yn−k Y
P (x) = (t + i)
k!
k =0 i=0 (2.5)
∆2 yn−2 ∆n y0
= yn + ∆yn−1 t + t (t + 1) + ... + t (t + 1) ... (t + n − 1)
2! n!
x −1 0 1 2
Ví dụ:
y 4 3 2 7
Các mốc nội suy cách đều với h = 1. Ta có bảng sai phân
yi ∆yi ∆2 yi ∆3 yi
4
−1
3 0
−1 6
2 6
5
7
x − (−1)
Công thức Newton tiến: t = = x + 1 và
1
0 6
P (x) = 4 + (−1) t + t (t − 1) +
t (t − 1) (t − 2)
2! 3!
= 4 − (x + 1) + (x + 1) x (x − 1) = x 3 − 2x + 3.
x −2
Công thức Newton lùi: t = và
1
6 6
P (x) = 7 + 5t + t (t + 1) + t (t + 1) (t + 2)
2! 3!
= 7 + 5 (x − 2) + 3 (x − 2) (x − 1) + (x − 2) (x − 1) x
= x 3 − 2x + 3.
P gọi là xấp xỉ tốt nhất của f bởi không gian W , giá trị nhỏ nhất ở trên gọi là sai số của xấp xỉ.
Ta có
n
X
P = ci fi .
i=1
Xét
n n
2
X X
G (c) = kf − P k =< f − ci fi , f − ci fi >
i=1 i=1
n n n
2
X X X
= kf k − 2 <f , fi > ci + <fi , fj > ci cj
i=1 i=1 j=1
Đặt
aij =< fi , fj >, bi =< f , fi > (2.6)
ta có aij = aji và
n
∂G X X
= −2bi + 2aii ci + 2 aij cj = −2bi + 2 aij cj .
∂ ci j 6=i j=1
Đặt A = aij n
, b = (b1 , b2 , ... , bn ) thì
Ac = b (2.7)
Hệ {f1 , f2 , ... , fn } độc lập tuyến tính nên A là ma trận đối xứng xác định dương. Khi đó det A 6= 0, suy
ra hệ trên có nghiệm duy nhất.
∂ 2G ∂ 2G
Hơn nữa, = 2aij , ∀i, j = 1, n, nên ma trận = 2A xác định dương. Vậy nghiệm
∂ ci ∂ cj ∂ ci ∂ cj i,j=1,n
duy nhất trên là cực tiểu của G (c).
V là không gian hàm xác định tại các điểm x1 , x2 , ... , xN có tích vô hướng và chuẩn:
v
N
u N
X uX
<f , g >= f (xk )g (xk ), kf k = t f 2 (xk ).
k =1 k =1
Khi đó
N N
X X
aij = fi (xk ) fj (xk ), bi = yk fi (xk ), i, j = 1, n (2.8)
k=1 k =1
v
u N
uX 2
và sai số kf − P k = t yk − P (xk ) .
k =1
Ví dụ: Tìm xấp xỉ tốt nhất của hàm số y = f (x) có giá trị trong bảng
x 1 1.3 1.7 2
y 3.5 4 4.6 5.2
bởi không gian hàm có cơ sở {1, x, ln x } và đánh giá sai số của xấp xỉ.
HD: Lập bảng tính
1 1 1 1 1
x 1 1,3 1,7 2
ln x 0 0.262364 0.530628 0.693147
P 3.51173 3.96557 4.64125 5.18146
f −P −0.01173 0.03443 −0.04125 0.01854
Gọi xấp xỉ cần tìm P (x) = a · 1 + bx + c ln x. Ta có hệ
4 6 1.48614 a 17.3 a = 1.24243
6 9.58 2.62944 b = 26.92
⇒ b = 2.2693
c
1.48614 2.62944 0.830854 7.09471
c = −0.864993
Ta được P (x) = 1.24243 + 2.2693x − 0.864993 ln x. Quay lại bảng trên để hoàn tất hai hàng cuối.
Sai số của xấp xỉ
p
(−0.01173)2 + 0.034432 + (−0.04125)2 + 0.018542 = 0.0580325.
Ví dụ: Tìm xấp xỉ tốt nhất của hàm số z = f (x, y) có giá trị trong bảng
(x, y) (−0.7, −2.9) (1.7, −1.1) (−4.9, −2.9) (3.1, 1.5) (−1.3, 0.8)
z 7.1 5.8 −3.1 −1 −8.7
bởi đa thức bậc nhất (hai biến) và đánh giá sai số của xấp xỉ.
HD: P (x, y ) = a + bx + cy (cơ sở {1, x, y }).
a = −2.54722
5 −2.1 −4.6 a 0.1
−2.1 38.69 17.98 b = 28.29 ⇒ b = 2.39859
−4.6 17.98 20.92 c −26.44
c = −3.88546
sZ
Z b b
<f , g >= f (x) g (x) dx, kf k = f 2 (x) dx (2.9)
a a
Ví dụ: Tìm xấp xỉ tốt nhất của f (x) = sin x trên [0, 1] bởi không gian hàm có cơ sở {1, x, ex }. Đánh giá sai
số của xấp xỉ.
HD: Gọi xấp xỉ cần tìm P (x) = a · 1 + bx + cex . Ta có hệ:
1 0.5 1.71828 a 0.459698 a = 0.278208
0.5 0.333333 1 b = 0.301169 ⇒ b = 1.33291
c
1.71828 1 3.19453 0.909331
c = −0.282237.
Giả sử P (x) là đa thức nội suy của f (x) trên khoảng nào đó tại các mốc nội suy phù hợp. Khi đó, trong
các tính toán, ta thay f (x) bởi P (x):
x − x0
P (x) = y0 + ∆y0 t, với t =
h
1 y1 − y0
⇒ P 0 (x) = ∆y0 = .
h h
yi+1 − yi
f 0 (xi ) ' , i = 0, n − 1
h (2.10)
yn − yn−1
f 0 (xn ) '
h
∆2 y0
P (x) = y0 + ∆y0 t + t (t − 1)
2!
0 y2 − 2y1 + y0 1
⇒ P (x) = y1 − y0 + (2t − 1)
2 h
y2 − 2y1 + y0 1 1 y2 − 2y1 + y0
⇒ P 00 (x) = ×2· · = .
2 h h h2
và
yi+1 − 2yi + yi −1
f 00 (xi ) ' , i = 1, n − 1
h2 (2.12)
y2 − 2y1 + y0 yn − 2yn−1 + yn−2
f 00 (x0 ) ' , f 00 (xn ) '
h2 h2
∆2 y0 ∆3 y0
P (x) = y0 + ∆y0 t + t (t − 1) + t (t − 1) (t − 2)
2! 3!
y2 − 2y1 + y0
⇒ P 0 (x) = y1 − y0 + (2t − 1) +
2
y3 − 3y2 + 3y1 − y0 2
1
+ 3t − 6t + 2
6 h
00 y2 − 2y1 + y0 y3 − 3y2 + 3y1 − y0 1 1
⇒ P (x) = 2+ (6t − 6) ×
2 6 h h
y3 − 3y2 + 3y1 − y0 1
⇒ P 000 (x) = 2
× .
h h
Ngoài ra
Đặt d = max |xi − xi −1 |, gọi là đường kính của phân hoạch. Dễ thấy
1≤i ≤n
n Z xi
X
I= f (x) dx.
i=1 xi −1
x − x0
f (x) ' P (x) = y0 + ∆y0 t, với t = .
h
Khi đó
Z x1 Z x1 Z 1
f (x) dx ' P (x) dx = y0 + ∆y0 t · hdt =
x0 x0 0
1
t2 1 y1 + y0
= h y0 t + ∆y0 = (x1 − x0 ) y0 + (y1 − y0 ) = (x1 − x0 ) .
2
0
2 2
Suy ra
n
X yi + yi −1
I' xi − xi −1 (2.13)
2
i=1
M2 (b − a)3
ε= .
12n2
∆2 y0 x − x0
P (x) = y0 + ∆y0 t + t (t − 1) , với t = .
2! h
Khi đó
x2 x2 Z 2
∆2 y0
Z Z
2
f (x) dx ' P (x) dx = y0 + ∆y0 t + t −t hdt =
x0 x0 0 2
2
t2 ∆2 y0 t3 t2
= h y0 t + ∆y0 + −
2 2 3 2
0
x2 − x0 2 y2 − 2y1 + y0 y2 + 4y1 + y0
= 2y0 + 2 (y1 − y0 ) + = (x2 − x0 )
2 3 2 6
Suy ra
n
X y2i + 4y2i −1 + y2i −2
I' x2i − x2i −2 (2.15)
6
i=1
Ví dụ: Cho hàm số f (x) = esin x , x ∈ [0, 2]. Chia đều [0, 2] thành 10 khoảng.
i) Bằng cách xây dựng đa thức nội suy bậc hai, tính gần đúng f 0 , f 00 tại các điểm chia. Từ đó so sánh
với giá trị đúng.
Z 2
ii) Tính gần đúng I = esin x dx và đánh giá sai số (theo hai phương pháp).
0
iii) Để tính được gần đúng I với sai số 10−4 , cần chia đều [0, 2] thành bao nhiêu khoảng. Tính gần
đúng I với các khoảng chia đó (theo hai phương pháp).
HD: i) f 0 (x) = esin x cos x, f 00 (x) = esin x cos2 x − sin x .
M2 (b − a)3
|f 00 (x)| = |esin x | |cos2 x − sin x | ≤ e1 |cos2 x | + |sin x | ≤ 2e = 5.43656 = M2 ⇒ εht =
2
=
12n
5.43656(2 − 0)3
= 0.0362438.
12 · 102
*Phương pháp Simpson:
2 · 0.2 1 + 2.48258
I' + 2 · 1.21978 + 1.47612 + 2 · 1.75882 + ... +
3 2
+ 2.71712 + 2 · 2.64811 = 4.23656.
(4)
f (x) = esin x −4cos2 x + cos4 x + sin x − 6cos2 x sin x + 3sin2 x
⇒ f (4) (x) ≤ e1 (4 + 1 + 1 + 6 + 3) = 40.7742 = M4
M4 (b − a)5 40.7742(2 − 0)5
⇒ εpb = = = 0.000724875.
180(2n)4 180 · 104
Xét phương trình vi phân cấp một, bài toán giá trị ban đầu
(
y 0 = f (x, y) với x0 ≤ x ≤ x
y (x0 ) = y0
trong đó y, f ∈ Rm , hay
0
y1 = f1 (x, y1 , y2 , ... , ym )
y 0 = f (x, y , y , ... , y )
2 2 1 2 m
...
0
ym = fm (x, y1 , y2 , ... , ym )
37
Đại học Xây dựng Bộ môn Toán Ứng dụng
y0 (x) = y0 ∀x
Z x
(3.1)
yn (x) = y0 + f t, yn−1 (t) dt
x0
x2 x3 xn x n+1
yn (x) = 2 + 2x + + + ... + −
2! 3! n! (n + 1)!
x2 x n
x n+1
= 1+x + + ... + +1+x −
2! n! (n + 1)!
−−−→ ex + 1 + x = y (x) .
n→∞
Z x
3 t2 2 5x x3
z2 (x) = 2 + − 2t − + 2 − 1 dt = + − x2 − .
12 2 3 2 6
Ví dụ 3: Tính tới y3 (x).
* y0 (x) = 1, z0 (x) = 0, u0 (x) = −2
Z x Z x
yn (x) = 1 + zn−1 (t) dt, zn (x) = 0 + un−1 (t) dt,
−1 −1
Z x
un (x) = −2 + tun−1 (t) − yn−1 (t) dt
Z −x 1
* y1 (x) = 1 + 0dt = 1
−1
Z x
z1 (x) = 0 + −2dt = −2 − 2x
−1
Z x
u1 (x) = −2 + [t (−2) − 1] dt = −2 − x − x 2
Z −x 1
* y2 (x) = 1 + (−2 − 2t) dt = −2x − x 2
−1
x
x2 x3
Z
2
11
z2 (x) = 0 + −2 − t − t dt = − − 2x − −
−1 6 2 3
x
x3 x4
Z
2
25
u2 (x) = −2 + − 1 dt = − − x − x 2 − −
t −2 − t − t
12 3 4
Z −x 1 2 3
3
11 t t 1 11x x x4
* y3 (x) = 1 + − − 2t − − dt = − − x2 − − .
−1 6 2 3 12 6 6 12
n
X y (k ) (x0 )
yn (x) = (x − x0 )k (3.2)
k!
k =0
Ví dụ 1: Tính y3 (x)
y (0) = 2
y0 = y − x ⇒ y 0 (0) = y (0) − 0 = 2
y 00 = y 0 − 1 ⇒ y 00 (0) = 2 − 1 = 1
y 000 = y 00 ⇒ y 000 (0) = 1
2 1 1 x2 x3
y3 (x) = 2 + (x − 0) + (x − 0)2 + (x − 0)3 = 2 + 2x + + .
1! 2! 3! 2 6
Dễ thấy y = y ∀k ≥ 2 ⇒ y (0) = y 00 (0) = 1. Khi đó
(k ) 00 (k )
x2 x3 xn
yn (x) = 2 + 2x + + + ... +
2! 3! n!
x2 xn
= 1+x + + ... + +1+x
2 n!
−−−→ ex + 1 + x = y (x) .
n→∞
−4 −7
y3 (x) = −1 + (−3) (x − 1) + (x − 1)2 + (x − 1)3
2! 3!
7
= 1 − 3 (x − 1) − 2(x − 1)2 − (x − 1)3
6
−3 2 −7 3 7
z3 (x) = 2 + 0 (x − 1) + (x − 1) + (x − 1)3 = 2 − (x − 1)2 − (x − 1)3 .
2! 3! 2 6
Ví dụ 3:
y (−1) = 1, y 0 (−1) = 0, y 00 (−1) = −2
y 000 = xy 00 − y ⇒ y 000 (−1) = (−1) (−2) − 1 = 1
y (4) = y 00 + xy 000 − y 0 ⇒ y (4) (−1) = −2 + (−1) 1 − 0 = −3
(5) 000 (4) 00
y = 2y + xy − y ⇒ y (5) (−1) = 2 · 1 + (−1) (−3) − (−2) = 7
−2 1 −3 7
y5 (x) = 1 + 0 (x + 1) + (x + 1)2 + (x + 1)3 + (x + 1)4 + (x + 1)5
2! 3! 4! 5!
1 1 7
= 1 − (x + 1)2 + (x + 1)3 − (x + 1)4 + (x + 1)5 .
6 8 120
Tìm số gần đúng yn của nghiệm y (xn ) tại các điểm x0 < x1 < ... < xN 6 x. Ký hiệu hn = xn+1 − xn , n =
0, N − 1.
Ví dụ 1: Tính nghiệm gần đúng tại các điểm 0.2, 0.3, 0.5. So sánh với nghiệm đúng y (xn ) = exn + 1 + xn .
yn+1 = yn + hn (yn − xn )
n xn yn hn f (xn , yn ) y (xn )
0 0 2 0.4
1 0.2 2.4 0.22 2.4214 = 0.1 (2.4 − 0.2)
2 0.3 2.62 0.464 2.64986 = 2.4 + 0.22
3 0.5 3.084 3.14872
Ví dụ 2: Tìm nghiệm gần đúng tại các điểm 1.1, 1.3, 1.5.
yn+1 = yn + hn (xn yn − zn )
zn+1 = zn + hn (yn + zn − 1)
n xn yn zn hn fy (xn , yn , zn ) hn fz (xn , yn , zn )
0 1 −1 2 −0.3 0
1 1.1 −1.3 2 −0.686 −0.06
2 1.3 −1.986 1.94 −0.90436 −0.2092
3 1.5 −2.89036 1.7308
Ví dụ 3: Tìm nghiệm gần đúng tại −0.8, −0.6, −0.5.
yn+1 = yn + hn zn
zn+1 = zn + hn un
un+1 = un + hn (xn un − yn )
n xn yn zn un hn fy hn fz hn fu
0 −1 1 0 −2 0 −0.4 0.2
1 −0.8 1 −0.4 −1.8 −0.08 −0.36 0.088
2 −0.6 0.92 −0.76 −1.712 −0.076 −0.1712 0.01072
3 −0.5 0.844
k1 + 2k2 + 2k3 + k4
yn+1 = yn + (3.4)
6
trong đó
k1 = hn f (xn , yn )
hn k1
k2 = hn f xn + , yn +
2 2
hn k2
k3 = hn f xn + , yn +
2 2
k4 = hn f (xn + hn , yn + k3 )
hn k11 km1
ki2 = hn fi xn + , y1n + , ... , ymn +
2 2 2
hn k12 km2
ki3 = hn fi xn + , y1n + , ... , ymn +
2 2 2
ki4 = hn fi xn , y1n + k13 , ... , ymn + km3 .
Bảng tính
n x y hn f (x, y )
...
n xn yn k1 = hn f (x
n , yn )
hn k1 hn k1
xn + yn + k2 = hn f xn + , yn +
2 2 2 2
hn k2 hn k2
xn + yn + k3 = hn f xn +
, yn +
2 2 2 2
xn + hn yn + k3 k4 = hn f (xn + hn , yn + k3 )
k1 + 2k2 + 2k3 + k4
d =
6
n+1 xn+1 = xn + hn yn+1 = yn + d ...
Ví dụ 1: Tính nghiệm gần đúng tại 0.2, 0.3. So sánh với nghiệm đúng.
k1 = hn (yn − xn )
k1 hn
k2 = hn yn +− xn +
2 2
k2 hn
k3 = hn yn + − xn +
2 2
k4 = hn (yn + k3 ) − (xn + hn )
k1 + 2k2 + 2k3 + k4
yn+1 = yn +
6
n x y hn f (x, y) y (xn )
0 0 2 0.4
0.1 2.2 0.42
0.1 2.21 0.422
0.2 2.422 0.4444
0.4214
1 0.2 2.4214 0.22214 2.4214
0.25 2.53247 0.228247
0.25 2.53552 0.228552
0.3 2.64995 0.234995
0.228456
2 0.3 2.64986 2.64986
Ví dụ 2: Tìm nghiệm gần đúng tại 1.1, 1.3.
n x y z hn fy hn fz
0 1 −1 2 −0.3 0
1.05 −1.15 2 −0.32075 −0.015
1.05 −1.16038 1.9925 −0.321089 −0.0167875
1.1 −1.32109 1.98321 −0.343641 −0.0337877
−0.32122 −0.0162271
1 1.1 −1.32122 1.98377 −0.687423 −0.0674894
1.2 −1.66493 1.95003 −0.789589 −0.142981
1.2 −1.71601 1.91228 −0.7943 −0.160746
1.3 −2.11552 1.82303 −0.91464 −0.258499
−0.794974 −0.155574
2 1.3 −2.11619 1.8282
Ví dụ 3: Tìm nghiệm gần đúng tại −0.8, −0.6.
n x y z u hn fy h n fz hn fu
0 −1 1 0 −2 0 −0.4 0.2
−0.9 1 −0.2 −1.9 −0.04 −0.38 0.142
−0.9 0.98 −0.19 −1.929 −0.038 −0.3858 0.15122
−0.8 0.962 −0.3858 −1.84878 −0.07716 −0.369756 0.103405
−0.03886 −0.383559 0.148307
1 −0.8 0.96114 −0.383559 −1.85169 −0.0767119 −0.370339 0.104043
−0.7 0.922784 −0.568729 −1.79967 −0.113746 −0.359934 0.0673971
−0.7 0.904267 −0.563526 −1.81799 −0.112705 −0.363599 0.0736657
−0.6 0.848435 −0.747158 −1.77803 −0.149432 −0.355605 0.0436763
−0.113174 −0.362168 0.0716408
2 −0.6 0.847966
Xét toán tử vi phân tuyến tính cấp hai đối với hàm u = u (x, y, t):
∂ 2u ∂ 2u ∂u ∂u
Lu = a + b +c +d + gu (4.1)
∂x 2
∂y 2
∂x ∂y
44