PHƢƠNG TRÌNH PHI TUYẾN.[r]
Trang 1BÀI 2
NGHIỆM CỦA CÁC PHƯƠNG TRÌNH PHI TUYẾN
Trang 2GIẢI PHƯƠNG TRÌNH f(x) = 0
KHÁI NIỆM CHUNG
Bài toán
Cho hàm f(x) liên tục trên đoạn [a, b] hoặc trên khoảng vô
hạn và đường cong y = f(x) chỉ có các nghiệm cô lập, tức là
tồn tại các khoảng rời nhau chứa các không điểm của f(x)
Các bước giải
1- Tách nghiệm hay tìm khoảng cách li nghiệm (a, b) - chỉ
chứa một nghiệm của phương trình f(x) = 0 2- Kiện toàn nghiệm: tính gần đúng nghiệm với độ chính
xác cho trước
Cơ sở của phương pháp tách nghiệm
Nếu hàm f(x) xác định và liên tục trên [a, b], f(a)f(b) < 0
và f’(x) giữ dấu trên (a, b) thì tồn tại duy nhất một
nghiệm thực x* ∊ (a, b) của phương trình f(x) = 0
Trang 3GiẢI PHƯƠNG TRÌNH f(x) = 0
PHƯƠNG PHÁP TÁCH NGHIỆM
Lập bảng xét dấu của đạo hàm cấp một f‘(x) rồi tìm các
khoảng (a, b) thỏa mãn các điều kiện trên
Ví dụ: Tìm các khoảng chứa các nghiệm cô lập của
phương trình f(x) = x3 – x – 1= 0
Giải: f‘ (x) = 3x2 – 1, lập bảng xét dấu sau
-1 0.875 5
Vậy phương trình trên có một nghiệm cô lập x1∊(1 ; 1.5)
3
Trang 4CÁC PHƯƠNG PHÁP LẶP (1)
a=m
Bắt đầu Nhập a, b, ε m=(a+b)/2
f(a)f(m)<0
b=m
b-a<ε
Kết thúc
đ
s
đ
s
x* (a+b)/2
y=f(x)
1 PHƯƠNG PHÁP CHIA ĐÔI
Giả thiết Cho f(x) liên tục trên (a, b)
và f(a) f(b) < 0
Trang 5CÁC PHƯƠNG PHÁP LẶP (2)
1 PHƯƠNG PHÁP CHIA ĐÔI (tiếp)
Thuật toán:
Lặp với n = 0, 1, 2, , , cho đến khi tìm được nghiệm đúng x* hoặc nghiệm gần đúng xn đạt được độ chính xác mong muốn
- Đặt m = (an + bn) / 2, nếu f(m) = 0 dừng (m là nghiệm đúng)
- Nếu f(an) f(m) < 0, đặt an + 1 = an, bn + 1 = m
- Trái lại, đặt an + 1 = m, bn + 1 = bn Vậy f(x) luôn luôn có không điểm trong khoảng [an + 1 ; bn + 1]
Sự hội tụ và sai số:
Sử dụng phương pháp chia đôi liên tiếp ta nhận được dãy khoảng lồng nhau {(an ; bn)} hữu hạn nếu x* là điểm giữa của khoảng thứ n, hay vô hạn co lại: an < x* < bn f(an).f(bn) < 0, bn – an = (b – a) / 2 n Khi n→, do sự liên tục của f(x) nên lim bn= lim an = x* và
1 n
n
n n
n
n n
2
a b
2
a
b x
2
b
a x
*
Trang 6CÁC PHƯƠNG PHÁP LẶP (3)
Giải PT x3-x-1=0 trên đoạn [1; 1.5] với độ chính xác ε = 0.0005
n a n b n c f(a n ) f( c) f(a n ) f( c) Sai số
0 1.0000 1.5000 1.2500 -1.0000 -0.2969 0.29688 0.2500
1 1.2500 1.5000 1.3750 -0.2969 0.2246 -0.06668 0.0625
2 1.2500 1.3750 1.3125 -0.2969 -0.0515 0.01529 0.0156
3 1.3125 1.3750 1.3438 -0.0515 0.0826 -0.00426 0.0039
4 1.3125 1.3438 1.3281 -0.0515 0.0146 -0.00075 0.0010
5 1.3125 1.3281 1.3203 -0.0515 -0.0187 0.00096 0.0002
9 1.3242 1.3252 1.3247 -0.0021 0.0000 0.00000 0.000001
Trang 7CÁC PHƯƠNG PHÁP LẶP (4)
double chiaDoi (double a, double b, double epsilon) {
int lanlap = 0; // Khoi tao so lan lap
double m ;
do {
lanlap++ ;
m = (a + b) / 2.0 ;
else if (f(a)*f(m) > 0) a = m;
} while (! ( (b − a) / 2.0 <= epsilon || lanlap >1000 ) );
cout <<“So lanlap = " << lanlap << endl;
return m;
}
Trang 8CÁC PHƯƠNG PHÁP LẶP (5)
Ý tưởng: Tăng tốc độ hội tụ của phương pháp chia đôi bằng
việc kiểm tra f(x) tại điểm trung bình có trọng số gần 0 hơn
Thuật toán:
Lặp với n = 0, 1, 2, , , cho đến khi tìm được nghiệm đúng x* hoặc nghiệm gần đúng xn đạt được độ chính xác mong muốn Tính w = [f(bn)an – f(an)bn] / [f(bn) – f(an)], nếu f(w) = 0 dừng
- Nếu f(an)f(w) < 0, đặt an + 1 = an, bn + 1 = w
- Trái lại, đặt an + 1 = w, bn + 1 = bn
f(a) f(b)
f(a).b f(b).a
| f(a)
|
| f(b)
|
.b
| f(a)
| a
| f(b)
| w
Trang 9CÁC PHƯƠNG PHÁP LẶP (6)
) f(a )
f(b
)b f(a
)a
f(b w
n n
n n
n
n
w là điểm mà tại đó đường thẳng cắt
trục Ox và đi qua các điểm [a n , f(a n )]
[b n , f(b n )] (một dây cung của f(x))
NHẬN XÉT: Phương
pháp này không ước
lượng được khoảng
chứa nghiệm
Trang 10CÁC PHƯƠNG PHÁP LẶP (7)
Giải PT x3-x-1=0 trên đoạn [1; 1.5]
n a n b n f(a n ) f(b n ) w f(w) f(a n ) f(w)
0 1.0000 1.5000 -1.0000 0.8750 1.2667 -0.2344 0.2344
1 1.2667 1.5000 -0.2344 0.8750 1.3160 -0.0370 0.0087
2 1.3160 1.5000 -0.0370 0.8750 1.3234 -0.0055 0.0002
3 1.3234 1.5000 -0.0055 0.8750 1.3245 -0.0008 0.0000
4 1.3245 1.5000 -0.0008 0.8750 1.3247 -0.0001 0.0000