天天看點

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 ;
}
           

此段代碼可能會出錯,慎用,但是思路很清晰!

繼續閱讀