zoukankan      html  css  js  c++  java
  • C语言之基本算法24—黄金切割法求方程近似根

    //黄金切割法!
    /*
    ================================================================
    题目:用黄金切割法求解3*x*x*x-2*x*x-16=0的根。


    ================================================================
    */
    #include<stdio.h>
    #include <math.h>
    #define E 1e-8
    double hs(double x)
    {
    return 3*x*x*x-2*x*x-16;
    }
    double gen(double a,double b)
    {
    double x,fx,fa,fb,g;
    g=(sqrt(5)-1.0)/2;
    fa=hs(a);
    fb=hs(b);
    while(fabs(b-a)>E)
    {
    x=g*(b-a)+a;
    fx=hs(x);
    if(fa*fx>0)
    {
    a=x;
    fa=fx;
    }
    else if(fb*fx>0)
    {
    b=x;
    fb=fx;
    }
    }
    return x;
    }
    main()
    {
    double a,b,t,fa,fb;
    while(fa*fb>0)
    {
    printf("输入预计区间: a=");
    scanf("%lf",&a);
    printf("输入预计区间: b=");
    scanf("%lf",&b);
    fa=hs(a);
    fb=hs(b);
    }
    t=gen(a,b);
    printf("方程:3*x*x*x-2*x*x-16=0 ");
    printf("解得:x=%.4lf ",t);
    }


    /*
    ================================================================
    评:

    黄金切割法效率高,可是对刚開始学习的人来说编敲代码比較麻烦,相比而言穷举法程序编写

    简单。但效率低下,只是其适用范围非常广。仅仅要给定区间。就能够穷举!对于简单方程

    的求解。穷举法非常easy实现!

    在没有办法的情况下,穷举法是能够採取的。

    ================================================================
    */
  • 相关阅读:
    JavaScript
    多线程
    MySQL进阶一(基础查询)
    英语语法随笔1
    MySQL
    Love Story
    两个数组的交集
    只出现一次的数字
    MybatisPlus
    数组中值加一
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5403194.html
Copyright © 2011-2022 走看看