Я пытаюсь воспроизвести ту же подгонку кривой (называемую «тенденцией») в Excel, но в C #: экспоненциальная, линейная, логарифмическая, полиномиальная и степенная.

Я нашел линейные и полиномиальные как:

Tuple<double, double> line = Fit.Line(xdata, ydata); 
double[] poly2 = Fit.Polynomial(xdata, ydata, 2);

Я также нашел экспоненциальное соответствие.

Но мне интересно, как подобрать кривую для Power. У кого-нибудь есть идея?

Я должен получить обе константы, как показано в формуле снимка экрана Excel:

  • сила
  • множитель (перед x)

enter image description here

0
Eric Ouellet 15 Фев 2018 в 00:56

1 ответ

Лучший ответ

Прежде, чем кто-нибудь станет пятым, кто проголосует за закрытие этого вопроса ...

Я задал вопрос прямо на форуме mathdotnet (который я недавно обнаружил). Кристоф Руэгг, главный разработчик библиотеки, ответил мне кое-что отличным, чем я хочу поделиться, чтобы помочь другим с той же проблемой:

Предполагая, что вы имеете в виду целевую функцию вдоль строки y: x -> a * x ^ b, то это более простая версия того, что я описано в Линеаризация нелинейных моделей путем преобразования.

Кажется, это используется достаточно часто, поэтому я начал добавлять новые Fit.Power и Fit.Exponential локально для этого случая - пока не продвигался, так как сначала требуется дополнительное тестирование, но я ожидаю, что он станет частью v4.1.

В качестве альтернативы, к настоящему времени мы также поддерживаем нелинейную оптимизацию, которая также может использоваться для подобных случаев (модуль FindMinimum).

Ссылка на мой вопрос: mathdonet - Подгонка кривой: мощность

3
Eric Ouellet 16 Фев 2018 в 14:45