Sorry vì cái đề hổng dc rõ ràng cho lém
.
Cái này mình tính bằng cách tìm nghiệm gần đúng của pt : (x^3)-2=0. Tại mới học xong môn Phương pháp tính nên đưa lên cho mọi người cùng tham khảo.
Cái này nói là chương trình, nhưng mà thực ra là toàn áp dụng toán không à.
Mấy bước chứng minh cho mình bỏ qua nhen, bê nguyên cái công thức tổng quát vào nè: Xn = alpha - F(X)*(Xo-alpha) / (F(Xo) - alpha)
---> Lời giải này hơi kém thuyết phục vì chưa chỉ cho các bạn xem tại sao nó lại có những công thức như vậy, nghiêng về Toán hơn là Lập trình. Mấy bạn thông cảm nha
<---
Code:
// PHUONG PHAP DAY CUNG
#include<stdio.h>
#include<conio.h>
#include<math.h>
double f(double x);
double kq(double alpha,double x,int n,double (*FUNC)(double x));
double kq2(double alpha,double x,double E,double (*FUNC)(double x));
void main()
{
do{
int n,ch;
double alpha, x, E;
printf("Nhap alpha (ban nhap alpha=2):");
scanf("%lf",&alpha);
printf("Nhap Xo (ban nhap x=1):");
scanf("%lf",&x);
printf("***** Ban muon chon:\n");
printf(" 1. Tinh theo so lan lap\n");
printf(" 2. Tinh theo sai so cho truoc\n");
printf("*** Ban chon:");
scanf("%d",&ch);
if (ch==1)
{
printf("Nhap so lan:");
scanf("%d",&n);
printf("Ket qua:%lf\n",kq(alpha,x,n,f));
}
else if (ch==2)
{
printf("Nhap sai so:");
scanf("%lf",&E);
printf("Ket qua:%lf\n",kq2(alpha,x,E,f));
}
printf("\n\nNhap ESC de ket thuc, phim bat ky de tiep tuc\n");
}while(getch()!=27);
}
double f(double x)
{
return (pow(x,3)-2);
}
double kq(double alpha,double x,int n, double (*FUNC)(double x))
{
int i;
for (i=0; i<n; i++)
{
x=alpha-(FUNC(alpha)*(x-alpha)/(FUNC(x)-FUNC(alpha)));
}
return x;
}
double kq2(double alpha,double x,double E, double (*FUNC)(double x))
{
double x1;
while (fabs(x-x1)>E)
{
x1=x;
x=alpha-(FUNC(alpha)*(x-alpha)/(FUNC(x)-FUNC(alpha)));
}
return x;
}