问题描述:
编写用牛顿迭代法求方程根的函数。
方程为:a*x^3 + b*x^2 + c*x + d = 0,系数a,b,c,d由主函数输入。
求x在1附近的一个实根。求出根后,由主函数输出。
#include
float slove(int modulus_0pow,int modulus_1pow,int modulus_2pow,int modulus_3pow,float root)
{
float root_0;
float function_value;
float derivative;
float constant;
root_0 = root;
while(function_value <= 0.1)
{
if(root != root_0)
{
root = -constant / derivative;
}
function_value = modulus_3pow * root * root * root + modulus_2pow * root * root + modulus_1pow * root + modulus_0pow;
derivative = 3 * modulus_3pow * root * root + 2 * modulus_2pow * root + modulus_1pow;
constant = function_value - derivative * root;
}
return root;
}
int main()
{
int modulus_0pow;
int modulus_1pow;
int modulus_2pow;
int modulus_3pow;
float root;
printf("Please input the modulus_(0~3)pow:\n");
scanf("%d",&modulus_0pow);
scanf("%d",&modulus_1pow);
scanf("%d",&modulus_2pow);
scanf("%d",&modulus_3pow);
printf("Please input the root:\n");
scanf("%d",&root);
root = slove(modulus_0pow,modulus_1pow,modulus_2pow,modulus_3pow,root);
printf("root:%.4f\n",root);
return 0;
}
————————————————
版权声明:本文为CSDN博主「浊之清」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34706280/article/details/53458370