java - Java 中的 Newton-Raphson 方法

标签 java netbeans newtons-method

我正在编写一个程序,用一个方程在 Java 中应用 Newton-Raphson 方法:

f(x) = 3x - e^x + sin(x)



g(x) = f'(x) = 3- e^x + cos (x)

问题是当我试图在论文中求解方程时误差小于 (0.5%)
我得到:

Xn |错误

Xo = 2 | ----------------------

X1 = 1.900158400 | 5.254%

X2 = 1.89012709 | 0.5307%

但是当我用 Java 编写程序时,它没有到达最后一行,这是必需的错误
(例如:X2 = 1.89012709)
它只显示第一行,即第一步,即
(X1 = 1.900158400)

我的 Java 代码是:

package newton.raphson.method;

public class NewtonRaphsonMethod {


          // let f be a function defined as f(x) = 3x - e^x + sin(x)

        public static double f (double x){

            return (3*x-(Math.pow(Math.E, x))+Math.sin(x));
        }

        // let g be a function defined as g(x) = f'(x) = 3- e^x + cos (x)


     public static double g (double x){

            return (3-(Math.pow(Math.E, x))+Math.cos(x));
        }


          public static double NewtonRaphson (){
              int iterations_number=0;
              boolean cont = true;
            double x0 , x1, Error=5000;
            x0 =2;
            x1=0;

            while (cont){
            x1 = x0 - (f(x0)/g(x0));
            Error = (Math.abs(x1-x0)/x1)*100;
            iterations_number++;
            if (f(x1)<=0.05){
            cont = false;
            System.out.println("The Program did it in "+iterations_number+" Step(s)");
            System.out.println("The root is: "+ x1);
             System.out.println("The Error is: "+(Math.abs(x1-x0)/x1)*100+"%");
            }
            }

            return x1;
        }

    public static void main(String[] args) {
         NewtonRaphson();

    }
}


输出是:

The Program did it in 1 Step(s)
The root is: 1.9001584993293807
The Error is: 5.254377500921955%

最佳答案

您的代码永远不会“到达最后一行”的原因(大概您指的是 NewtonRhapson() 方法中的 return 语句)是因为它处于无限循环中。循环的每次迭代都与上一次相同。您在循环外设置 x0,然后再也不会设置它。鉴于循环中的其余值/计算是从 x0 派生的,您会一遍又一遍地得到相同的结果。

关于java - Java 中的 Newton-Raphson 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905824/

相关文章:

math - RGB 和 RYB 颜色空间之间的转换

java - 如何将文件从文件选择器传递到函数?

java - Grails/GORM withCriteria 搜索 toString()

xml - JSF 2.1 + Tomcat 8 - 部署错误

java - 从代码创建方法

perl - perl 中的牛顿法

java - 使用Java代码的Kafka ACL授权问题

java - 如何使用 Hibernate validator 有条件地验证字段?

java - 将 Action 监听器添加到 netbeans 中的按钮

python - 牛顿法 : order of statements in loop