频道栏目
首页 > 资讯 > 其他 > 正文

牛顿迭代法求方程的根

16-12-06        来源:[db:作者]  
收藏   我要投稿
问题描述:编写用牛顿迭代法求方程根的函数。方程为: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;
}

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

相关TAG标签
上一篇:Java设计模式之单例模式(Singleton)
下一篇:RTC时间在LCD上显示需注意的问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站