Download as pdf or txt
Download as pdf or txt
You are on page 1of 47

Toán học tính toán

Nguyễn Đức Thịnh

5/2021
Mục lục

0 Kiến thức chuẩn bị 1


§1. Phần mềm Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1. Lệnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3. Biểu thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Lệnh có sẵn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
5. Định nghĩa hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
6. Các kí tự đặc biệt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
§2. Mathematica trong Đại số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1. Giải phương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Véctơ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Ma trận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Hệ phương trình tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
§3. Mathematica trong Giải tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. Tính giá trị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Giới hạn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Đạo hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Khai triển Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Tích phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6. Phương trình vi phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7. Phương trình sai phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
§4. Lập trình với Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1. If - Rẽ nhánh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2. Do - Lặp xác định . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3. For - Lặp không xác định . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4. Chương trình con . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
§5. Sai số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1. Sai số tuyệt đối, tương đối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Sai số của bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1 Giải phương trình 12


§1. Phương trình đại số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1. Phương pháp chia đôi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

i
Đại học Xây dựng Bộ môn Toán Ứng dụng

2. Phương pháp Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13


3. Phương pháp lặp đơn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
§2. Giải đa thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1. Định lý chặn nghiệm Cauchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2. Định lý Sturm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
§3. Hệ phương trình tuyến tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1. Chuẩn của véctơ và ma trận . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2. Hệ lặp đơn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3. Hệ chéo trội . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4. Hệ ba đường chéo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5. Ma trận nghịch đảo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2 Nội suy và xấp xỉ hàm 25


§1. Nội suy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1. Nội suy tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2. Đa thức nội suy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3. Nội suy Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4. Nội suy Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
§2. Xấp xỉ hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1. Bài toán tổng quát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2. Xấp xỉ hàm rời rạc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3. Xấp xỉ hàm liên tục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
§3. Tính gần đúng đạo hàm và tích phân . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1. Tính gần đúng đạo hàm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2. Tính gần đúng tích phân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3 Phương trình vi phân 37


§1. Phương pháp giải tích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1. Phương pháp Picard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2. Phương pháp chuỗi Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
§2. Phương pháp số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1. Phương pháp Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2. Phương pháp Runge - Kutta RK4 . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 Phương trình đạo hàm riêng 44

Nguyễn Đức Thịnh ii ndthinh1402@gmail.com


Chương 0

Kiến thức chuẩn bị

§1. Phần mềm Mathematica

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.

Nguyễn Đức Thịnh 2 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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.

• Factor[expr] phân tích thành nhân tử.

• Simplify[expr] rút gọn biểu thức.

• Print[expr] hiển thị kết quả biểu thức.

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.

• Các tham số đặt trong dấu [ ] và ngăn cách bởi dấ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.

5. Định nghĩa hàm


f[x_] := expr
f[x_ , y_] := expr
để khai báo hàm số f một biến hoặc nhiều biến. Các biến x, y, ... ở vế trái là biến địa phương, phải viết
liền với dấu gạch chân.

6. Các kí tự đặc biệt

C dãy hằng số bất định


D lệnh tính đạo hàm
E số loga tự nhiên e
I đơn vị ảo i
N lệnh chuyển biểu thức về số thập phân.

Nguyễn Đức Thịnh 3 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

§2. Mathematica trong Đại số

1. Giải phương trình


Solve[ phương trình , biến ]

• Mỗi phương trình có dạng


vế trái == vế phải

• 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

Véctơ u = (2, −1, 3) được khai báo bởi lệnh


u = {2, -1, 3}
 
2
u//MatrixForm trả về hình khối dạng véctơ cột −1
3
Length[u] cho giá trị 3 là số chiều của véctơ.
u[[2]] trả về −1. Chỉ số của dãy bắt đầu từ 1.
Nếu véctơ có các phần tử là biểu thức tổng quát, dùng lệnh
Table[expr , {i, a, b}]
trong đó chỉ số i là biến địa phương chạy từ a, a + 1, ... và ≤ b.

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 đó

Nguyễn Đức Thịnh 4 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

A = { {2, -1, 3} , {0, 4, 1} }


Cách 2: Gọi mẫu tạo ma trận [RClick]Create Table/Matrix/Palette, chọn cỡ của ma trận
rồi điền giá trị vào các ô của mẫu  
  
  

A//MatrixForm cho hình khối dạng ma trận của A.


Dimensions[A] cho cỡ {m, n} gồm số hàng, số cột của A.
A[[i]] cho véctơ ứng với hàng i của ma trận A.
A[[i,j]] cho phần tử hàng i, cột j của A.
Các ma trận đặc biệt:
IdentityMatrix[n] cho ma trận đơn vị cấp n.
DiagonalMatrix[u] cho ma trận đường chéo với các phần tử trên đường chéo chính tạo nên
véctơ u.
Nếu ma trận có các phần tử là biểu thức tổng quát, dùng lệnh
Table[expr , {i,a,b} , {j,c,d}]
với chỉ số chạy cho hàng i = a, a + 1, ... ≤ b và cho cột j = c, c + 1, ... ≤ d.

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

Nguyễn Đức Thịnh 5 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

Lệnh Kết quả


CharacteristicPolynomial[A,λ] −18 + 3λ + 4λ2 − λ3
{{λ → −2}, {λ → 3}, {λ →
Solve[% == 0, λ]
3}}

