Я пытаюсь подогнать exponential decay
к некоторым экспериментальным данным и использую polyfit в numpy. Кроме того, сама подгонка взвешена, то есть каждая точка данных имеет некоторый вес, связанный с ней, и polyfit function can find that optimal weights
?
Ссылка: Ограниченный np.polyfit
Таким образом, окончательный вывод будет coefficient value
и weight vector
для каждой связанной точки данных.
Также я хочу ограничить параметр M
от 0,9 до 1 и N
от -0,001 до -0,009.
Данные:
t(x) rate(y)
0 0.950
1 0.940
2 0.931
3 0.921
4 0.912
5 0.902
6 0.893
7 0.884
8 0.875
9 0.866
10 0.857
11 0.849
12 0.840
13 0.831
14 0.823
15 0.814
16 0.806
17 0.798
18 0.790
19 0.782
20 0.774
21 0.766
22 0.758
23 0.750
24 0.743
25 0.735
26 0.728
27 0.720
28 0.713
29 0.705
30 0.698
Я хочу подобрать ближайшую экспоненциальную кривую к этим данным.
Мой подход:
def fit_exp_linear(x, y):
y = np.log(y)
M, N_log = np.polyfit(t, y, 1)
N = np.exp(N_log)
return M, N
Как я могу узнать вес для каждой строки здесь?
Конечный результат, который я хочу: M, N and Weights vector of size dim(x)
Выбросы:
Как избавиться от этих выбросов с помощью curve_fit?