用牛顿迭代法求根。方程为$ax^3+bx^2 +cx+d=0$,系数a,b,c,d的值依次为1,2,3,4,由主函数输人。求x在1附近的一个实根。求出根后由主函数输出

用牛顿迭代法求根。方程为\(ax^3+bx^2 +cx+d=0\),系数a,b,c,d的值依次为1,2,3,4,由主函数输人。求x在1附近的一个实根。求出根后由主函数输出

题目解析:

此题的难点并不是编程,主要是要理解数学公式的求解方法,理解之后代码的实现并不困难。

代码示例:

#include<stdio.h>
#include<math.h>

float solut(int a, int b, int c, int d)
{
	float x = 1, x0, f, f1;
	do
	{
		x0 = x;
		f = ((a*x0 + b)*x0 + c)*x0 + d;
		f1 = (3 * a*x0 + 2 * b)*x0 + c;
		x = x0 - f / f1;
	} while (fabs(x - x0) >= 1e-3);
	return(x);
}

int main()
{
	int a, b, c, d;
	printf("input a,b,c,d:");
	scanf("%d %d %d %d", &a, &b, &c, &d);
	printf("x=%10.7f\n", solut(a, b, c, d));
	return 0;
}

运行结果:

用牛顿迭代法求根。方程为$ax^3+bx^2 +cx+d=0$,系数a,b,c,d的值依次为1,2,3,4,由主函数输人。求x在1附近的一个实根。求出根后由主函数输出

上一篇:数学笔记——导数1(导数的基本概念)


下一篇:单纯的类不纯时引发的虚函数调用问题