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

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




©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值