Метод наименьших квадратов для подбора параметров - PullRequest
0 голосов
/ 05 декабря 2018

Меня просят использовать метод наименьших квадратов, чтобы соответствовать параметрам α и β в y = α*exp(-β*x),

с учетом баллов:

x = [1 2 3 4 5 6 7]
y = [9 6 4 2 4 6 9]

У меня естьпроблема определения того, как должна выглядеть моя матрица.Я знаю, что должен взять натуральный логарифм обеих сторон функции, чтобы избавиться от экспоненты, а также получить натуральный логарифм значений y, которые:

ln_y = [2.19 1.79 1.39 0.69 1.39 1.79 2.19]

Однако как должна выглядеть моя матрица, потому что у меня осталось ln(y) = ln(α) - β*x?

Таким образом, столбец состоит из единиц, а столбец x будет моими значениями x, но что должен содержать столбец α?

Вот что я должен получить:

A = [1 1 1 1 1 1 1; 1 2 3 4 5 6 7]

Правильно ли я думаю?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

У тебя почти было это.Второй ряд должен быть -x.

x = [1 2 3 4 5 6 7]
y = [9 6 4 2 4 6 9]

logy = log(y)

n = length(x);
A = [ones(1,n); -x]

c = logy/A; %Solve for coefficients

alpha = exp(c(1))
beta = c(2);
0 голосов
/ 06 декабря 2018

Первое, что мы можем сделать, это взять натуральный логарифм ln (log в Matlab)) с обеих сторон уравнения:

y = α * e^(-β * x)

становится:

ln(y) = ln(α * e^(-β * x))
// Law of logarithms
ln(x * y) = ln(x) + ln(y) 

// thus:
ln(y) = ln(α) + ln(e^(-β * x))
Simplifying:
ln(y) = -β * x + ln(α)

Теперь у нас есть ln(y) как линейная функция x, и проблема сводится к нахождению линейной регрессии в смысле наименьших квадратов.Давайте определим lny = log(y) и A = ln(α), и мы можем переписать задачу как

lny = -β * x + A

Где

x = [1 2 3 4 5 6 7]
lny = [2.19 1.79 1.39 0.69 1.39 1.79 2.19]

Для каждого x_i в x мы можем оценить lny следующим образом (переписано ввосходящая сила x):

lny(x1) = A - β * x1
lny(x2) = A - β * x2
...
lny(xn) = A - β * xn

в матричной форме

LNY = X * [A β]'
Or,
X * [A β]' = LNY
// let Coefs = [A β]'
Coefs = X^-1 * LNY

в Matlab

x = [1 2 3 4 5 6 7];
y = [9 6 4 2 4 6 9];
lny = log(y);
X = [ones(length(y), 1), -x']; % design matrix
coefs = X\lny'
% A = coefs(1) and β = coefs(2)
% ln(α) = A thus α = exp(A)
alpha = exp(coefs(1));
beta = coefs(2)
...