i) Đa thức đặc trưng của A là P λ = −λ + 4λ2 + 3λ − 18
3

 λ = −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.

4. Hệ phương trình 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

Nguyễn Đức Thịnh 6 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

§3. Mathematica trong Giải tích

1. Tính giá trị


f/.x->a
tính f khi thay biến bất định x trong f (nếu có) bởi a:

• Phép gán /.x-> được thực hiện sau mọi phép toán khác.

• Biến gán x là biến địa phương.

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+

trong đó x là biến bất định. Ví dụ


Abs[x]
Limit[ , x->0 , Direction->1]
x
|x | −x
cho kết quả lim = lim = −1.
x →0− x x →0− x

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)

trong đó x là biến bất định. Lưu ý f (0) (x) ≡ f (x).


Nếu biểu thức khai báo dưới dạng hàm một biến, ta dùng lệnh f’[x], f’’’[x],. . . trong đó x là biến
hoặc biểu thức.

Nguyễn Đức Thịnh 7 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

4. Khai triển Taylor

0 f 00 (a) 2 f (n) (a)


f (x) = f (a) + f (a) (x − a) + (x − a) + ... + (x − a)n +
  2! n!
O (x − a)n+1
n
X f (k ) (a)  
= (x − a)k + O (x − a)n+1
k!
k =0

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

6. Phương trình vi phân


DSolve[ phương trình , hàm , biến ]
trong đó các hàm và biến là bất định. Các tham số cũng có thể gồm nhiều thành phần.
Ví dụ: x 2 y 00 − 4xy 0 + 6y = 0 có nghiệm y = C1 x 2 + C2 x 3 :

DSolve[x2 ∗ y00 [x] − 4x ∗ y0 [x] + 6y[x] == 0 , y[x] , x]

Nguyễn Đức Thịnh 8 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

( ( (
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[%]

Ví dụ: ux + 2ut = 0 có nghiệm u = C (t − 2x) trong đó C là hàm bất kỳ:

DSolve[∂x u[x, t] + 2∂t u[x, t] == 0 , u[x, t] , {x, t}]

7. Phương trình sai phân

Lệnh RSolve hoạt động như lệnh DSolve.


" √ n  √ n #
1 1+ 5 1− 5
Ví dụ: Dãy Fibonacci fn = fn−1 +fn−2 , f0 = 0, f1 = 1 có công thức tổng quát fn = √ − :
5 2 2
RSolve[{f[n]==f[n-1]+f[n-2], f[0]==0, f[1]==1}, f[n], n]

§4. Lập trình với Mathematica

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ì).

• If có thể vừa là hàm, vừa là thủ tục.

• 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. (
 
 

2. Do - Lặp xác định


Do[khối lệnh, {n}]
Do[khối lệnh, {i,a,b}]
để thực hiện khối lệnh tuần tự n lần, hoặc theo chỉ số chạy i = a, a + 1, a + 2, ... ≤ b. Ở đây i là biến
địa phương.

Nguyễn Đức Thịnh 9 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

3. For - Lặp không xác định


For[khởi tạo , điều kiện , điều khiển* , khối lệ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 chỉ thực hiện một lần.

• 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

4. Chương trình con


TênCT[x_, y_]:= Block[
{các biến địa phương},
khối lệnh
];

• 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.

Ví dụ: Chương trình con tìm tổng và tích của dãy


f[u_]:= Block[
{n, i, s, p},
n=Length[u];
For[s=0; p=1; i=1, i ≤ n, i++,
s = s + u[[i]] ; p = p ∗ u[[i]] ;
];
{s, p}
];
thì lệnh f[{2, -1, 5}] cho kết quả {6, -10}.

Nguyễn Đức Thịnh 10 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

§5. Sai số

1. Sai số tuyệt đối, tương đối

2. Sai số của bài toán

Sai số mô hình

Sai số đầu vào

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.

Nguyễn Đức Thịnh 11 ndthinh1402@gmail.com


Chương 1

Giải phương trình

§1. Phương trình đại số

1. Phương pháp chia đôi

Xét phương trình


f (x) = 0, x ∈ [a, b] .
Giả sử

i) f ∈ C [a, b].

ii) f (a) f (b) < 0.

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

Ví dụ: Xét phương trình x 3 + 2x − 1 = 0, x ∈ [0, 2].


i) Kiểm tra điều kiện thực hiện phương pháp
ii) Xây dựng dãy đoạn chứa nghiệm sau 5 bước
iii) Cho 1 nghiệm gần đúng với sai số 10−2
iv) Cần thực hiện bao nhiêu bước lặp để thu được nghiệm có sai số 10−6 .
HD: i) f (x) = x 3 + 2x − 1. Dễ thấy f ∈ C [0, 2]; f (0) = −1 < 0, f (2) = 11 > 0.
ii, iii)

12
Đại học Xây dựng Bộ môn Toán Ứng dụng

n an bn cn f (an ) f (bn ) f (cn ) εn


0 0 2 1 − + + 2
1 0 1 0.5 − + + 1
2 0 0.5 0.25 − + − 0.5
3 0.25 0.5 0.375 − + − 0.25
4 0.375 0.5 0.4375 − + − 0.125
5 0.4375 0.5 0.46875 − + + 0.0625
6 0.4375 0.46875 0.453125 − + − 0.03125
7 0.453125 0.46875 0.460938 − + + 0.015625
8 0.453125 0.460938 0.457031 − + + 0.0078125
Khoảng chứa nghiệm sau 5 bước là [0.4375, 0.5].
Nghiệm gần đúng với sai số 10−2 : x8 = a8 = 0.453125.
b−a b−a
iv) n
< 10−6 ⇒ n > log2 −6 = 20.9316. Chọn n = 21.
2 10

