Параметры экспоненциальной функции - PullRequest
0 голосов
/ 20 февраля 2019

У меня 3 балла [x0 y0], [x1 y1], [x2 y2] со строгим условным x0<x1<x2, y0<y1<y2.Все эти точки лежат на некоторых показательных функциях y=ae^(bx)+c.Мне нужно найти a,b,c ... Невозможно точно решить систему из 3 уравнений, поэтому мне нужно ее приблизить.Есть ли математическая библиотека в Java, которая поможет мне решить эту проблему?Я нахожу что-то похожее на mathcad

https://help.ptc.com/mathcad/en/index.html#page/PTC_Mathcad_Help/exponential_regression.html, но не нахожу в Java.

Другой способ - как решить систему из 3 уравнений и примерно 3 значений.

ae^(bx_0)+c=y_0 ae^(bx_1)+c=y_1 ae^(bx_2)+c=y_2

1 Ответ

0 голосов
/ 08 июня 2019

Вы должны решить систему нелинейных уравнений, для которой возможно только приближенное решение, но это можно сделать, используя многовариантный метод Ньютона Рафсона .

Алгоритмоткровенно говоря, нотационная боль, но вы можете пройти через это здесь - http://fourier.eng.hmc.edu/e176/lectures/NM/node21.html. То, что происходит по существу, состоит в том, что у вас есть функция, производная которой приводит вас к «равновесию» из начальной случайной точки (которую вы угадываете как возможную)root)

Если вы не хотите писать код самостоятельно, этот репозиторий может дать вам своего рода стартовый пакет - https://github.com/prasser/newtonraphson. Но, AFAIK, готовой библиотеки для этой цели не существует.Вы можете использовать Wolfram's Mathematica или MATLAB / OCTAVE для готовых библиотек.

Тем не менее, есть несколько других (более сложных) вещей, которые вы можете посмотреть в

  1. https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
  2. https://www1.fpl.fs.fed.us/optimization.html
  3. http://icl.cs.utk.edu/f2j/
  4. http://optalgtoolkit.sourceforge.net/
  5. http://scribblethink.org/Computer/Javanumeric/index.html
  6. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_l_bfgs_b.html

Надеюсь, это поможет!

...