要求我用最小二乘法来拟合参数 α
和β
在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
?
所以-β
列由 1 和 x
组成专栏将是我的x
值,但是 α
应该是什么?列包含?
这是我认为我应该得到的:
A = [1 1 1 1 1 1 1; 1 2 3 4 5 6 7]
我的想法正确吗?
最佳答案
我们能做的第一件事就是在等式两边取自然对数ln
(Matlab
中的log
)):
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 中的每个 x_i,我们可以按如下方式评估 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)
关于matlab - 最小二乘法拟合参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639059/