2. Phương pháp Newton

Xét phương trình


f (x) = 0, x ∈ [a, b] .

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→∞

ii) Công thức sai số


M
|xn − x ∗ | ≤ |xn − xn−1 |2 (1.2)
2m
trong đó M ≥ |f 00 (x)|, 0 < m ≤ |f 0 (x)| ∀x ∈ [a, b].

Nguyễn Đức Thịnh 13 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

Công thức Newton cải biên


f (xn )
xn+1 = xn − (1.3)
f 0 (x0 )
có số phép tính mỗi bước ít hơn nhưng tốc độ hội tụ chậm hơn công thức Newton.
Cần nắm vững đặc tính hàm sơ cấp và tính chất của hàm trị tuyệt đối để đánh giá giá trị của các biểu
thức trong bài học; hoặc đánh giá qua đồ thị trong Math bằng cách đọc mức giá trị của hàm.
Nếu f 00 không đổi dấu trên [a, b] thì f 0 đơn điệu. Khi đó f 0 không đổi dấu nếu f 0 (a) f 0 (b) > 0; và kéo
theo m = min{|f 0 (a)| , |f 0 (b)|}.
Ví dụ: Cho phương trình x 3 = x 2 + 3 (∗) với x ∈ [1, 4].
i) Kiểm tra điều kiện thực hiện phương pháp.
ii) Tìm nghiệm gần đúng sau 3 bước (tới x3 ).
iii) Tìm sai số của các nghiệm gần đúng ở ý trên.
iv) Tìm nghiệm gần đúng với sai số 10−6 , cho biết số bước lặp đã thực hiện.
v) Tìm nghiệm gần đúng sau 3 bước theo công thức Newton cải biên.
HD: i) (∗) ⇔ f (x) = x 3 − x 2 − 3 = 0. Ta có

f 0 (x) = 3x 2 − 2x, f 00 (x) = 6x − 2 ≥ 4 > 0, ∀x ∈ [1, 4] .

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

f (xn ) xn3 − xn2 − 3


xn+1 = xn − = xn −
f 0 (xn ) 3xn2 − 2xn

M
và sai số |xn − x ∗ | ≤ |xn − xn−1 |2 =: εn trong đó
2m

|f 00 (x)| = f 00 (x) = 6x − 2 ≤ 22, ∀x ∈ [1, 4] ⇒ M = 22(1)


m = min{|f 0 (1)| , |f 0 (4)| = min{1, 40} = 1.

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)

Nghiệm gần đúng có sai số 10−6 : x6 = 86371.


f (xn ) xn3 − xn2 − 3
v) Công thức Newton cải biên: xn+1 = xn − 0 = xn − .
f (x0 ) 40
(1)
Đánh giá bằng đồ thị được M = 20 + 2.5 = 22.5.
(2)
Tính bằng Math.

Nguyễn Đức Thịnh 14 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

trong đó x0 được chọn sao cho |1 − ax0 | < 1. Khi đó



1 − axn+1 = 1 − a 2xn − axn2 = (1 − axn )2
n 1 1 n
⇒ 1 − axn = (1 − ax0 )2 ⇒ − xn = (1 − ax0 )2 −−−→ 0
a a n→∞
1
⇒ xn −−−→ .
n→∞ a

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

Nguyễn Đức Thịnh 15 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

3. Phương pháp lặp đơn

Xét phương trình


x = g (x) , x ∈ [a, b] .

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]:

|g (x) − g (y)| ≤ q |x − y | . (∗)

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→∞

ii) Công thức đánh giá sai số


qn
|xn − x ∗ | ≤ |x1 − x0 |
1−q
(1.5)
q
|xn − x ∗ | ≤ |xn − xn−1 |
1−q

Giả sử |g 0 (x)| ≤ q < 1 ∀x ∈ [a, b]. Khi đó ∀x, y ∈ [a, b]:

|g (x) − g (y)| = |g 0 (c)| · |x − y | ≤ q |x − y |


tức là điều kiện (∗) thỏa mãn.

3
Ví dụ: Biến đổi x 3 = x 2 + 3 ⇔ x = x 2 + 3, với x ∈ [1, 4].
i) Kiểm tra điều kiện thực hiện phương pháp.
ii) Cho trước x0 = 2.5, tính nghiệm gần đúng tới x3 .
iii) Tìm sai số của các nghiệm gần đúng ở trên.
iv) Tìm nghiệm với sai số 10−4 và xác định số bươc lặp đã thực hiện.
v) Không cần tìm dãy nghiệm gần đúng, hãy xác định cần bao nhiêu bước lặp để thu được nghiệm có
sai số 10−10 .

3
HD: i) Đặt g (x) = x 2 + 3. Ta có
2x
g 0 (x) = > 0, ∀x ∈ [1, 4]
3(x + 3)2/3
2

⇒ g (1) ≤ g (x) ≤ g (4) ⇒ 1.5874 ≤ g (x) ≤ 2.6684 ⇒ 1 ≤ g (x) ≤ 4(3)


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.

