java - 牛顿拉夫森法 Java

标签 java arrays math newtons-method

我想将牛顿拉夫森法的数据制成表格,仅适用于整齐数组中的二次方程。我遇到的困难是分配数组中的变量,将 xn1 的前一个值分配给后续行中的 xn 值,并在数组中具有 double 值。

例如(在下面的代码中)我有诸如 (n, xn, fxn, dfxn, xn1) 之类的变量。我想在各自的标题下分配这些变量的值,如下图所示。

enter image description here

在[图像]中,第一行中的xn+1值成为第二行中的xn值。我很难做到这一点。我尝试在 for 循环 的末尾执行 xn = xn1 ,但这似乎不起作用。

最后,每次我尝试将 double 变量值分配给 double array[][] 时,都会出现错误,提示 double 无法转换为双倍[]

代码:

import java.util.Scanner;
import java.lang.Math;
import java.util.Formatter;

public class Newton {
    static double a, b, c;
    static double n = 1;
    static double xn;
    static double fxn;
    static double dfxn;
    static double xn1;

    public static void main(String args[]) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter a");
        double a = s.nextDouble();
        System.out.println("Enter b");
        double b = s.nextDouble();
        System.out.println("Enter c");
        double c = s.nextDouble();
        System.out.println("Enter The value you want to start with");
        double xn = s.nextDouble();
        fxn = a * Math.pow(xn, 2) + b * xn + c;
        dfxn = 2 * a * xn + b;
        xn1 = xn - (fxn / dfxn);
        double array[][] = { n, xn, fxn, dfxn, xn + 1 };
        System.out.println();
        System.out.println("n\t" + "Xn\t" + "fXn\t" + "dfXn\t" + "Xn+1");
        array(array);
    }

    public static void array(int x[][]) {
        for (int row = 0; row < x.length; row++) {
            for (int column = 0; column < x[row].length; column++) {
                System.out.print(x[row][column] + "\t");
            }
            System.out.println();
        }
    }
}

最佳答案

至此:double array[][] = {n, xn, fxn, dfxn, xn+1};

因为它是一个二维数组,所以它的初始化方式与其他数组不同:

double[][] array = new double[][]{
          { n, xn, fxn, dfxn, xn+1}
        };

现在,由于 xn+1 是一个运算,因此您可以将其括起来以将其分配给数组:

double[][] array = new double[][]{
          { n, xn, fxn, dfxn, (xn+1)}
        };

此外,当您调用 array(array); 时,您正在尝试将 double 数组传递给 int 方法。尝试更改方法的构造函数:

public static void array(double[][] array){
    //...
}

最后,您需要在调用 array 方法之前关闭 scanner,以防止资源泄漏:s .close();

关于java - 牛顿拉夫森法 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43499767/

相关文章:

c# - 如果小数部分为零,如何隐藏它?

c++ - 如何计算网格指数

c++ - 内联 asm 缓冲区循环

java - 在 Android 中的两个 Activity 之间传递字符串数组时出现 NullPointer

java - Swing:在 JComboBox 中检测 Enter?

python - 像素和几何形状 - Python/PIL

math - ∃是什么意思?

java.awt.Desktop.open 不适用于 PDF 文件?

java - java中形式参数的同步

java - 是否可以在 Android 上禁用 AES/CCM 中的消息身份验证检查?