1 [Lời giải]Tìm nghiệm gần đúng trong đoạn AB của hàm liên tục Sun May 22, 2011 4:16 pm
Admin
Quản trị viên
Bài thầy cho:
Cho hàm số f(x) liên tục trong khoảng [a, b] biết f(a) *f(b) <0.
Viết thủ tục tìm nghiệm gần đúng trong khoảng [a, b]
Ý tưởng:
Xét hàm f(x) = đó.
Bây giờ ta coi điểm c là điểm giữa của đoạn [a,b], với c=(a+b)/2
A0|__________________________________|_________________________________|B0
A2|_________________| B2
A3|________| B3
...
An|_| Bn
Nguyên tắc xét như sau:
Vì tích của 2 giá trị f(a) và f(b) luôn nhỏ hơn 0 nên ta có 1 giá trị là dương, giá trị kia phải là âm.
Mà hàm lại liên tục trên đoạn AB, nên nếu lấy 1 điểm C trên đoạn đó thì f(c) thuộc 1 trong 3 giá trị:
- Nếu bằng 0: thì c chính là nghiệm, thoát luôn khỏi vòng tìm kiếm.
- Nếu dương hoặc âm xét đoạn mới A1B1 là 1 nửa đoạn AB. Tức là:
+ ngược dấu với f(a) thì xét đoạn mới A1 B1 là đoạn AC (điểm A1 giữ nguyên là A, điểm B1 là C). Ngược lại, xét đoạn CB (Điểm A1 gán là C, điểm B giữ nguyên).
Lặp lại cho đến khi đoạn AnBn có sai số bằng Epsilon, thì dừng lại. Có thể giải bằng đệ quy như Mr.Lê Đình S. Ở đây là cách giải thông thường.
Viết thủ tục:
Cho hàm số f(x) liên tục trong khoảng [a, b] biết f(a) *f(b) <0.
Viết thủ tục tìm nghiệm gần đúng trong khoảng [a, b]
Ý tưởng:
Xét hàm f(x) = đó.
Bây giờ ta coi điểm c là điểm giữa của đoạn [a,b], với c=(a+b)/2
A0|__________________________________|_________________________________|B0
C
A1|__________________________________| B1 A2|_________________| B2
A3|________| B3
...
An|_| Bn
Nguyên tắc xét như sau:
Vì tích của 2 giá trị f(a) và f(b) luôn nhỏ hơn 0 nên ta có 1 giá trị là dương, giá trị kia phải là âm.
Mà hàm lại liên tục trên đoạn AB, nên nếu lấy 1 điểm C trên đoạn đó thì f(c) thuộc 1 trong 3 giá trị:
- Nếu bằng 0: thì c chính là nghiệm, thoát luôn khỏi vòng tìm kiếm.
- Nếu dương hoặc âm xét đoạn mới A1B1 là 1 nửa đoạn AB. Tức là:
+ ngược dấu với f(a) thì xét đoạn mới A1 B1 là đoạn AC (điểm A1 giữ nguyên là A, điểm B1 là C). Ngược lại, xét đoạn CB (Điểm A1 gán là C, điểm B giữ nguyên).
Lặp lại cho đến khi đoạn AnBn có sai số bằng Epsilon, thì dừng lại. Có thể giải bằng đệ quy như Mr.Lê Đình S. Ở đây là cách giải thông thường.
Viết thủ tục:
Function SaiSo (a, b); | |||
‘Định nghĩa theo yêu cầu bài toán | |||
Case YeuCau of | |||
Sai số theo miền nghiệm: x=/b -a/; | |||
Sai số theo miền giá trị hàm số:x = /f(b) - f(a)/; | |||
ELSE x=/b - a/*/f(b) - f(a)/ | |||
Return SaiSo=x; | |||
| |||
Sub TimNghiem (a, b: real); | |||
Repeat | |||
| IF f(c) = 0 then Exit vòng lặp | ||
| ELSE | IF f(a)*f(c) < 0 then b:=c; | |
| | Else a: = c; | |
| c:=(a+b)/2; | ||
Until f(c) = 0 OR SaiSo(a,b) <= Epsilon) | |||
Output | “f(x) có một nghiệm gần đúng là:”, c. |
Được sửa bởi Admin ngày Sun Jul 03, 2011 10:12 pm; sửa lần 1.