Nguyễn Đức Thịnh 16 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

⇒ |g 0 (x)| ≤ max{|g 0 (1)| , |g 0 (4)| , |g 0 (3)|} =


= max{0.264567, 0.374513, 0.381571} = 0.381571 = q < 1(4) .

ii-iv) Công thức lặp và sai số


p
3
xn+1 = g (xn ) = xn2 + 3
q
|xn − x ∗ | ≤ |xn − xn−1 | =: εn .
1−q

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. Giải đa thức

1. Định lý chặn nghiệm Cauchy


|ai |
Định lý 1. Cho P (x) = a0 x n + a1 x n−1 + ... + an−1 x + an , a0 6= 0. Đặt M = max . Khi đó mọi nghiệm
1≤i ≤n |a0 |

thực của P đều nằm trong khoảng [− (M + 1) , M + 1].

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.

Nguyễn Đức Thịnh 17 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

Đị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).

§3. Hệ phương trình tuyến tính

1. Chuẩn của véctơ và ma trận

Cho véctơ x ∈ (x1 , x2 , ... , xn ) ∈ Rn . Chuẩn p (p ≥ 1) của x là

n
! p1
X
kx kp = |xi |p .
i=1

Một số trường hợp đặc biệt:


v
u n
uX 2
i) p = 2 ⇒ kx k2 = kx k = t |xi | .
i=1
n
X
ii) p = 1 ⇒ kx k1 = |xi |.
i=1

iii) p = ∞ ⇒ kx k∞ = max |xi |.


1≤i ≤n

Hàm tính chuẩn véctơ trong Math, ứng với p = 2:


Norm[x]
hoặc với hằng số p ≥ 1 xác định:
Norm[x, p]
Ví dụ: x = (6, −2, 3).
q
kx k = |6|2 + |−2|2 + |3|2 = 7
kx k1 = 6 + 2 + 3 = 11
kx k∞ = max{6, 2, 3} = 6.


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

Nguyễn Đức Thịnh 18 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

hoặc tổng quát n 



x = P b x + g
i ij j i
j=1

i = 1, n.

Giả sử q = kB k∞ < 1. Khi đó


a) ∃!x ∗ = x1∗ , x2∗ , ... , xn∗ sao cho x ∗ = Bx ∗ + g.


b) Xét dãy véctơ nghiệm xấp xỉ x k = x1k , x2k , ... , xnk :
i) x 0 ∈ Rn bất kỳ, thường chọn x 0 = θ .
ii) Công thức lặp
x k +1 = Bx k + g ∀k ≥ 0. (1.6)

thì
i) lim x k = x ∗ .
k →∞

Nguyễn Đức Thịnh 19 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

ii) Công thức đánh giá sai số: ∀k ≥ 1 ta có


k
x − x ∗ ≤ q
k 1
x − x 0
∞ 1−q ∞
(1.7)
x − x ≤ q
∗ x − x k −1 .
k k
∞ 1−q ∞

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

hay dạng khai triển  k +1



x1 = b11 x1k + b12 x2k + ... + b1n xnk + g1
x2k +1 = b21 x1k +1 + b22 x2k + ... + b2n xnk + g2


x k +1 = b31 x1k +1 + b32 x2k +1 + b33 x3k + ... + b3n xnk + g3
3
...




 k +1
xn = bn1 x1k +1 + bn2 x2k +1 + ... + bn,n−1 xnk−
+1 k
1 + bnn xn + gn .

x1 = −0.21x1 − 0.28x2 + 0.05x3 − 0.9
Ví dụ: Cho hệ phương trình x2 = 0.19x1 + 0.01x2 − 0.26x3 + 3.8
x3 = 0.39x1 − 0.12x2 − 0.06x3 − 2.9

i) Kiểm tra điều kiện thực hiện phương pháp.


ii) Cho xấp xỉ ban đầu x 0 = (0, 2, −1), tìm nghiệm gần đúng sau 3 bước lặp.
iii) Tìm sai số của các nghiệm gần đúng ở trên.
iv) Tìm nghiệm gần đúng với sai số 10−3 .
v) Để đạt được nghiệm với sai số 10−8 , cần thực hiện bao nhiêu bước lặp.
vi) Áp dụng công thức Seidel, tìm nghiệm gần đúng sau 3 bước.
 
−0.21 −0.28 0.05
HD: i) Đặt B =  0.19 0.01 −0.26, g = (−0.9, 3.8, −2.9). Ta có q = kB k∞ = 0.57 < 1.
0.39 −0.12 −0.06
ii-iv) Công thức lặp
 k +1
x1 = −0.21x1k − 0.28x2k + 0.05x3k − 0.9
x k +1 = 0.19x1k + 0.01x2k − 0.26x3k + 3.8
 2k +1
x3 = 0.39x1k − 0.12x2k − 0.06x3k − 2.9
q
và sai số kx k − x ∗ k∞ ≤ εk = kx k − x k −1 k∞ , ∀k ≥ 1.
1−q
k x1k x2k x3k εk
0 0 2 -1
1 −1.51 4.08 −3.08 2.75721
2 −1.8793 4.3547 −3.7937 0.946067
3 −1.91435 4.47284 −3.92787 0.177852
4 −1.94678 4.50225 −3.94766 0.0429861
5 −1.94919 4.50153 −3.96265 0.0198678
...
8 −1.95001 4.50491 −3.96338 0.000459243

