2019年4月5日 星期五

[JAVA程式語言]例題2-4 使用Newton-Raphson理則解 cos(x) - x =0 非線性方程式解

 [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!!!


沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...