У меня есть математическая формула в моей программе, которая принимает два значения, между 0 и 1, и выполняет большую работу, чтобы найти ответ.
Я также хочу иметь возможность делать обратное, т. Е. Я хочу знать, какие входные значения будут производить определенный вывод. Я не могу сделать это аналитически, поскольку один и тот же ответ может быть получен из многочисленных входных данных, и формулы все равно слишком сложны.
Моя проблема в том, что в настоящее время я делаю что-то подобное, что занимает довольно много времени для вычисления
for(double i = 0; i <= 1 ; i += 0.0001)
for(double j = 0; j <= 1; j+= 0.0001)
answer = formula(i,j); //do the math
if( Math.abs(answer - answerWanted) < 0.001)
//close match found
Видя, что формулы статичны, я наверняка смогу предварительно рассчитать эти значения. Я предполагаю, что тогда будет гораздо быстрее найти значение, чем выполнить много вычислений.
Я никогда не делал ничего подобного раньше. Кто-нибудь знает, какие структуры данных использовать / как индексировать / как хранить результаты? На данный момент я думаю только о том, что я мог бы как-то отсортировать ответы, чтобы уменьшить пространство поиска, или просто инициализировать огромный массив во время выполнения. Если это имеет значение, ответ может быть в диапазоне от 0 до 2000.