通过"牛顿迭代法求平方根"的java实现和原理

简介

牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),
它是一种在实数域和复数域上近似求解方程的方法。方法使用函数 f(x)泰勒级数的前面几项来寻找方程f(y)=0的根。
以上维基百科

原理分析

维基百科

具体例子

求f(x)=-x2+5 当f(x)=0 求x的值
答案就相当于求5的平方根
在f(x)上随便取点P1(x1,y1)
那么P1切线方程为y=-2x1x+2*x1x1+y1
-2x1x+2
x1*x1+y1=0
得到x2=x1+f(x)/2x1

得到
x2=3
x3=2.333
x4=2.238
不断的接近根号5的值2.36

简单画图了下

在这里插入图片描述
图的说明:P2比P1接近绿色的那个了
如果再画P3 就更接近了

java代码

public class niudundiedai {
    public static double sqt(double c){
        if(c<0){
            return Double.NaN;
        }
        double err=1e-15;
        double t=c;//t代表参数c的平方根,先随便给t一个初始值c
        int count=0;//count没任何用,就是用来看计算过程的
        while(Math.abs(t-c/t)>err*t){//由于只是无限接近真正的平方根,所以比较c的估算平方根t,t的平方和初始c的差距,要小于指定误差,并计算次数

            t=(c/t+t)/2.0;//x2=(x1+c/x1)/2,不断计算x值,接近真是的值
            count++;//计算的次数
            System.out.print("第"+count+"次计算");
            System.out.println(t);//每次计算的值,越来越接近了!
        }
        return t;
    }
    public static void main(String[] args) {
        double sqt = sqt(102);
        System.out.println("符合误差的最终值");
        System.out.println(sqt);
    }
}

结果

在这里插入图片描述

后续拓展

比如可以计算多次方程等
等用到了再写

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值