1. 程式人生 > >求解一元多次方程的兩種方法:牛頓迭代法和二分法

求解一元多次方程的兩種方法:牛頓迭代法和二分法

求解方程x*x*x-2*x-1=0,C語言實現

一:牛頓迭代法,牛頓迭代法是從泰勒公式中取前兩項構成線性近似方程,從x0開始,一步一步接近近似解,直到誤差在限定範圍內。

//牛頓迭代法求求解方程的根 
#include <stdio.h>
#include <math.h>
int main()
{
	double f(double x);
	double fd(double x);
	double x0,x1=3;
	do
	{
		x0=x1;
		x1=x0-f(x0)/fd(x0);
		
	} while(fabs(x1-x0)>=1e-5);//1e-5為精確度 
	printf("根為:%f\n",x1);
	return 0;
}
double f(double x)
{
	return x*x*x-2*x-1;
}
double fd(double x)
{
	return 3*x*x-2;
}

二:二分法
#include <stdio.h>
#include <math.h>
// 二分法求方程的解
int main()
{
	double f(double x);
	double x0=1,x1=2,root;
	do
	{
		double mid=(x0+x1)/2;
		if(f(mid)==0)
		{
			root==mid;
			break;
		}
		else if(f(x0)*f(mid)<0)
		{
			x1=mid;
		}
		else if(f(x1)*f(mid)<0)
		{
			x0=mid;
		}
	}while(fabs(x0-x1)>=1e-5);//fabs(m)的使用方法 
	printf("根為:%f",(x0+x1)/2);
	return 0;
} 
double f(double x)
{
	return x*x*x-2*x-1;
}