C语言用牛顿迭代法和二分法递归求解三元一次方程

C语言用牛顿迭代法和二分法递归求解三元一次方程,第1张

求解方程(2x^3) +(4x^2)+3x-6=0

牛顿迭代法

牛顿迭代法公式:(以下图片均来源于百度)

牛顿迭代法用递归实现解三元一次方程:

#include
#include

int main(){
  int fx(double x1)double x1=1.5;
  printf("%.2f",fx(x1));
  return 0;
}

int fx(double x1)
{
	//X0为公式中的Xn,f表示f(Xn),fl表示f(Xn)的导数
	double x0, f, fl;
	//将求出的新X1赋值给X0
	x0 = x1;
	f = (2 * pow(x0, 3) - 4 * pow(x0, 2) + 3 * x0 - 6);
	fl = (6 * pow(x0, 2) - 8 * x0 + 3);
	x1 = x0 - f / fl;
	//调自己实现迭代(即递归),当等于0时,求出值
	if(fx(x1)==0)return x1;
}
二分法解方程


二分法用递归实现解三元一次方程:

#include 
#include 
double fun(double low, double high);

int main()
{
	printf("%.2f", fun(-10, 10));
	return 0;
}

double fun(double low, double high)
{
	double mid,fm;
	mid = (low + high) / 2;
	fm = 2 * pow(mid, 3) - 4 * pow(mid, 2) + 3 * mid - 6;
	if ((high-low)>1e-5)
	{		
		if (fm < 0)
			low = mid;
		else if (fm > 0)
			high = mid;
		else return mid;
		return fun(low, high);
	}
	return mid;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存