PHƯƠNG
PHÁP LẶP NEWTON
|
Phương
pháp lặp Newton
(còn gọi là phương pháp tiếp tuyến) được dùng nhiều vì nó hội tụ nhanh. Giả sử
f(x) có nghiệm là x đã được tách trên đoạn [a, b] đồng
thời f'(x) và f"(x) liên tục và giữ nguyên dấu trên đoạn [a, b]. Khi đã
tìm được xấp xỉ nào đó xn Î [a, b] ta có thể kiện toàn nó
theo phương pháp Newton.
Từ mút B ta vẽ tiếp tuyến với đường cong. Phương trình đường tiếp tuyến là
Tiếp tuyến này cắt trục hoành tại điểm
có y = 0, nghĩa là:
hay :
Từ x1 ta lại tiếp tục vẽ tiếp
tuyến với đường cong thì giao điểm xi sẽ tiến tới nghiệm của phương
trình.
Việc chọn điểm ban đầu xo rất quan trọng.
Trên hình vẽ trên ta thấy nếu chọn điểm ban đầu xo = a thì tiếp
tuyến sẽ cắt trục tại một điểm nằm ngoài đoạn [a, b]. Chọn xo = b sẽ
thuận lợi cho việc tính toán. Chúng ta có định lí:
Nếu f(a).f(b) < 0 ; f(x) và f"(x)
khác không và giữ nguyên dấu xác định khi x Î
[a, b] thì xuất phát từ xoÎ
[a, b] thoả mãn điều kiện f(xo).f²(xo)
> 0 có thể tính theo phương pháp
Newton nghiệm x duy nhất với độ chính xác tuỳ ý.
Khi
dùng phương pháp Newton
cần lấy xo là đầu mút của đoạn [a,b] để tại đó f(xo).f"(xo) > 0. Áp
dụng lí thuyết trên chúng ta xây dựng chương trình tính sau:
Chương trình 2-5
//phuong
phap Newton
#include
<conio.h>
#include
<stdio.h>
#include
<math.h>
#include
<stdlib.h>
#define
n 50
#define
epsi 1e-5
void
main()
{
float t,x0;
float x[n];
int i;
float f(float);
float daoham(float);
clrscr();
printf("Tim nghiem cua
phuong trinh phi tuyen\n");
printf("bang phuong phap
lap Newton\n");
printf("Cho gia tri cua x0
= ");
scanf("%f",&x0);
i=1;
x[i]=x0;
do
{
x[i+1] =
x[i]-f(x[i])/daoham(x[i]);
t =
fabs(x[i+1]-x[i]);
x[i]=x[i+1];
i=i+1;
if (i>100)
{
printf("Bai
toan khong hoi tu\n");
getch();
exit(1);
}
else
;
}
while (t>=epsi);
printf("Nghiem x =
%.5f",x[i]);
getch();
}
float
f(float x)
{
float a=x*x-x-2;
return(a);
}
float
daoham(float x)
{
float d=2*x-1;
return(d);
}
Chương
trình này được dùng xác định nghiệm của hàm đã được định nghĩa trong function.
Trong trường hợp này phương trình đó là:
x2 -
x - 1 = 0
Kết quả tính với
giá trị đầu xo = 0 cho nghiệm
x = 2.
Tags:
Phương Pháp Tính