2013-09-05 3 views
0

У меня довольно сложное уравнение с одной переменной, которую я хотел бы изменить. T * он цель состоит в том, чтобы получить уравнение равным 0. *Цель-c как реализовать алгоритм поиска цели, подобный excel?

Например:

0 = variable * (complicated equation of constants and exponents) 

Моя первоначальная мысль была просто грубой силой вниз от некоторого достаточно большого значения переменной, но я быстро понял, что число I «Поиск цели» может содержать дробный компонент, поэтому простой целочисленный декремент может не работать.

Может ли кто-нибудь предложить правильную реализацию алгоритма поиска цели, например, excel?

double result = 1; 
double variable = 1000; 
double tempVariable = variable; 
double tolerance = 0.1; 

while (abs(result) > tolerance) { 
    variable--; 

    result = variable * (complicated equation); 

}; 

Есть ли алгоритм, который я могу использовать для численного решения уравнения, которое у меня есть?

+1

Знание «сложного уравнения» может помочь. – metsburg

ответ

1

Simulated annealing - широко используемая техника. В этом случае вам нужно свести к минимуму абсолютное значение вашей сложной функции, которая будет находить ближайшее значение до 0.

+1

Если уравнение может быть установлено на кривой, то мы можем интерполировать и находить решение намного быстрее, чем Имитированный отжиг. Это зависит от характера уравнения. – metsburg

0

В качестве альтернативы вы можете использовать фитинг с наименьшей квадратной кривой (см. «Lsqcurvefit» в MATLAB). lsqcurvefit намного мощнее, чем GoalSeek при подгонке кривой, в зависимости от сложности решаемой задачи.

cheers,

Смежные вопросы