二分法,牛頓迭代法

#include <stdio.h>
#include<math.h>
//二分法
int main()
{
	float a, b, x, y, z,t,c;
	x = -10.0, y = 10.0;
	a = 2 * x*x*x - 4 * x*x + 3 * x - 6;
	b = 2 * y*y*y - 4 * y*y + 3 * y - 6;
	t = a * b;
	while (fabs(a-b) > 1e-5)
	{
		z = (x + y) / 2;
		a = 2 * x*x*x - 4 * x*x + 3 * x - 6;
		b = 2 * y*y*y - 4 * y*y + 3 * y - 6;
		c = 2 * z*z*z - 4 * z*z + 3 * z - 6;
		if (a*c<0)
			y = z;
		if (b*c < 0)
			x = z;
		
	}//可以考慮用函數簡化重複部分
	printf("%f", z);
	return 0;
}
#include <stdio.h>
#include<math.h>
//牛頓迭代法
int main()
{
	float x , y, k,z=0,m;
	for (x=1.5;fabs(x-z)>=1e-5; )
	{
		z = x;
		y = 2 * x*x*x - 4 * x*x + 3 * x - 6;
		k = 6 * x*x - 8 * x + 3;
		m = y / k;
		x = x - m;
	}
	printf("%f", x);
	return 0;
}
發佈了24 篇原創文章 · 獲贊 5 · 訪問量 1246
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章