我正在研究一个小程序来计算和绘制抛物线。但是我在计划中需要计算可评估值的一小部分。二维数组
二次函数如下:y = a * (x - alpha)² + Beta
。
所以,如果我填写以下这个函数的值:y = 2 * (x - 1)² + (-12)
。我需要成为这个价值表:
x | -4.0 | -3.0 | -2.0 | -1.0 | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 |
y | 38.0 | 20.0 | 6.0 | -4.0 | -10.0 | -12.0 | -10.0 | -4.0 | 6.0 |
我设法让第一行正确,但第二行(计算te值)是完全错误的。
public double[][] berekenWaardentabel(int input[], int AANTALKOLOMMEN, double startWaarde) {
double[][] waarden = new double[RIJEN][AANTALKOLOMMEN];
System.out.println(waarden.length);
System.out.println(startWaarde + "\n");
for(int i = 0; i < RIJEN; i++) {
for(int j = 0; j < AANTALKOLOMMEN; j++) {
waarden[0][j] = startWaarde++; //value of first row (start from -4.0, counts upwards)
waarden[1][j] = input[0] * (Math.pow((startWaarde - input[1]), 2)) + input[2];
System.out.print(waarden[i][j] + " ");
}
System.out.println();
}
return waarden;
}
这是输出我得到:
-4.0 -3.0 -2.0 -1.0 0.0 1.0 2.0 3.0 4.0 5.0 6.0
86.0 | 116.0 | 150.0 | 188.0 | 230.0 | 276.0 | 326.0 | 380.0 | 438.0 | 500.0 | 566.0
任何一个想法如何解决这个问题?谢谢!
尝试调试您的代码。您应该能够逐步了解变量的内容。 –
startWaarde应该在第一个循环中重新初始化为-4,否则您将填充第二行,以8开始而不是-4。 – StephaneM
我已经设法找到答案来计算正确,但我仍然有一个小问题。每个计算的解决方案尚未按正确顺序排列。我得到ROW1:-4.0 | -3.0 | -2.0 | -1.0 | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 | 6.0。 ROW2:20.0 | 6.0 | -4.0 | -10.0 | -12.0 | -10.0 | -4.0 | 6.0 | 20.0 | 38.0 | 60.0。虽然-4.0等于38,-3.0等于20.所以他们需要移动1才能处于正确的位置。 – Lorenzo