Nguyễn Đức Thịnh 20 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

Nghiệm gần đúng với sai số 10−3 là x 8 = (−1.95001, 4.50491, −3.96338).


v) Ta có

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∞

vi) Công thức Seidel


 k+1
x1 = −0.21x1k − 0.28x2k + 0.05x3k − 0.9
x2k +1 = 0.19x1k +1 + 0.01x2k − 0.26x3k + 3.8
x3k +1 = 0.39x1k +1 − 0.12x2k +1 − 0.06x3k − 2.9

k x1k x2k x3k


0 0 2 −1
1 −1.51 3.7931 −3.88407
2 −1.83917 4.49835 −3.92403
3 −1.96951 4.49102 −3.97159

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

Nguyễn Đức Thịnh 21 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

⇔ 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

nên (∗) giải được theo phương pháp lặp đơn.



−15.4x + y + 6.3z = 30
Ví dụ: Giải hệ −4.2x + 10.8y + 3.3z = 25 (∗) với các yêu cầu như ví dụ trên và xấp xỉ
−2.4x + 5.3y + 15.9z = −10

ban đầu x0 = y0 = z0 = 0.

x = 0.0649351y + 0.409091z − 1.94805
HD: (∗) ⇔ y = 0.388889x − 0.305556z + 2.31481
z = 0.150943x − 0.333333y − 0.628931

 
0 0.0649351 0.409091
B = 0.388889
 0 −0.305556 ⇒ q = kB k∞ = 0.694444 < 1.
0.150943 −0.333333 0
Công thức lặp

xk +1 = 0.0649351yk + 0.409091zk − 1.94805
yk +1 = 0.388889xk − 0.305556zk + 2.31481
zk +1 = 0.150943xk − 0.333333yk − 0.628931

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

Nghiệm gần đúng với sai số 10−3 là

x14 = −2.49051, y14 = 1.84063, z14 = −1.61858.

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∞

vi) Công thức Seidel



xk +1 = 0.0649351yk + 0.409091zk − 1.94805
yk +1 = 0.388889xk +1 − 0.305556zk + 2.31481
zk +1 = 0.150943xk +1 − 0.333333yk +1 − 0.628931

Nguyễn Đức Thịnh 22 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

Giải hệ Ax = b, trong đó aij = 0, ∀ |i − j | > 1:


 
d1 u1 b1
 l1 d2 u2 b2

 
 l2 d3 u3 b3

A=
 
.. .. .. 
 . . . 
 
 ln −2 dn−1 un−1 bn−1
ln−1 dn bn

Các bước của phép biến đổi Gauss:


u1 b1
* u1 = , b1 = và d2 = d2 − l1 u1 , b2 = b2 − l1 b1 .
d1 d1
u2 b2
* u2 = , b2 = và d3 = d3 − l2 u2 , b3 = b3 − l2 b2 .
d2 d2
* Tổng quát, với k = 1, n − 1:

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

Nguyễn Đức Thịnh 23 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

5. Ma trận nghịch đảo

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ó

I − AXn+1 = I − A · Xn (2I − AXn ) = (I − AXn )2


n n
⇒ I − AXn = (I − AX0 )2 ⇒ A−1 − Xn = A−1 (I − AX0 )2
n
⇒ A−1 − Xn ≤ A−1 · kI − AX0 k2 −−−→ 0 ⇒ Xn −−−→ A−1 .

n→∞ n→∞

 
−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

Nguyễn Đức Thịnh 24 ndthinh1402@gmail.com


Chương 2

Nội suy và xấp xỉ hàm

§1. Nội suy

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

1. Nội suy tổng quát

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

2. Đa thức nội suy

Tìm
n
X
P (x) = ai x i
i=0

sao cho, tại mốc nội suy xi :


P (xi ) = yi , ∀i = 0, n. (∗)

Đâ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

Ví dụ: Tìm đa thức nội suy bảng giá trị


x −1 0 1 2
y 4 3 2 7
Đa thức nội suy có dạng P (x) = a + bx + cx 2 + dx 3 . Ta có

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

Giải hệ được a = 3, b = −2, c = 0, d = 1, và kết luận P (x) = 3 − 2x + x 3 .


Hoặc, theo biến đổi trên, ta giải hệ
    
1 −1 1 −1 a 4
1 0 0 0   b  3
   

1 1 = .
1 1   c  2
1 2 4 8 d 7

3. Nội suy Lagrange

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

Nguyễn Đức Thịnh 26 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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.

4. Nội suy Newton

Đị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 .

Ba sai phân cấp đầu tiên:

∆yi = ∆1 yi = ∆0 yi+1 − ∆0 yi = yi+1 − yi


∆2 yi = ∆1 yi+1 − ∆1 yi = (yi+2 − yi+1 ) − (yi+1 − yi ) = yi+2 − 2yi+1 + yi
∆3 yi = ∆2 yi+1 − ∆2 yi = (yi+3 − 2yi+2 + yi+1 ) − (yi+2 − 2yi+1 + yi )
= yi+3 − 3yi+2 + 3yi+1 − yi .

k
X
(−1)k −j Ck yi+j .
k j
Tổng quát: ∆ yi =
j=0

Dùng lược đồ sai phân


∆k −1 yi

∆k yi
+
∆k −1 yi+1

