• 【Java/数学/指数函数】使用牛顿中值法求方程2^x=5-x的近似根


    【概述】

    牛顿中值法可用于工程上解一些难于直接求解的方程,如2^x=5-x,其核心思想是取两个端点的中值,再取中值的结果,若结果大于零则让末端取中值,如结果小于零则让始端取中值,然后不断重复这一过程,直到结果的绝对值小于一定精度,便认为此结果为方程的近似解。

    以下程序仅仅用了16步便得到了较高精度的近似解。

    【代码】

    package test240716;
    
    /**
     * 牛顿中值法求2^x=5-x的根
     * @author 逆火
     *
     */
    public class Test {
        public static void main(String[] args) {
            double start=1;
            double end =3;
            double result=99;
    
            int idx=0;
            while(Math.abs(result)>0.00001){            
                double mid=(start+end)/2;
                result=Math.pow(2,mid)-5+mid;//解析式
                
                idx++;
                System.out.println("#"+idx+".strat="+format(start)+" mid="+format(mid)+" end="+format(end)+" result="+format(result));
    
                if(result>0){
                    end=mid;
                }else{
                    start=mid;
                }
            }
            
            System.out.println("使用牛顿中值法求得2^x=5-x的近似解="+end);
        }
        
        /**
         * 返回保留五位小数的字符串
         * @param d
         * @return
         */
        public static String format(double d){
            java.text.DecimalFormat df =new java.text.DecimalFormat("#0.00000");  
            return df.format(d);
        }
    }

    【输出】

    #1.strat=1.00000 mid=2.00000 end=3.00000 result=1.00000
    #2.strat=1.00000 mid=1.50000 end=2.00000 result=-0.67157
    #3.strat=1.50000 mid=1.75000 end=2.00000 result=0.11359
    #4.strat=1.50000 mid=1.62500 end=1.75000 result=-0.29058
    #5.strat=1.62500 mid=1.68750 end=1.75000 result=-0.09152
    #6.strat=1.68750 mid=1.71875 end=1.75000 result=0.01026
    #7.strat=1.68750 mid=1.70312 end=1.71875 result=-0.04082
    #8.strat=1.70312 mid=1.71094 end=1.71875 result=-0.01533
    #9.strat=1.71094 mid=1.71484 end=1.71875 result=-0.00255
    #10.strat=1.71484 mid=1.71680 end=1.71875 result=0.00385
    #11.strat=1.71484 mid=1.71582 end=1.71680 result=0.00065
    #12.strat=1.71484 mid=1.71533 end=1.71582 result=-0.00095
    #13.strat=1.71533 mid=1.71558 end=1.71582 result=-0.00015
    #14.strat=1.71558 mid=1.71570 end=1.71582 result=0.00025
    #15.strat=1.71558 mid=1.71564 end=1.71570 result=0.00005
    #16.strat=1.71558 mid=1.71561 end=1.71564 result=-0.00005
    #17.strat=1.71561 mid=1.71562 end=1.71564 result=0.00000
    使用牛顿中值法求得2^x=5-x的近似解=1.7156219482421875

    END

  • 相关阅读:
    React——ES6语法补充
    K8s有状态应用(StatefulSet)之Mysql集群
    机器学习笔记 - 时间序列作为特征
    C语言:对于宏的一些概念及技巧
    Selenium选择器小结
    山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十六)- 微服务(6)
    C#通过MGet方法快速获取Redis数据库的记录
    Leetcode.321 拼接最大数
    新的优化器 Adan
    设计模式——模板设计模式
  • 原文地址:https://blog.csdn.net/River_Sun/article/details/140455901