问题描述:
编写用牛顿迭代法求方程根的函数。
方程为:a*x^3 + b*x^2 + c*x + d = 0,系数a,b,c,d由主函数输入。
求x在1附近的一个实根。求出根后,由主函数输出。
代码如下:
#include<stdio.h>
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 <= )
{
if(root != root_0)
{
root = -constant / derivative;
}
function_value = modulus_3pow * root * root * root + modulus_2pow * root * root + modulus_1pow * root + modulus_0pow;
derivative = * modulus_3pow * root * root + * 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 ;
}
此段代码可能会出错,慎用,但是思路很清晰!