Я работаю над небольшой программой для вычисления и рисования параболы. Но я застрял в небольшой части программы, где мне нужно рассчитать ценность.Двумерный массив
Квадратичная функция следующая: 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