để xây dựng bảng sai phân

Nguyễn Đức Thịnh 27 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

yi ∆yi ∆2 yi ∆3 yi ...
y0
∆y0
y1 ∆2 y0
∆y1 ∆3 y0 ...
2
y2 ∆ y1
..
∆y2 .
..
y3 .
..
.

Giả sử các mốc nội suy cách đều

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!

Nguyễn Đức Thịnh 28 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

= 7 + 5 (x − 2) + 3 (x − 2) (x − 1) + (x − 2) (x − 1) x
= x 3 − 2x + 3.

§2. Xấp xỉ hàm

1. Bài toán tổng quát



Xét (V , <·, ·>) là không gian Euclide có tích vô hướng < f , g > và chuẩn kf k = < f , f >. Trong V
cho không gian con W có cơ sở {f1 , f2 , ... , fn } và f ∈
/ W . Tìm P ∈ W sao cho kf − P k = min kf − Q k.
Q ∈W

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

G (c) đạt cực tiểu thì c là điểm dừng


n
∂G X
= 0, ∀i = 1, n ⇒ aij cj = bi ∀i = 1, n.
∂ ci 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).

Nguyễn Đức Thịnh 29 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

2. Xấp xỉ hàm rời rạ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

trong đó, ta tính chi tiết vài giá trị:

a23 =< x, ln x >= 1 · 0 + 1.3 · 0.262364 + 1.7 · 0.530628 + 2 · 0.693147 = 2.62944


b3 =< f , ln x >= 3.5 · 0 + 4 · 0.262364 + 4.6 · 0.530628 + 5.2 · 0.693147
= 7.09471.

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

Nguyễn Đức Thịnh 30 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

P 7.04161 5.80439 −3.03247 −0.939779 −8.77375


f −P 0.0583935 −0.0043924 −0.067531 −0.0602206 0.0737505

Sai số kf − P k = 0.05839352 + 0.00439242 + ... + 0.07375052 = 0.130596.

3. Xấp xỉ hàm liên tục


Z b
Cho V = {f | f 2 (x) dx < ∞}. Trên V xét tích vô hướng và chuẩn:
a

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.

trong đó, chẳng hạn


Z 1
x
a23 =< x, e >= xex dx = 1
0
Z 1
x
b3 =< sin x, e >= ex sin xdx = 0.909331.
0

⇒ P (x) = 0, 278208 · 1 + 1, 33291x − 0, 282237ex .


sZ
1
Sai số kf − P k = [f (x) − P (x)]2 dx = 0.00125824.
0

§3. Tính gần đúng đạo hàm và tích phân

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):

f (x) ' P (x)


f 0 (x) ' P 0 (x) , f
(n)
(x) ' P (n) (x)
Z b Z b
f (x) dx ' P (x) dx.
a a

1. Tính gần đúng đạo hàm

Xét các mốc nội suy cách đều x0 , x1 , ... , xn với xi − xi −1 = h, ∀i = 1, n.

Nguyễn Đức Thịnh 31 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

a) Trên [x0 , x1 ], xét hai mốc nội suy x0 , x1 :

x − x0
P (x) = y0 + ∆y0 t, với t =
h
1 y1 − y0
⇒ P 0 (x) = ∆y0 = .
h h

Tổng quát, có thể tính

yi+1 − yi
f 0 (xi ) ' , i = 0, n − 1
h (2.10)
yn − yn−1
f 0 (xn ) '
h

b) Trên [x0 , x2 ] xét ba mốc nội suy x0 , x1 , x2 :

∆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

Bảng giá trị của P 0 (xi ) và cách xấp xỉ f 0 (xi ):

x t P 0 (xi ) Xấp xỉ f 0 (xi )


−y2 + 4y1 − 3y0 −y2 + 4y1 − 3y0
x0 0 f 0 (x0 ) '
2h 2h
y2 − y0 0 (x ) yi+1 − yi −1 (2.11)
x1 1 f i ' , i = 1, n − 1
2h 2h
3y2 − 4y1 + y0 3yn − 4yn−1 + yn−2
x2 2 f 0 (xn ) '
2h 2h

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

c) Trên [x0 , x3 ] xét bốn mốc nội suy x0 , x1 , x2 , x3 :

∆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

Nguyễn Đức Thịnh 32 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

Bảng giá trị của P 0 (xi ) và cách xấp xỉ f 0 (xi ):

x t P 0 (xi ) Xấp xỉ f 0 (xi )


2y3 − 9y2 + 18y1 − 11y0 2y3 − 9y2 + 18y1 − 11y0
x0 0 f 0 (x0 ) '
6h 6h
−y3 + 6y2 − 3y1 − 2y0 0 (x ) −yi+2 + 6yi+1 − 3yi − 2yi −1
x1 1 f i '
6h
2y3 + 3y2 − 6y1 + y0 0
 2yn + 3yn6h −1 − 6yn−2 + yn−3
x2 2 f xn−1 '
6h 6h
11y3 − 18y2 + 9y1 − 2y0 11yn − 18yn−1 + 9yn−2 − 2yn−3
x3 3 f 0 (xn ) ' .
6h 6h

Bảng giá trị của P 00 (xi ) và cách xấp xỉ f 00 (xi ):

x t P 00 (xi ) Xấp xỉ f 00 (xi )


