天天看點

使用牛頓疊代法求方程的根

#include <stdio.h>
#include <math.h>
#define EPS 1e-6 //表示1*10^-6 
void fun(double x){
	double x0=x;
	double x1;
	double f;
	double fd;
	f=pow(x0,41)+pow(x0,3)+1;
	fd=41*pow(x0,40)+3*pow(x0,2);
	x1=x0-f/fd;
	while(fabs(x1-x0)>EPS){
		x0=x1;
		f=pow(x0,41)+pow(x0,3)+1;
		fd=41*pow(x0,40)+3*pow(x0,2);
		x1=x0-f/fd;
	}
	printf("%.2lf\n",x1);//輸出結果
}
int main(){
	double x=-1;
	fun(x);
	return 0;
}
           

//解非線性方程組f(x)=0的牛頓疊代公式是:Xn+1=Xn-f(Xn)/f'(Xn)