Подгонка данных к неизвестной кривой - возможно загар - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь установить следующий набор данных:

0.01    3.69470157 
0.59744 3.514991345
0.65171 3.265043489
0.70076 2.978933734
0.75021 2.700637918
0.80103 2.413791532
0.84878 2.086939551
0.89572 1.819489189
0.94717 1.532756131
0.99626 1.244667864
1.01643 1.130430784
1.03626 1.024324017
1.05633 0.910153046
1.07605 0.804981232
1.09791 0.708171108
1.11795 0.612456485
1.13841 0.516217721
1.15944 0.421844141
1.18032 0.335218393
1.20003 0.258073446
1.22204 0.181296813
1.24223 0.115157866
1.25935 0.069310744

Где первый столбец х, а второй у.

Я пробовал функцию tanh, полиномы, а теперь пробую функцию erf. Кажется, ничего не подходит правильно.

Есть ли способ узнать, к какой функции я должен подходить? И если да, то какова форма такой функции. Спасибо.

БОЛЬШОЕ РЕДАКТИРОВАНИЕ: функция должна монотонно уменьшаться при увеличении x и иметь асимптотику в хвостовых концах. Таким образом, для набора данных это должно выглядеть как ~ 3.7 и ~ 0.0

1 Ответ

0 голосов
/ 26 января 2019

Простое уравнение синусов (радиан) со смещением дает хорошую подгонку:

y = amplitude * sin(pi * (x - center) / width) + Offset

amplitude = -2.2364202059901910E+00
center =  8.6047683705837374E-01
width =  1.1558269132014631E+00
Offset =  2.0456549443735259E+00

R-квадрат: 0.99994

RMSE: 0.00909

sine

...