PHƯƠNG
PHÁP DÂY CUNG
Giả sử f(x) liên tục trên trên đoạn [a, b]
và f(a).f(b) < 0. Cần tìm nghiệm của f(x) = 0. Để xác định ta xem f(a) <
0 và f(b) > 0. Khi đó thay vì chia đôi đoạn [a, b] ta chia [a, b] theo tỉ lệ
-f(a)/f(b). Điều đó cho ta nghiệm gần đúng :
x1 = a + h1
Trong đó
Tiếp
theo dùng cách đó với đoạn [ a, x1] hay [x1, b] mà hai đầu
hàm nhận giá trị trái dấu ta được nghiệm gần đúng x2 v.v.
Về mặt hình học, phương pháp này có
nghĩa là kẻ dây cung của đường cong f(x) qua hai điểm A[a, f(a)] và B[b, f(b)].
Thật vậy phương trình dây cung AB có dạng:
Cho x = x1 y = 0 ta có
Trên cơ sở của phương pháp ta có chương
trình tính nghiệm của phương trình
x4
+ 2x3 - x - 1 = 0
trên đoạn [0,1]
Chương trình 2-4
//phuong
phap day cung
#include
<conio.h>
#include
<stdio.h>
#include
<math.h>
#define
epsi 0.00001
void
main()
{
float a,b,fa,fb,dx,x;
float f(float);
clrscr();
printf("Tim nghiem cua
phuong trinh phi tuyen\n");
printf("bang phuong phap
day cung\n");
printf("Cho cac gia tri
a,b\n");
printf("Cho gia tri cua a =
");
scanf("%f",&a);
printf("Cho gia tri cua b =
");
scanf("%f",&b);
fa=f(a);
fb=f(b);
dx=fa*(b-a)/(fa-fb);
while (fabs(dx)>epsi)
{
x=a+dx;
fa=f(x);
if((fa*fb)<=0)
a=x;
else
b=x;
fa=f(a);
fb=f(b);
dx=fa*(b-a)/(fa-fb);
}
printf("Nghiem x =
%.3f",x);
getch();
}
float
f(float x)
{
float e=x*x*x*x+2*x*x*x-x-1;
return(e);
}
Kết quả tính cho nghiệm: x = 0.876
Tags:
Phương Pháp Tính