【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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值