求解一元多次方程的两种方法:牛顿迭代法和二分法

时间:2021-11-27 08:08:38

求解方程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;
}