Bài giảng Phương pháp số - Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến
Khoảng phân ly nghiệm
Định nghĩa. Khoảng [a,b] được gọi là khoảng phân ly nghiệm của phương trình (4.1) nếu
nó chứa một và chỉ một nghiệm của phương trình đó.
Định lý. Nếu hàm số f(x) liên tục, đơn điệu trên đoạn [a,b] và f(a)f(b)<0 thì="" đoạn="" [a,b]="">0>
một khoảng phân ly nghiệm của phương trình (4.1).
Ví dụ. Xét phương trình
f(x) = x2 - 2 =0
Ta thấy hàm số f(x) liên tục, và f'(x) = 2x.
Ta xét đoạn [1,2]. Ta có f(1) = -1; f(2) = 2. Vậy f(1)f(2)<0. hàm="" số="" f(x)="" liên="" tục="" và="" đơn="">0.>
vì f'(x) = 2x >0 trên đoạn [1,2]. Vậy đoạn [1,2] là khoảng phân ly nghiệm của phương trình trên.
Tuy nhiên ví dụ sau đây chứng tỏ rằng điều kiện liên tục, đơn điệu chỉ là điều kiện đủ. Hàm
số không đơn điệu trong một khoảng nào đó vẫn có thể chỉ có một nghiệm duy nhất.
Tóm tắt nội dung tài liệu: Bài giảng Phương pháp số - Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến
Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến CHƯƠNG 4 TÍNH GẦN ĐÚNG NGHIỆM CỦA PHƯƠNG TRÌNH PHI TUYẾN MỤC ĐÍCH, YÊU CẦU Sau khi học xong chương 4, yêu cầu sinh viên: 1. Hiểu được thế nào là nghiệm và khoảng phân ly nghiệm 2. Nắm được một số phương pháp lặp để tìm nghiệm gần đúng của phương trình phi tuyến. 3. Biết vận dụng các phương pháp trên vào các bài toán thực tế. 4.1. NGHIỆM VÀ KHOẢNG PHÂN LY NGHIỆM 4.1.1. Nghiệm của phương trình một ẩn Xét phương trình một ẩn f(x) = 0 (4.1) trong đó f(x) là một hàm số cho trước của đối số x. Giá trị x0 được gọi là nghiệm của (4.1) nếu f(x0) = 0 Nghiệm của phương trình (4.1) có thể là số thực hoặc số phức, nhưng ở đây ta chỉ khảo sát các nghiệm thực. 4.1.2. Sự tồn tại nghiệm của phương trình Định lý. Nếu hàm số f(x) liên tục trên đoạn [a,b] và f(a) và f(b) trái dấu, tức là f(a)f(b)<0 (4.2) Thì phương trình (4.1) có ít nhất một nghiệm trong khoảng [a,b]. 4.1.3. Khoảng phân ly nghiệm Định nghĩa. Khoảng [a,b] được gọi là khoảng phân ly nghiệm của phương trình (4.1) nếu nó chứa một và chỉ một nghiệm của phương trình đó. Định lý. Nếu hàm số f(x) liên tục, đơn điệu trên đoạn [a,b] và f(a)f(b)<0 thì đoạn [a,b] là một khoảng phân ly nghiệm của phương trình (4.1). Ví dụ. Xét phương trình f(x) = x2 - 2 =0 Ta thấy hàm số f(x) liên tục, và f'(x) = 2x. 68 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Ta xét đoạn [1,2]. Ta có f(1) = -1; f(2) = 2. Vậy f(1)f(2)<0. Hàm số f(x) liên tục và đơn điệu vì f'(x) = 2x >0 trên đoạn [1,2]. Vậy đoạn [1,2] là khoảng phân ly nghiệm của phương trình trên. Tuy nhiên ví dụ sau đây chứng tỏ rằng điều kiện liên tục, đơn điệu chỉ là điều kiện đủ. Hàm số không đơn điệu trong một khoảng nào đó vẫn có thể chỉ có một nghiệm duy nhất. Ví dụ. Xét phương trình f(x) = x3 - x -1 =0 (4.3) Ta sẽ chứng tỏ rằng phương trình này có nghiệm thực và xác định khoảng phân ly nghiệm. Ta thấy hàm số f(x) liên tục, và f'(x) = 3x2 - 1 =0 tại x = ± 3 1 . Ta có bảng biến thiên sau: x - ∞ - 3 1 3 1 +∞ f'(x) + 0 - 0 + f(x) +∞ M - ∞ m trong đó f(M) = f(- 3 1 ) = - 33 1 + 3 1 -1 = 33 2 -1 <0 Vậy đồ thị chỉ cắt trục hoành tại một điểm duy nhất và do đó phương trình (4.3) chỉ có một nghiệm duy nhất (Mặc dù trên đoạn [ - 3 1 ;2] hàm số không đơn điệu) Ngoài ra theo bảng biến thiên ta có: hàm số f(x) liên tục,đơn điệu trên đoạn [1;2] và f(1) = 13 -1 -1 =-1 < 0 f(2) = 23 -2 -1 = 5 > 0 Tức là f(1)*f(2)<0 Vậy khoảng [1,2] chính là khoảng phân ly nghiệm. 4.1.4. Về vấn đề đánh giá sai số nghiệm xấp xỉ Cũng như các phương pháp gần đúng nói chung, khi tìm nghiệm gần đúng của phương trình siêu việt, ta thường thiết lập cả một dãy x0, x1,...,xn,... sao cho xn -> α khi n-> ∞, trong đó α là nghiệm đúng của phương trình (4.1). Do giả thiết liên tục của hàm f(x) ta có +∞>−nlim f(xn) = f(α) = 0 Điều này có nghĩa là khi xn khá gần α thì f(xn) khá gần f(α) và có thể xem f(xn) ≈ 0, hay xn thực sự có thể xem là xấp xỉ của nghiệm. 69 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Người ta thường cho trước số ε>0 đủ nhỏ và nếu |xn-α| ≤ ε (4.4) thì chọn xn làm nghiệm xấp xỉ và dừng quá trình tính toán. Một câu hỏi đặt ra là với cách chọn như vậy thì f(xn) đã có thể thực sự xem là xấp xỉ của f(α) không, có bảo đảm rằng |f(xn)- f(α)| = |f(xn)| là khá gần 0 không? Cũng có lúc ta chỉ quan tâm là xn xấp xỉ α tốt như thế nào thôi, như trong ví dụ áp dụng tính 2 mà ta sẽ xét đến chẳng hạn, khi đó ta không cần quan tâm đến câu hỏi này lắm. Nhưng cũng có những trường hợp ta lại quan tâm là f(xn) có thể coi là gần 0 không, (Ví dụ để có thể bỏ qua trong quá trình tính toán) thì lúc này sự xấp xỉ của xn so với α chưa đủ, mà ta còn phải xét cả giá trị |f(xn)| nữa. Chính vì lý do này mà trong các chương trình tính toán chúng tôi đưa thêm điều kiện dừng về f(xn). Quá trình tính toán sẽ dừng nếu điều kiện (4.4) và |f(xn)| < δ (4.5) thỏa mãn. Để bạn đọc hiểu rõ hơn những điều chúng tôi vừa trình bày, chúng ta xét ví dụ sau đây: Ví dụ. Ta xét 2 hàm sau đây: f(x) = (3363 - 2378 2 ) - (x-1)10 g(x) = (3363 - 2378x) - ( 2 -1)10 và xét 2 phương trình f(x) = 0 (4.6) g(x) = 0 (4.7) Ta có thể thấy rằng f( 2 ) = g( 2 ) =0 Vì không tính được α = 2 nên chúng ta sẽ dùng kết quả độ chính xác gấp đôi do máy tính thực hiện bằng hàm sqrt(2). Giá trị này vào khoảng 1.41421356237309551454746218. Ta định nghĩa dãy xn như sau x0 =1 | x0 -α | < 0.5e+01 x1 =1.4 | x1 -α | < 0.5e-01 x2 =1.41 | x2 -α | < 0.5e-02 x3 =1.414 | x3 -α | < 0.5e-03 x4 =1. 4142 | x4 -α | < 0.5e-04 . . . Rõ ràng dãy xn hội tụ đến α. Ta có bảng sau đây biểu diễn mối liên hệ giữa dãy xn , sai số trên dãy xn là εn, hàm f(xn) và hàm g(xn). 70 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến n xn εn f(xn) g(xn) 0 1 0.5 0.0001486768 985 1 1.4 0.5e-01 0.0000438191 34 2 1.41 0.5e-02 0.0000144501 10 3 1.414 0.5e-03 0.0000007647 0.5 4 1.4142 0.5e-04 0.0000000488 0.03 5 1.41421 0.5e-05 0.0000000128 0.008 6 1.414213 0.5e-06 0.0000000002 0.001 7 1.4142135 0.5e-07 0.0000000002 0.0001 Rõ ràng nếu chỉ dựa vào độ lệch | xn -α |, hay trong thực tế là | xn - xn-1 | để chọn nghiệm xấp xỉ, ta sẽ có những kết quả rất khác biệt giữa 2 phương trình (4.6) và (4.7). Với phương trình (4.6) thì tất cả các giá trị xn trong bảng trên đều có thể xem là nghiệm gần đúng, và như vậy ε = 0.5 cũng là đủ. Ngược lại nếu ta nói rằng giá trị xn = 1.41 là nghiệm xấp xỉ của phương trình (4.7) với độ chính xác 0.5% thì rõ ràng không ổn, vì giá trị g(1.41) =10 còn là giá trị quá lớn so với 0. Thậm chí khi ε đạt độ chính xác 0.0005 thì g(1.4142) = 0.03 vẫn còn lớn so với 0, nên nếu ta nói rằng 1.4142 là nghiệm xấp xỉ của (4.7) thì cũng không ổn. Nếu bây giờ ta thay điều kiện (4.4) bằng điều kiện (4.5) thì ta không còn gặp điều phiền toái trên đây nữa. Với phương trình (4.6) ta chỉ cần chọn n rất bé là đủ, còn với phương trình (4.7) thì ta phải chọn n lớn hơn nếu muốn đạt được độ chính xác như mong muốn. Trong thực hành việc thử điều khiện (4.5) được thực hiện rất dễ dàng. Vì vậy chúng tôi nghĩ rằng trong những bài toán tìm nghiệm xấp xỉ ta nên thêm một cột f(xn), chúng ta sẽ thấy được tốc độ hội tụ đến 0 của f(xn) và vì vậy sẽ dừng bước tính toán ở thời điểm thích hợp hơn. 4.2. MỘT SỐ PHƯƠNG PHÁP LẶP GIẢI PHƯƠNG TRÌNH 4.2.1. Mở đầu Ý tưởng chung của phương pháp lặp tìm nghiệm của phương trình (4.1) là xây dựng một dãy các số x0, x1,..., xn,... với x0 là giá trị xuất phát sao cho +∞>−n lim xn = α Như vậy với n khá lớn, ta có thể xem xn là xấp xỉ của nghiệm α. Ta có thể đưa ra một đánh giá về sai số tổng quát cho hầu hết các phép lặp như sau: Định lý. Với hàm f(x) liên tục và khả vi trên đoạn [a,b], ngoài ra ∃ m1 sao cho 0 < m1 ≤ |f'(x)| với ∀ x∈ [a,b] (4.8) khi đó ta có đánh giá |xn - α| ≤ 1 |)(| m xf n (4.9) 71 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến 4.2.2. Phương pháp chia đôi (bisection) a. Mô tả phương pháp Giả sử f(x) liên tục trên [a,b] và f(a), f(b) trái dấu (đoạn [a,b] không cần phải là khoảng phân ly). Như vậy trong khoảng này phải có một nghiệm α. Ta sẽ tìm nghiệm này bằng cách chia đôi khoảng [a,b], chọn khoảng con chứa nghiệm, rồi chia đôi tiếp khoảng con chứa nghiệm này cho đến khi tìm thấy nghiệm hoặc khoảng con đã đủ nhỏ để bảo đảm rằng mọi giá trị trong khoảng đó đều có thể xem là xấp xỉ nghiệm. Cụ thể trước hết ta đặt a0 = a, b0 =b và cho trước một giá trị ε > 0 đủ nhỏ để dùng làm điều kiện xấp xỉ nghiệm và dừng quá trình tính toán. Sau đó ta thực hiện các bước sau: - Bước 0: Đặt x0 = 2 00 ba + Vì f(a0)f(b0)<0, do đó một trong 2 trường hợp sau xảy ra: a. f(x0) = 0. Ta có x0 là nghiệm và kết thúc. b. f(x0) ≠ 0. Nếu f(a)f(x0)<0 thì nghiệm sẽ ở trong khoảng [a, x0] do đó ta đặt a1 = a0 , b1 = x0 Nếu f(x0)f(b)<0 thì nghiệm sẽ ở trong khoảng [x0,b] do đó ta đặt a1 = x0 , b1 = b Vì nghiệm α ∈[a1,b1], ta có | x0- α| ≤ | b1-a1| = 2 ab − Chuyển sang bước 1. - Bước 1: Đặt x1 = 2 11 ba + Vì f(a1)f(b1)<0, do đó một trong 2 trường hợp sau xảy ra: a. f(x1) = 0. Ta có nghiệm là x1 và kết thúc. b. f(x1) ≠ 0. Nếu f(a1)f(x1)<0 thì nghiệm sẽ ở trong khoảng [a1, x1] do đó ta đặt a2 = a1 , b2 = x1 Nếu f(x1)f(b1 )<0 thì nghiệm sẽ ở trong khoảng [x1,b1] do đó ta đặt a2 = x1 , b2 = b1 Vì nghiệm α ∈[a2,b2], ta có | x1- α| ≤ | b2-a2| = 22 ab − Chuyển sang bước 2. . . . - Bước n: Đặt xn = 2 nn ba + 72 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Vì f(an)f(bn)<0, do đó một trong 2 trường hợp sau xảy ra: a. f(xn) = 0. Ta có nghiệm là xn và kết thúc. b. f(xn) ≠ 0. Nếu f(an)f(xn)<0 thì nghiệm sẽ ở trong khoảng [an, xn] do đó ta đặt an+1 = an , bn+1 = xn Nếu f(xn)f(bn )<0 thì nghiệm sẽ ở trong khoảng [xn,bn] do đó ta đặt an+1 = xn , bn+1 = bn Vì nghiệm α ∈[an+1,bn+1], ta có | xn - α| ≤ | bn+1-an+1| = 12 + − n ab Ta kiểm tra xem nếu 12 + − n ab ≤ ε thì kết thúc, nếu không thì Chuyển sang bước n+1. b. Sự hội tụ của phương pháp và sai số Dãy a0,a1,...,an đơn điệu tăng và bị chặn bởi b, bãy b0,b1,...,bn đơn điệu giảm và bị chặn bởi a mặt khác dãy bn-an dương và giảm dần đến 0, như vậy khi n -> ∞ ta có a +∞>−nlim n = b+∞>−nlim n = x+∞>−nlim n = α Do tính liên tục của hàm f và f(an)f(bn)<0 ta có f(a +∞>−nlim n)f(bn) = |f(α)| 2 ≤ 0 Suy ra f(α) = 0, hay α chính là nghiệm của phương trình (4.1). Tóm lại xuất phát từ a0 = a và b0 = b, cho n = 0,1,2,... nếu ta lấy nghiệm gần đúng là xn = an hoặc xn = bn thì sai số là |xn - α| ≤ n ab 2 − (4.10) Còn nếu ta lấy nghiệm gần đúng là 2 nn ba + thì sai số là |xn - α| ≤ 12 + − n ab (4.11) (4.9) chính là đánh giá sai số của nghiệm xấp xỉ tính bằng thuật toán đã trình bày ở trên đây. c. Ví dụ Ta xét phương trình f(x) = sin(x) - x2cos(x) =0. Phương trình này có nghiệm đúng là x = 0. Ta thấy nếu a= -0.5, b = 2 thì f(a) = -0.6988, f(b) = 2.5739, tức là trái dấu. Vậy ta có thể áp dụng phương pháp chia đôi. Đặt ε = 1.0e-03 ta có sau 8 bước lặp ta nhận được nghiệm là 0.0005. d. Nhận xét về thuật toán chia đôi Ưu điểm của phương pháp chia đôi là đơn giản. Nhược điểm là tốc độ hội tụ chậm, không tận dụng được tính chất của hàm số f(x). Dù hàm số có dạng gì thì chúng ta cũng chỉ chia đôi, xét 73 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến giá trị của hàm tại các điểm chia rồi quyết định chọn đoạn nào để chia tiếp. Nếu khoảng [a,b] ban đầu lớn thì phải khá nhiều bước mới đạt được độ chính xác cần thiết. e. Cài đặt chương trình cho thuật toán chia đôi Phương pháp chia đôi đòi hỏi phải biết hàm f(x) và 2 giá trị a và b là 2 điểm cận dưới và cận trên của khoảng quan sát. Trong chương trình chúng tôi dùng chương trình con chiadoi (double (*f)(double),double &x) để thực hiện thuật toán chia đôi. Ở đây chúng tôi dùng con trỏ tới hàm là f, như vậy chúng ta không phụ thuộc vào một dạng hàm cụ thể. Sau này ta có thể gọi thủ tục chia đôi cho một hàm do ta định nghĩa hoặc có sẵn, ví dụ chiadoi(sin,xx), chiadoi(g,x),... Thủ tục chiadoi được viết dưới dạng hàm. Khi chạy thủ tục này ta sẽ phải nhập giá trị a,b. Chương trình sẽ kiểm tra điều kiện f(a)f(b)<0; nếu không thỏa mãn hoặc số bước lặp đã vượt quá số bước lặp tối đa thì hàm trả về giá trị false. Trong trường hợp thành công thì hàm trả về giá trị true và giá trị x là nghiệm xấp xỉ. Sau đây là đoạn chương trình chính thể hiện thuật toán: /*Phuong phap tim nghiem bang cach chia doi lien tiep khoang [a,b]*/ int chiadoi(double (*f)(double),double a,double b,double &x, double &errx,double &erry,int &buoclap) /*Phuong phap chia doi de tim nghiem f(x)=0 trong khoang trai dau [a,b]. Neu co nghiem thi tra ve gia tri true, neu khong thi tra ve gia tri false. x la nghiem, errx, erry sai so tren x va tren y, buoclap la so buoc lap da thuc hien*/ {clrscr(); if(f(a)==0) {x=a;errx=erry=0;buoclap=0;return true;} if(f(b)==0) {x=b;errx=erry=0;buoclap=0;return true;} if(f(a)*f(b)>0) {cout<<endl<<"f(a) va f(b) khong trai dau";delay(1000);return false;} int k=1;double c,aa,bb;aa=a;bb=b; kvecto xc; xc[0]=a;xc[1]=b; while(true) {c = (a+b)/2; if(f(a)*f(c)<0) b=c;else a=c; xc[++k]=c; if(b-a<epsix && fabs(f(c))<epsiy) break;//f(c) = 0 if(k>kmax) {cout<<endl<<"Lap chua hoi tu sau "<<kmax<<" buoc"; delay(1000);return false; } } 74 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến x=c; errx=b-a;erry=fabs(f(c));buoclap=k; return true; } 4.2.3. Phương pháp dây cung a. Mô tả phương pháp Điều kiện để thực hiện phương pháp dây cung cũng giống như phương pháp chia đôi, là f(x) liên tục trên [a,b] và f(a), f(b) trái dấu. Về nguyên tắc phương pháp dây cung cũng giống như phương pháp chia đôi, nghĩa là dựa vào hai điểm a0 = a, b0 = b ban đầu ta sẽ chọn tiếp các điểm xn nằm trong khoảng [an,bn], sao cho khoảng chọn luôn luôn chứa nghiệm đúng của phương trình. Ở phương pháp chia đôi, xn được chọn là điểm giữa của khoảng [an ,bn ] và khoảng [an+1 ,bn+1] tiếp theo sẽ là khoảng chứa nghiệm trong 2 khoảng con [an ,xn ] hoặc [xn,bn]. Như vậy khoảng [an,bn] sẽ nhỏ dần tới 0, cho đến lúc ta có thể xem tất cả các điểm nằm trong khoảng là xấp xỉ của nghiệm. Còn ở phương pháp dây cung giá trị xn được chọn tiếp theo lại là giao điểm của dây cung nối 2 điểm biểu diễn đồ thị tại 2 đầu khoảng con với trục hoành. Ta lưu ý là trong phương pháp chia đôi độ dài khoảng con [an,bn] tiến tới 0, nhưng trong phương pháp dây cung nói chung điều này không đúng. Có thể một trong 2 giá trị a hoặc b sẽ giữ nguyên. Giá trị này sẽ luôn đóng vai trò là an hoặc bn . Ví dụ nếu b giữ nguyên và luôn luôn đóng vai trò bn thì an sẽ thay đổi và chính là xn-1, n=1,2,...Dãy x0,x1,...,xn,... là dãy đơn điệu tăng hoặc giảm và hội tụ đến nghiệm đúng. Không như ở phương pháp chia đôi, điều kiện dừng ở đây không còn là độ dài khoảng [an,bn], mà là độ dài khoảng [xn, xn-1]. Ta sẽ dừng thuật toán và xem xn là nghiệm xấp xỉ nếu |xn - xn-1| ≤ ε hoặc (và) |f(xn)| ≤ δ. Ta biết rằng phương trình đường thẳng đi qua 2 điểm (a,f(a)) và (b,f(b) là ab ax − − = )()( )( afbf afy − − Điểm cắt trục hoàng có tọa độ (c,0) do đó ta có ab ac − − = )()( )( afbf af − − Từ đây c = a - )()( ])[( afbf abaf − − = )()( )()( afbf abfbaf − − (4.12) Trước hết ta đặt a0 = a, b0 =b và cho trước một giá trị ε > 0 và δ>0 đủ nhỏ để dùng làm điều kiện xấp xỉ nghiệm và dừng quá trình tính toán. Ta cũng cho trước một số kmax để làm số bước lặp tối đa. Sau kmax bước mà ... Mô tả phương pháp Giả sử phương trình (4.1) có nghiệm trong khoảng [a,b] và ta biến đổi được về dạng tương đương x = ϕ(x) (4.17) Tiếp theo ta chọn một giá trị x0 ∈ [a,b] làm giá trị xấp xỉ ban đầu rồi tính dần các nghiệm xấp xỉ xn theo quy tắc xn = ϕ(xn-1), n=1,2,... (4.18) Phương pháp này gọi là phương pháp lặp và hàm ϕ gọi là hàm lặp. b. Điều kiện hội tụ của phương pháp và đánh giá sai số Điều kiện hội tụ của phương pháp lặp: Định lý. Giả sử phương pháp lặp (4.17) và (4.18) thỏa mãn các điều kiện sau: (1) [a,b] là khoảng phân ly nghiệm α của phương trình (4.17) (2) Mọi xn tính theo (4.18) đều ∈ [a,b]. (3) Hàm ϕ(x) có đạo hàm ϕ'(x) và thỏa mãn: | ϕ'(x) | ≤ q < 1, x∈ (a,b) Khi đó phương pháp lặp (4.18) hội tụ, tức là: xn → α khi n → ∞ Chứng minh. Chúng ta sẽ dùng đến công thức Lagrange như sau: Cho hàm số g(x) liên tục trên [a,b] và có đạo hàm trong (a,b). Khi đó tồn tại c ∈ (a,b) sao cho g(b)-g(a) = g'(c)(b-a). Bây giờ ta chứng minh định lý trên. Vì α là nghiệm của (4.4) ta có: α = ϕ(α) theo công thức lặp thì xn = ϕ(xn-1) Trừ 2 đẳng thức này vế với vế ta có α -xn = ϕ(α) - ϕ(xn-1) (4.19) Áp dụng công thức Lagrange vào vế phải của (4.19) ta có α -xn = ϕ'(c)(α - xn-1) 79 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Từ đây suy ra | α -xn | = | ϕ'(c) | |α - xn-1| ≤ q |α - xn-1| (4.20) Vì bất đẳng thức này đúng với mọi n, do đó cho n giảm dần đến 1 ta có | α -xn | = | ϕ'(c) | |α - xn-1| ≤ qn |α - x0| → 0 khi n → ∞. (4.21) Vậy ta có | α -xn | → 0 khi n → ∞, là điều cần chứng minh. Đánh giá sai số phương pháp lặp: Ta có thể dùng công thức (4.21) để đánh giá sai số của phương pháp lặp đơn. Tuy nhiên trong thực tế giá trị α lại chưa biết nên ta phải thay khoảng [α,x0] bằng khoảng [a,b], và như vậy | α -xn | ≤ qn | b - a | (4.22) Tuy nhiên công thức này phụ thuộc vào a, b và không sát với thực tế, nhất là khi khoảng [a,b] lớn. Sau đây chúng ta sẽ đưa ra một cách đánh giá khác, sát với thực tế hơn. Từ (4.20) ta có | α -xn | ≤ q |α - xn-1| = q | α -xn + xn - xn-1| ≤ q | α -xn | + q | xn - xn-1| Vậy (1-q) | α -xn | ≤ q | xn - xn-1| Hay | α -xn | ≤ q q −1 | xn - xn-1| (4.23) Mặt khác vì | ϕ'(x) | ≤ q < 1, x∈ (a,b) Do đó | xn -xn-1 | = | ϕ(xn-1) - ϕ(xn-2)| = | ϕ'(c) | | xn-1 - xn-2| ≤ q | xn-1 - xn-2| Từ đây suy ra | xn -xn-1 | ≤ qn-1 | x1 - x0| Tức là | xn -xn-1 | hội tụ đến 0. Kết hợp với (4.22) ta có | α -xn | ≤ q q −1 | xn - xn-1| ≤ q n q−1 1 | x1 - x0| (4.24) Áp dụng (4.24) ta có thể đánh giá sai số | xn - α | qua các giá trị lặp vừa tính. Về sau này khi xét điều kiện để dừng quá trình lặp người ta thường đánh giá qua |xn-xn-1|. Nếu sai số cho phép là ε thì quá trình lặp sẽ dừng nếu |xn-xn-1| ≤ ε. Ví dụ. Ta xét phương trình: f(x) = x3 - x - 1 = 0 (4.25) 80 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Theo ví dụ ở phần (4.1.3) hàm số này luôn đơn điệu, liên tục trên [1;2] và f(1) = -1, f(2) =5. Vậy khoảng [1,2] chính là khoảng phân ly nghiệm. Ta sẽ dùng phương pháp lặp để tính gần đúng nghiệm α của nó. Ta sẽ biến đổi (4.25) về dạng (4.17). Ví dụ ta có thể viết ϕ(x) = x3 -1 Nhưng lúc đó ϕ'(x) = 3x2 ≥ 3 tại mọi x ∈ [1,2] Với cách chọn như vậy phương pháp lặp không có hy vọng hội tụ. Điều này có thể thấy rõ trong bảng sau: n x0 =1 xn = ϕ(xn-1) 0 1 1 0 2 -1 3 -2 4 -9 5 -730 Bây giờ ta viết (4.25) dưới dạng sau x3 = x +1 x = (x+1)1/3 ϕ(x) = (x+1)1/3 Lúc đó ϕ'(x) = (1/3)(x+1)-2/3 = (1/3)(1/ 3 )1( +x 2) ≤ 1/3 tại mọi x ∈ [1,2] Ngoài ra ϕ'(x) > 0, như vậy hàm ϕ(x) thỏa mãn định lý trên đây do đó ta có thể thực hiện quá trình lặp với giá trị bắt đầu là x0 =1 chẳng hạn.Ta có bảng giá trị như sau: n x0 =1 xn = ϕ(xn-1) 0 1 1 1.2599 2 1.3122 3 1.3223 4 1.3242 5 1.3246 81 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Ta có thể lấy nghiệm xấp xỉ là 1.3246 4.2.5. Phương pháp Newton-Rapson hay còn gọi là phương pháp tiếp tuyến a. Mô tả phương pháp Điều kiện để thực hiện phương pháp Newton có phần chặt hơn 2 phương pháp ta vừa khảo sát trên đây. Ta giả thiết rằng hàm f(x) trái dấu tại 2 vị trí a và b, đồng thời tồn tại đạo hàm cấp một f'(x) ≠ 0 trong khoảng [a,b], và đạo hàm cấp 2 tại x∈ (a,b). Ý chủ đạo của phương pháp Newton là thay phương trình (4.1) phi tuyến đối với x bằng phương trình gần đúng, tuyến tính đối với x. Trước hết ta nhắc lại định lý về khai triển Taylo của một hàm như sau: Định lý. Cho hàm số f(x) xác định và có đạo hàm đến cấp n+1 tại x0 và lân cận của x0. Giả sử h là một giá trị sao cho x0 + h cũng thuộc lân cận này. Ta có công thức sau đây được gọi là khai triển Taylor bậc n của f(x) tại x0: f(x0 +h) = f(x0) + !1 h f'(x0) + !2 2h f''(x0) + . . .+ !n hn f(n)(x0) + )!1( 1 + + n h n f(n+1)(c) Trong đó c∈ (x0,x0+h) Dựa vào khai triển Taylo, ta sẽ xác định một hàm ϕ(x) và tìm nghiệm của (4.1) bằng phép lặp: xn+1 = ϕ(xn) Giả sử x là nghiệm đúng của (4.1), còn xn là nghiệm xấp xỉ tại bước lặp thứ n. Ta đặt x=xn+Δxn. Theo khai triển Taylo ta có f(x) = f(xn + Δxn) = f(xn) + Δxnf'(xn) + !2 2 nxΔ f''(c) = 0 Nếu Δxn đủ nhỏ thì ta có công thức gần đúng: f(xn) + Δxnf'(xn) ≈ f(x) = 0 Từ đây Δxn ≈ )(' )( n n xf xf− Vì Δxn = x - xn Do đó x ≈ xn )(' )( n n xf xf− Và ta suy ra công thức lặp cho phép lặp Newton: xn+1 = xn )(' )( n n xf xf− (4.25) Về ý nghĩa hình học xn+1 chính là giao điểm của tiếp tuyến đường cong y = f(x) tại điểm (xn,f(xn)) với trục hoành. Do đó phương pháp này còn được gọi là phương pháp tiếp tuyến. 82 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Từ điểm (xn,f(xn)) ta vẽ tiếp tuyến của đồ thị y = f(x). Phương trình đồ thị này là y = f(xn) + f'(xn)(x-xn). Giả sử đường tiếp tuyến này cắt trục hoành tại xn+1, ta có 0 = f(xn) + f'(xn)(xn+1-xn) Từ đây suy ra xn+1 = xn )(' )( n n xf xf− Công thức này cũng chính là công thức (4.25) ở trên. b. Điều kiện hội tụ của phương pháp Newton và đánh giá sai số Định lý. Điều kiện đủ để phương pháp tiếp tuyến hội tụ: Giả sử những điều kiện sau đây thỏa mãn: f(a)f(b) < 0, tức là giá trị hàm f(x) trái dấu tại hai đầu đoạn [a,b]. Hàm f(x) có đạo hàm bậc nhất và bậc 2 f'(x) và f''(x), với f(x) và f'(x) liên tục trên [a,b], f' và f'' không đổi dấu trong (a,b) (tức là hàm f(x) đơn điệu, lồi hoặc lõm trong đoạn [a,b]). Xấp xỉ đầu x0 được chọn ∈ [a,b], sao cho f(x0) cùng dấu với f''(x), tức là f(x0)f''(x) > 0 (hàm lồi thì chọn phía giá trị hàm âm, hàm lõm thì chọn phía giá trị dương). Khi đó dãy xn được định nghĩa bởi (4.25) sẽ hội tụ tới α. Đánh giá sai số của nghiệm gần đúng. Ngoài công thức đanh giá sai số (4.9), nếu thêm điều kiện về f''(x) ta có thể đánh giá sai số của nghiệm gần đúng xn thông qua 2 gần đúng liên tiếp xn và xn-1. Định lý. Giả sử f'(x) liên tục và không đổi dấu trên [a,b] và thỏa mãn: ∃ m1 , M2 dương sao cho m1 ≤ |f'(x)| ; f''(x) ≤ M2 với ∀ x∈ [a,b] (4.28) khi đó ta có |xn - α| ≤ 1 2 2m M |xn - xn-1| 2 (4.29) Chứng minh. Dùng công thức khai triển Taylor cho f(xn) tại xn-1 ta có f(xn) = f(xn-1) + !1 1−− nn xx f'(xn-1) + !2 )( 21−− nn xx f''(c) (4.30) trong đó c ∈ (xn-1,xn) Theo (4.25) xn = xn-1 - )(' )( 1− − n n xf xf 83 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến Từ đây f(xn-1) + (xn - xn-1)f'(xn-1) = 0 Thay vào (4.30) ta có f(xn) = !2 )( 21−− nn xx f''(c) Như vậy theo (4.27) và (4.28) |xn - α| ≤ 1 |)(| m xf n = 1 2 1 2 )( m xx nn −− f''(c) ≤ 1 2 2m M |xn - xn-1|2 (4.31) Là điều cần chứng minh. c. Ví dụ về phương pháp Newton Tính 2 bằng cách giải phương trình sau: f(x) = x2 - 2 =0 (4.32) Giải: Ta thấy f(1) = -1, f(2) = 2, như vậy điều kiện 1) thỏa mãn. f'(x) = 2x > 2 với mọi x ∈ [1,2] f’'(x) = 2 > 1 với mọi x ∈ [1,2] , vậy điều kiện 2) thỏa mãn Vì f(2) = 2, nên ta chọn x0 =2, như vậy thì f(2)f’’(x) = 2.2 = 4 >0 và điều kiện 3) thỏa mãn. Vậy ta có thể áp dụng phương pháp lặp Newton để tính nghiệm xấp xỉ của phương trình (4.32). Ta có bảng sau n x0 = 2 xn+1 = xn - f(x)/f’(xn) 0 2 1 1.5 2 1.417 3 1.41421 Ta có thể lấy nghiệm xấp xỉ là 1.41421. Ta biết rằng 2 = 1.414213562, như vậy phương pháp lặp Newton hội tụ rất nhanh. d. Nhận xét về phương pháp Newton Nhờ việc sử dụng đạo hàm của hàm số f(x) nên nói chung phương pháp Newton hội tụ nhanh hơn phương pháp chia đôi và phương pháp dây cung. Tuy nhiên việc kiểm tra điều kiện để áp dụng phương pháp Newton phức tạp hơn. Những điều kiện để phương pháp Newton hội tụ là quan trọng và cần thiết phải kiểm tra khi áp dụng phương pháp này. Ví dụ tương ứng với hình vẽ sau đây chỉ ra rằng có trường hợp nếu áp dụng các phương pháp chia đôi hoặc dây cung thì quá trình lặp sẽ hội tụ, còn nếu ta áp dụng phương pháp Newton nhưng chọn điểm xuất phát không thích hợp thì không đạt được kết quả như mong muốn. 84 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến e. Chương trình minh họa phương pháp Newton (tiếp tuyến) Sau đây là đoạn chính của chương trình thể hiện (mô tả) phương pháp newton : /*Phuong phap tim nghiem bang phuong Newton tren khoang [a,b]*/ /*Phuong phap Newton de tim nghiem f(x)=0 trong khoang trai dau [a,b]. Neu co nghiem thi tra ve gia tri true, neu khong thi tra ve gia tri false. x la nghiem, errx, erry sai so tren x va tren y, buoclap la so buoc lap da thuc hien*/ int ttuyen(double (*f)(double),double (*f1)(double),double a,double b, double &x,double &errx,double &erry,int &buoclap) {clrscr(); if(f(a)==0) {x=a;errx=erry=0;buoclap=0;return true;} if(f(b)==0) {x=b;errx=erry=0;buoclap=0;return true;} if(f(a)*f(b)>0) {cout<<endl<<"f(a) va f(b) khong trai dau";delay(1000);return false;} int k=0; kvecto xb;double xp,xn;//previouse x; xb[0]=b; xn=b; while(true) {if(f1(xn)<epsiy1) {cout<<endl<<"Dao ham qua be";delay(1000);return false;} xp=xn; xn = xn-f(xn)/f1(xn); k++; xb[k]=xn; if(fabs(xn-xp)<epsix && fabs(f(xn))<epsiy) break; if(k>kmax) {cout<<endl<<"Lap chua hoi tu sau "<<kmax<<" buoc"; delay(1000);return false; } } errx=fabs(xn-xp);erry=fabs(f(xn));buoclap=k; x=xn; } 85 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến 4.3. BÀI TẬP Bài 1. Hãy mô tả phương pháp chia đôi để tìm nghiệm gần đúng của phương trình phi tuyến. Bài 2. Hãy mô tảp hương pháp dây cung để tìm nghiệm gần đúng của phương trình phi tuyến. Bài 3. Hãy mô tả phương pháp tiếp tuyến để tìm nghiệm gần đúng của phương trình phi tuyến. Bài 4. Hãy mô tả phương pháp lặp đơn để tìm nghiệm gần đúng của phương trình phi tuyến. Bài 5. Giải gần đúng phương trình: x-1/2sinx = 0,25 bằng phương pháp lặp với 4 lần lặp. Bài 6. Dùng phương pháp chia đôI tính nghiệm gần đúng của phương trình: x3-x-1 qua 4 bước lặp. Đánh giá sai số |x 4-α | Bài 7. Dùng phương pháp dây cung tính nghiệm gần đúng của phương trình: x3-x-1 qua 4 bước lặp. Đánh giá sai số |x4-α | Bài 8. Dùng phương pháp chia đôi tính gần đúng 5 qua 4 bước lặp. Đánh giá sai số |x4- 5 | Bài 9. Dùng phương pháp lặp hãy tính gần đúng nghiệm dương lớn nhất của phương trình: x3 - x - 1000 =0 với sai số tuyệt đối không lớn hơn 10-5. Bài 10. Thử lại hoặc viết mới các chương trình cài đặt các thuật toán rồi chạy thử để kiểm tra các kết quả trên đây. 86 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến TÓM TẮT NỘI DUNG CHƯƠNG 4 Trong chương này chúng ta cần chú ý nhất là các vấn đề sau: 1. Khoảng phân ly nghiệm Định nghĩa. Khoảng [a,b] được gọi là khoảng phân ly nghiệm của phương trình (4.1) nếu nó chứa một và chỉ một nghiệm của phương trình đó. Định lý. Nếu hàm số f(x) liên tục, đơn điệu trên đoạn [a,b] và f(a)f(b)<0 thì đoạn [a,b] là một khoảng phân ly nghiệm của phương trình (4.1) 2.Phương pháp chia đôi (bisection): - Phương pháp: + Xác định khoảng phân ly nghiệm [a,b] +Tính giá trị của nghiệm gần đúng ở bước lặp thứ i trên khoảng phân ly nghiệm [ai,bi ] (i=0,1,2...) theo công thức xi= (ai+bi )/2 với a0=a;b0=b. Sau đó là xác định khoảng phân ly mới cho nghiệm ở bước mới thứ i+1 là [ai+1,bi+1 ]. Cứ tiếp tục phép lặp như thế cho đến khi nào thoả mãn điều kiện dừng của phương pháp. - Đánh giá sai số: Giả sử ở bước lặp cuối cùng là bước thức n (i=n) ta đã xác định được nghiệm gần đúng xn. Khi đó sai số được đánh giá như sau:|xn - α|≤ 12 || + − n ba . (Trong đó α là nghiệm đúng của phương trình (4.1) 3.Phương pháp dây cung - Phương pháp: + Xác định khoảng phân ly nghiệm [a,b] +Tính giá trị của nghiệm gần đúng ở bước lặp thứ i trên khoảng phân ly nghiệm [ai,bi ] (i=0,1,2...) theo công thức xi= )()( )()( i iiii afbif afbbfa − − với a0=a;b0=b. Sau đó là xác định khoảng phân ly mới cho nghiệm ở bước mới thứ i+1 là [ai+1,bi+1 ]. Cứ tiếp tục phép lặp như thế cho đến khi nào thoả mãn điều kiện dừng của phương pháp. - Đánh giá sai số: Giả sử ở bước lặp cuối cùng là bước thức n (i=n) ta đã xác định được nghiệm gần đúng xn. Khi đó sai số được đánh giá như sau: |xn - α| ≤ 1 |)(| m xf n . (Trong đó α là nghiệm đúng của phương trình (4.1), và 0 < m1 ≤ |f'(x)| với ∀ x∈ [a,b]). Hoặc ta có đánh giá sai số thức 2 là:|xn - α| ≤ 1 11 m mM − |xn - xn-1|. 87 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 4: Tính gần đúng nghiệm của phương trình phi tuyến 4 Phương pháp lặp đơn - Phương pháp: +Xác định khoảng phân ly nghiệm [a,b] của (4.1), phương trình (4.1) chuyển về dạng x = ϕ(x), với điều kiện :|ϕ’(x)| ≤q<1 trên (a,b).Tiếp theo ta chọn một giá trị x0 ∈ [a,b] làm giá trị xấp xỉ ban đầu rồi tính dần các nghiệm xấp xỉ xi theo quy tắc: xi = ϕ(xi-1), i=1,2,.. cho tới khi nào thảo mãn điều kiện dừng của phương pháp. - Đánh giá sai số: Giả sử ở bước lặp cuối cùng là bước thức n (i=n) ta đã xác định được nghiệm gần đúng xn. Khi đó sai số được đánh giá như sau: |xn - α| ≤ qn | b - a | hoặc |xn - α| ≤ qn q−1 1 | x1 - x0| . 5 Phương pháp tiếp tuyến - Phương pháp: + Xác định khoảng phân ly nghiệm [a,b] của phương trình (4.1). +Tính giá trị của nghiệm gần đúng ở bước lặp thứ i theo công thức xi+1 = xi )(' )( i i xf xf− . Xấp xỉ đầu x0 được chọn ∈ [a,b], sao cho f(x0) cùng dấu với f''(x), tức là f(x0)f''(x) > 0 (hàm lồi thì chọn phía giá trị hàm âm, hàm lõm thì chọn phía giá trị dương). - Đánh giá sai số : Giả sử ở bước lặp cuối cùng là bước thức n (i=n) ta đã xác định được nghiệm gần đúng xn. Khi đó sai số được đánh giá như sau: |xn - α| ≤ 1 |)(| m xf n hoặc |xn - α| ≤ 1 2 2m M |xn - xn-1| 2 88 CuuDuongThanCong.com https://fb.com/tailieudientucntt
File đính kèm:
- bai_giang_phuong_phap_so_chuong_4_tinh_gan_dung_nghiem_cua_p.pdf