天天看点

1.6_牛顿迭代法求方程的根

问题描述:
编写用牛顿迭代法求方程根的函数。
方程为: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 ;
}
           

此段代码可能会出错,慎用,但是思路很清晰!

继续阅读