算法非常简单我只要看到牛顿方程
就实现了function sq(x , e , g ){
g = g || x / 2
if(Math.abs( g * g - x ) < e )
return g
else
return sq( x , e , ( g + x / g ) / 2 )
}
现在这里有一个非常小的值,算法提供了一种解决方法,而且在非常大的值上,算法超出了调用堆栈。
我理解为什么
我不明白的是第一个条件..
if(Math.abs(g*g -x) < e )
为什么!!如果我们在比较之前除以x就能解决问题,例如:
if(Math.abs(g*g -x) / x < e)
function sq(x , e , g ){
g = g || x / 2
if(Math.abs( g * g - x ) / x < e )
return g
else
return sq( x , e , ( g + x / g ) / 2 )
}
这样调用函数首先arg是你想要计算平方根的数字,第二个是epsilon,这个范围是当我得到一个值时应该是可以接受的,你可以将初始猜测定义为第三个参数 例如:
sq( 9 , 0.01)
或:
sq(9 , 0.01 , 2)
答案 0 :(得分:0)
通常,您将ε指定为public static int arraysize=1;
public String namabuku;
public String penulis;
public String Kategori;
public String buku[][]=new String[arraysize][3];
public static int a=0;
public void isiData(String kategori, String buku, String penulis){
this.buku[a][0]=kategori;
this.buku[a][1]=buku;
this.buku[a][2]=penulis;
arraysize++;
a++;
}
的一小部分,而不是g
,因为通常您会想要说结果具有一定的精度(例如,“六位数”),这是必然相对于结果。但除了解释ε参数的含义外,它没有太大的区别。
当然,除非您知道可能的参数在一组非常有限的值内,否则选择一些绝对误差阈值是没有意义的。