Như vậy ta có thể phát hiện ra nghiệm bằng cách tính trị của hàm trên các đoạn ∆x và xem chúng có đổi dấu không... pháp nội suy bậc hai để tạo ra một phương pháp tìm nghiệm của phương tr
Trang 1CHƯƠNG 5: CÁC PHƯƠNG TRÌNH PHI TUYẾN
§1. KHÁI NIỆM CHUNG
Nếu phương trình đại số hay siêu việt khá phức tạp thì ít khi tìm được nghiệm đúng. Bởi vậy việc tìm nghiệm gần đúng và ước lượng sai số là rất cần thiết.
có khoảng chứa nghiệm đủ nhỏ. Để xác định khoảng chứa nghiệm ta có thể dùng phương pháp đồ thị. Ngoài ra ta cũng có thể tìm nghiệm bằng phương pháp tìm tăng dần. Ý tưởng của phương pháp này là nếy f1(x).f2(x) < 0 thì có ít nhất một nghiệm của phương trình trong đoạn [x1, x2]. Nếu đoạn [x1, x2] đủ nhỏ thì trong đạon đó sẽ có một nghiệm duy nhất. Như vậy ta có thể phát hiện ra nghiệm bằng cách tính trị của hàm trên các đoạn ∆x và xem chúng có đổi dấu không.
Trang 3g (x)′ ≤ <q 1 a < < x b (4) trong đó q là một hằng số thì phương pháp lặp (3) hội tụ
Trang 4f(x) liên tục trên đoạn [a, b] và f(a).f(b) < 0.
Chia đoạn [a, b] thành 2 phần bởi chính
Trang 6x 1 ξ
Trang 8x
Trang 10Phương trình (2) chính là biểu thức tổng quát của phép lặp. Hai giá trị đầu tiên x1 và x2 cần để khởi động phép lặp. Quá trình lặp được minh hoạ bằng hình a
Trang 11pháp nội suy bậc hai để tạo ra một phương pháp tìm nghiệm của phương trình f(x) = 0 rất hiệu quả. Phương pháp này dùng khi đạo hàm của f(x) khó tính hay không thể tính được. Giả sử ta cần tìm nghiêm trong đoạn [x1, x2]. Quá trình tìm nghiệm bắt đầu bằng việc chia đôi đoạn [x1, x2] bằng điểm x3.
Trang 12Trong quá trình này ta tính được f(x1), f(x2) và f(x3). Qua 3 điểm này ta có một đường cong bậc 2 và tìm được nghiệm x của đường cong bậc 2 này. Nếu x nằm trong đoạn [x1, x2] như hình trên thì giá trị này được chấp nhận. Tiếp theo ta tìm nghiệm trong đoạn [x1, x3] hay [x3, x2] tuỳ theo vị trí của x.
Trang 14với f(x) thoả mãn điều kiện hội tụ của phép lặp, nghĩa là với mọi x∈ [a, b] ta có:
Trang 16xỉ hàm bằng một đường thẳng. Tuy nhiên để giảm lượng tính toán và để nghiệm hội tụ nhanh hơn ta có thể dùng phương pháp Muller. Nội dung của phương pháp này là thay hàm trong đoạn [a, b] bằng một đường cong bậc 2
mà ta hoàn toàn có thể tìm nghiệm chính xác của nó.
Trang 171
2 1
2 0
b
)1(h
f)1(ffa
+γ+
−γ
Tiếp đó ta chọn x0 làm một trong 3 điểm để tính xấp xỉ mới. Các điểm này được chọn gần nhau nhất, nghĩa là nếu nghiệm n ở bên phải x0 thì ba điểm tính mới là x0, x1 và n; nếu n nằm bên trái x0 thì 3 điểm tính mới là x0, x2 và nghiệm. Tiếp tục quá trình tính đến khi đạt độ chính xác yêu cầu thì dừng lại.
x 0, f 0
x 1, f 1
x 2, f 2
Trang 19′
f(x)g(x) = x ‐
Ta xây dựng hàm halley1() để thực hiện thuật toán trên
Trang 211 e
Trang 221 0.5f.ff
f(x ) f (x ) f (x )f
Trang 23i
i i
Trang 24x
fx
fx
fx
f
x
fx
fx
fx
f
x
fx
fx
fx
Trang 32Trước hết ta tính ma trận Jacobi A0 = J([P0]) và dùng nó tính lần lặp thứ nhất theo phương pháp Newton.
Trang 34P(xo) = ( ((a0x + a1)x+ a2x)+ + an ‐1 )x + an (2)
Ban đầu P = 0
Bước 0 k = 0 P = ao
Bước 1 k = 1 P = aox + a1
Trang 35Bước 2 k = 2 P = (aox + a1)x + a2
Bước n‐1 k = n ‐ 1 P = P(xo) = ( ((aox + a1)x+a2x)+ +an‐1)x
Bước n k = n P = P(xo) = ( ((aox + a1)x+a2x)+ +an‐1)x + an
Ta xây dựng hàm horner() để tính trị của đa thức tại x:
) n ( 2
0
0 0
0 0
n
!2
)x(P)
xx(
!2
)x(P)xx(
!1
)x(P)x(P)
Pn‐1 (x) = boxn‐1 + bo‐1xn ‐ 2 + b2xn ‐ 3 + + bn‐1 (4) Thuật toán để tìm các hệ số nhận được bằng cách so sánh (1) và (3) :
bo = ao
bi = ai + bi‐1xo
bn = Pn(xo)
So sánh (2) và (3) ta có :
Trang 36P (x ) P (x )(x x )P (x ) P (x ) P (x ) (x x ) (x x )
P (x )
(x x )2!
) n ( 2
0
0 0
0 1
n
!2
)x(P)
xx(
!2
)x(P)xx(
!1
)x(P)x(P)x
0 0
0 1
!2
)x(P)
xx(
!2
)x(P
!1
)x(P)x
)x(P)x(
0 1 n
Trang 37Pn(x) = (x ‐ r)(x ‐ q)n‐1 (3)
Bài toán của ta là cho đa thức (3) dưới dạng:
Pn(x) = a1xn + a2xn‐1 + ⋅⋅⋅ + an+1
và cần tìm r(chú ý là q cũng chưa biết).
Trang 40ϕ = aoyk+n + a1yk+n‐1 + + anyk = 0 (1)
Đây là một phương trình sai phân tuyến tính hệ số hằng. Khi cho trước các giá trị đầu yo, y1, yn‐1 ta tìm được các giá trị yn, yn+1, Chúng được gọi là nghiệm của phương trình sai phân tuyến tính (1).
Đa thức
Pn(x) = a0xn + a1xn‐1 + +an‐1x + an (2)
với cùng một hệ số ai như (1) được gọi là đa thức đặc tính của phương trình sai phân tuyến tính (1). Nếu (2) có n nghiệm phân biệt x1, x2, , xn thì (1) có các nghiệm riêng là
k i
y =
Nếu yi là các nghiệm của phương trình sai phân là tuyến tính (1),thì
yk =c1xk1 +c2xk2 +⋅ ⋅⋅+cnxkn (3)
Trang 41k
1
2 2
1 k
1 1 k
x
xc
c1xc
=
+ +
+
1 k
1
2 2
1 1
k 1 1 1
k
x
xc
c1xc
1 k
1
2 2 1
1 k
1
k
x
xc
c1
x
xc
c1xy
1 2 k
1 k
Để tính nghiệm lớn nhất của đa thức, ta xuất phát từ các nghiệm riêng
y1 = 0, y1 = 0, , yn =1 để tính yn+1. Cách tính này được tiếp tục để tính yn+2 xuất phát từ y1 = 0, y2 = 0, ,yn+1 và tiếp tục cho đến khi yk+1/yk không biến đổi nữa. Trị số của yk+n được tính theo công thức truy hồi :
( 1 k n 1 n k)
0 n
Trang 43
§17. PHƯƠNG PHÁP LẶP BERGE ‐ VIETTE
Các nghiệm thực, đơn của một đa thức Pn(x) được tính toán khi sử dụng phương pháp Newton
)x(P
)x(Pxx
i n
i n i 1
Để bắt đầu tính toán cần chọn một giá trị ban đầu xo. Chúng ta có thể chọn một giá trị xo nào đó, ví dụ :
1 n
n 0
a
ax
)x(Px
x
0 n
0 n 0
1 = − ′
)x(P
)x(Px
x
1 n
1 n 1
Trang 44xi+1 là một nghiệm của đa thức.
Phép chia Pn(x) cho (x ‐ α1) cho ta Pn‐1(x) và một nghiệm mới khác được tìm theo cách trên khi chọn một giá trị xo mới hay chọn chính xo = α1. Khi bậc của đa thức giảm xuống còn bằng 2 ta dùng các công thức tìm nghiệm của tam thức để tìm các nghiệm còn lại.
Ta xây dựng hàm birgeviette() để thực hiện thuật toán trên
Trang 46R1(x) = αx + β
Để có được một thương đúng, cần tìm các giá trị s và p sao cho R1(x) = 0 (nghĩa là α và β triệt tiêu). Với r và s đã cho, các hệ số bi của đa thức Pn‐2(x) và các hệ số α và β được tính bằng phương pháp truy hồi. Các công thức nhận được khi khai triển biểu thức Pn(x) = Q2(x).Pn‐2(x) + R1(x) và sắp xếp lại các số hạng cùng bậc:
a1xn + a2xn‐1 + a3xn‐2 + + an+1 = (x2 ‐ rx ‐ s)( b1xn‐2 + b2xn‐3 + b3xn‐4 + + bn‐1)
Ta biết rằng bn‐1 và bn là hàm của s và p :
bn = f(r, s)
Trang 47i i
f(r ,s )F(X )
∂
∂ ,
gr
∂
∂ ,
gs
∂
∂ . Các đạo hàm này được tính theo công thức truy hồi.
Do b1 = a1 nên
Trang 48n 1 n n 2
b c b cs
Trang 511 0
Trang 52m 11 0
2 1
n
n 1
cxccxc
cx
0
2 m 2
1
n m n
n 1
cx
ccx
c
cx
1 x
Trang 53
2 (s 1) (s)
k 2
i 1
2 (s 1) (s) (s) (s)
2 (s 1) (s)
Trang 56Ta dùng chương trình ctschroder.m với m = 2:
Trang 57)x(Pxx
i n
i n i 1
Để bắt đầu tính toán cần chọn một giá trị ban đầu xo. Chúng ta có thể chọn một giá trị xo nào đó, ví dụ :
1 n
n 0
a
ax
)x(Px
x
0 n
0 n 0
)x(P
)x(Px
x
1 n
1 n 1
Trang 58xi+1 là một nghiệm của đa thức.
Phép chia Pn(x) cho (x ‐ α1) cho ta Pn‐1(x) và một nghiệm mới khác được tìm theo cách trên khi chọn một giá trị xo mới hay chọn chính xo = α1. Khi bậc của đa thức giảm xuống còn bằng 2 ta dùng các công thức tìm nghiệm của tam thức để tìm các nghiệm còn lại.
Ta xây dựng hàm birgeviette() để thực hiện thuật toán trên
Trang 60a1xn + a2xn‐1 + a3xn‐2 + + an+1 = (x2 ‐ rx ‐ s)( b1xn‐2 + b2xn‐3 + b3xn‐4 + + bn‐1)
Trang 61i i
f(r ,s )F(X )
Trang 62∂ ,
gr
∂
gs
Trang 63. .
cn = bn + rcn‐1 + scn‐2
Như vậy ta có:
n n 1 n 1 n 2 2
Trang 66m 1 1 0
2 1
n
n 1
cxccxc
cx
0
2 m 2
1
n m n
n 1
cx
ccx
c
cx
Đầu tiên từ (1) ta xây dựng phương trình mới có nghiệm là 2
1 x
Trang 67n 2 2 2 2 2 2 2
( 1) P(x)P( x) a (x− − = −x )(x −x )⋅⋅⋅(x −x ) Thay x2 = ‐y ta có :
đó các hệ số được xác định bằng:
Trang 682 (s 1) (s)
k 2
i 1
2 (s 1) (s) (s) (s)
2 (s 1) (s)