简介
牛顿法(英语: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+2x1*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);
}
}
结果
后续拓展
比如可以计算多次方程等
等用到了再写