[JAVA程式語言]例題2-4 使用Newton-Raphson理則解 cos(x) - x =0 非線性方程式解
/* ex2-4.java is used for solving nonlinear equation f(x)=0
* based on Newton-Raphson Method with initial approximation
* p0.
例題2-4 使用Newton-Raphson理則解 cos(x) - x =0 非線性方程式解
*/
public class Main {
double fx(double x1) {
return (Math.cos(x1)-x1);
}
double ffx(double x1) {
return (-Math.sin(x1)-1);
}
public static void main(String args[]){
Main func = new Main();
final int MAX = 100; /* maximum iterations */
final double TOL = 0.001;/* maximum iterations */
int i=1;
double x0,x;
x0=1.0; //假設啟動值x0=1.0
while(i<=MAX){
x= x0- func.fx(x0)/func.ffx(x0) ;
System.out.printf("%2d %10.7f\n",i-1,x0);
if(Math.abs(x-x0) <TOL){
System.out.printf("Root=%10.7f x-x0=%10.7f\n",x,Math.abs(x-x0));
break;
}
i++;
x0=x;
}
System.out.printf("Newton-Raphson Method failed after %2d iterations!!!\n",i);
}
}
輸出畫面
i (x0)
0 1.0000000
1 0.7503639
2 0.7391129
Root= 0.7390851 x-x0= 0.0000278
Newton-Raphson Method failed after 3 iterations!!!
沒有留言:
張貼留言