−y3 + 4y2 − 5y1 + 2y0 −y3 + 4y2 − 5y1 + 2y0
x0 0 f 00 (x0 ) '
h2 h2
y2 − 2y1 + y0 yi+1 − 2y i + yi −1
x1 1 f 00 (xi ) '
h2 h 2
y3 − 2y2 + y1
x2 2
h2
2y3 − 5y2 + 4y1 − y0 2yn − 5yn−1 + 4yn−2 − yn−3
x3 3 2
f 00 (xn ) ' .
h h2

Ngoài ra

yi+2 − 3yi+1 + 3yi − yi −1


f 000 (xi ) ' , i = 1, n − 2
h3
y3 − 3y2 + 3y1 − y0 yn − 3yn−1 + 3yn−2 − yn−3
f 000 (x0 ) ' ; f 000 xn−1 , f 000 (xn ) '

.
h3 h3

2. Tính gần đúng tích phân


Z b
Xét I = f (x) dx.
a
a) Phương pháp hình thang:
i) Phân hoạch [a, b] thành n khoảng bởi

x0 = a < x1 < x2 < ... < xn = b.

Đặ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

ii) Trên [x0 , x1 ] xét hai mốc nội suy x0 , x1 :

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

Nguyễn Đức Thịnh 33 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

  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

Sai số của phương pháp


M2 (b − a) d 2
ε= (2.14)
12
trong đó M2 ≥ |f 00 (x)| , ∀x ∈ [a, b].
b−a
Với phân hoạch đều: xi − xi −1 = h, i = 1, n, ta có h = , xi = a + ih, i = 0, n, và
n
n
hX
y + y 
0 n

I' yi + yi −1 = h + y1 + y2 + ... + yn−1
2 2
i=1

M2 (b − a)3
ε= .
12n2

b) Phương pháp parabol (Simpson):


i) Phân hoạch
a = x0 < x1 < x2 < ... < x2n = b
x2i + x2i −2
trong đó x2i −1 = , i = 1, n.
2
x1 x3 x5
x0 = a x2 x4 x6
n x2i
XZ
Tương tự d = max |xi − xi −1 |, và I = f (x) dx.
1≤i ≤2n x2i −2
i=1

ii) Trên [x0 , x2 ] xét ba mốc nội suy cách đều x0 , x1 , x2 :

∆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

Sai số của phương pháp


M4 (b − a) d 4
ε= (2.16)
180

Nguyễn Đức Thịnh 34 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

trong đó M4 ≥ |f (4) (x)| , ∀x ∈ [a, b].


b−a
Với phân hoạch đều: xi − xi −1 = h, i = 1, 2n ⇒ h = , xi = a + ih, i = 0, 2n, ta có
2n
n
hX 
I' y2i + 4y2i −1 + y2i −2 =
3
i=1
2h
y + y 
0 2n
= + 2y1 + y2 + 2y3 + y4 + ... + y2n−2 + 2y2n−1
3 2
M4 − a)5
(b
ε= .
180(2n)4

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 .


Theo công thức (2.11) và (2.12):


x f (x) P 0 (x) f 0 (x) P 00 (x) f 00 (x)
0 1 1.00748 1 0.914121 1
0.2 1.21978 1.1903 1.19546 0.914121 0.929302
0.4 1.47612 1.3476 1.3596 0.658838 0.677444
0.6 1.75882 1.43222 1.45162 0.187323 0.204966
0.8 2.04901 1.40239 1.42756 −0.485541 −0.47528
1 2.31978 1.22668 1.25338 −1.27156 −1.27482
1.2 2.53968 0.898099 0.920274 −2.01429 −2.03362
1.4 2.67902 0.443601 0.455345 −2.53068 −2.56264
1.6 2.71712 −0.0772565 −0.0793387 −2.67789 −2.71365
1.8 2.64811 −0.586363 −0.601657 −2.41317 −2.44216
2 2.48258 −1.069 −1.03312 −2.41317 −1.82747
chẳng hạn
−1.47612 + 4 · 1.21978 − 3 · 1
P 0 (0) =
2 · 0.2
2.04901 − 1.47612
P 0 (0.6) =
2 · 0.2
3 · 2.48258 − 4 · 2.64811 + 2.71712
P 0 (2) = và
2 · 0.2
00 2.53968 − 2 · 2.31978 + 2.04901
P (1) = .
0.22

ii) *Phương pháp hình thang:


 
0.2 1 + 2.48258
I' + 1.21978 + 1.47612 + ... + 2.64811 = 4.22975.
2 2

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

Nguyễn Đức Thịnh 35 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

iii) * Phương pháp hình thang:


r
M2 (b − a)3 M2 (b − a)3
< 10−4 ⇒ n > = 190.378 ⇒ Chọn n = 191.
12n2 12 · 10−4

Khi đó I ' 4.23651.


* Phương pháp Simpson:
r
M4 (b − a)5 M4 (b − a)5
< 10−4 ⇒ 2n >
4
= 16.4084 ⇒ Chọn 2n = 18.
180(2n)4 180 · 10−4

Khi đó I ' 4.23653.

Nguyễn Đức Thịnh 36 ndthinh1402@gmail.com


Chương 3

Phương trình vi phân

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 )

với yi (x0 ) = yi0 , i = 1, m.


