我想将牛顿拉夫森法的数据制成表格,仅适用于整齐数组中的二次方程。我遇到的困难是分配数组中的变量,将 xn1 的前一个值分配给后续行中的 xn 值,并在数组中具有 double 值。
例如(在下面的代码中)我有诸如 (n, xn, fxn, dfxn, xn1) 之类的变量。我想在各自的标题下分配这些变量的值,如下图所示。
在[图像]中,第一行中的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/