Xét phương trình vi phân cấp cao
(
y (m) = f x, y , y 0 , y 00 , ... , y (m−1)


y (i) (x0 ) = yi0 , i = 0, m − 1

Đặt y1 = y, y2 = y 0 , y3 = y 00 , ... , ym = y (m−1) , được hệ tương đương




 y10 = y2

 0
y2 = y3


...
 0
ym−1 = ym



y 0 = f (x, y , y , ... , y )

m 1 2 m

với yi (x0 ) = yi0−1 , i = 1, m.


Xét các ví dụ:
Ví dụ 1: y 0 = y − x, y (0) = 2 (nghiệm y = 1 + x + ex ).
( (
y 0 = xy − z y (1) = −1
Ví dụ 2: 0
,
z =y +z−1 z (1) = 2
Ví dụ 3: y 000 − xy 00 + y = 0; y (−1) = 1, y 0 (−1) = 0, y 00 (−1) = −2.
Đặt y 0 = z, u = y 00 (= z 0 ) thì u 0 = y 000 = xy 00 − y = xu − y. Ta có hệ
 
0
y = z
 y (−1) = 1

z0 = u , z (−1) = 0
 
u 0 = xu − y u (−1) = −2
 

37
Đại học Xây dựng Bộ môn Toán Ứng dụng

§1. Phương pháp giải tích

Tìm dãy hàm yn (x) hội tụ tới nghiệm y (x).

1. Phương pháp Picard

y0 (x) = y0 ∀x
Z x
  (3.1)
yn (x) = y0 + f t, yn−1 (t) dt
x0

và với hệ phương trình, i = 1, m:

yi0 (x0 ) = yi0


Z x
fi t, y1n−1 (t) , y2n−1 (t) , ... , ymn−1 (t) dt.
 
yin (x) = yi0 +
x0

Ví dụ 1: Tính tới y3 (x).


Z x
 
y0 (x) = 2, yn (x) = 2 + yn−1 (t) − t dt
0
x
x2
Z
y1 (x) = 2 + (2 − t)dt = 2 + 2x −
2
Z0 x  2
 
t x2 x3
y2 (x) = 2 + − t dt = 2 + 2x + −
2 + 2t −
0 2 2 6
Z x  2 3
  2
t t x x3 x4
y3 (x) = 2 + 2 + 2t + − − t dt = 2 + 2x + + − .
0 2 6 2 6 24
Bằng phương pháp quy nạp, ta có thể chứng minh

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→∞

Ví dụ 2: Tính tới y2 (x) , z2 (x).


* y0 (x) = −1, z0 (x) = 2
Z x
 
yn (x) = −1 + tyn−1 (t) − zn−1 (t) dt
1
Z x
 
zn (x) = 2 + yn−1 (t) + zn−1 (t) − 1 dt
1
x
x2
Z
3
* y1 (x) = −1 + [t (−1) − 2] dt = − 2x −
1 2 2
Z x
z1 (x) = 2 + [−1 + 2 − 1] dt = 2
1
Z x   
3 t2 25 3x 2 2x 3 x4
* y2 (x) = −1 + t − 2t − − 2 dt = − 2x + − −
1 2 2 24 4 3 8

Nguyễn Đức Thịnh 38 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

2. Phương pháp chuỗi Taylor

n
X y (k ) (x0 )
yn (x) = (x − x0 )k (3.2)
k!
k =0

và với hệ phương trình, i = 1, m:


n (k)
X yi (x0 )
yin (x) = (x − x0 )k .
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→∞

Nguyễn Đức Thịnh 39 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

Ví dụ 2: Tính y3 (x), z3 (x).


y (1) = −1, z (1) = 2
* y 0 = xy − z ⇒ y 0 (1) = 1y (1) − z (1) = 1 (−1) − 2 = −3
z0 = y + z − 1 ⇒ z 0 (1) = y (1) + z (1) − 1 = −1 + 2 − 1 = 0
* y 00 = y + xy 0 − z 0 ⇒ y 00 (1) = −1 + 1 (−3) − 0 = −4
z 00 = y 0 + z 0 ⇒ z 00 (1) = −3 + 0 = −3
* y 000 = 2y 0 + xy 00 − z 00 ⇒ y 000 (1) = 2 (−3) + 1 (−4) − (−3) = −7
z 000 = y 00 + z 00 ⇒ z 000 (1) = −4 + (−3) = −7

−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

§2. Phương pháp số

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.

1. Phương pháp Euler

yn+1 = yn + hn f (xn , yn ) (3.3)


và với hệ phương trình, i = 1, m:

yin+1 = yin + hn fi xn , y1n , y2n , ... , ymn .

Các phép tính được ghi trong bảng


n xn yn hn f (xn , yn )
...
n xn yn d = hn f (xn , yn )
n + 1 xn+1 = xn + hn yn+1 = yn + d
...

Nguyễn Đức Thịnh 40 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

2. Phương pháp Runge - Kutta RK4

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 )

và với hệ phương trình


ki1 + 2ki2 + 2ki3 + ki4
yin+1 = yin+1 +
6
trong đó

ki1 = hn fi xn , y1n , ... , ymn

Nguyễn Đức Thịnh 41 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

 
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.

Nguyễn Đức Thịnh 42 ndthinh1402@gmail.com


Đại học Xây dựng Bộ môn Toán Ứng dụng

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

Nguyễn Đức Thịnh 43 ndthinh1402@gmail.com


Chương 4

Phương trình đạo hàm riêng

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

You might also like