MATLAB non-linear 使用成本函数进行回归
MATLAB non-linear regression using cost function
目前,我正在尝试弄清楚如何使用模型求解 non-linear 系统。型号是:
m2(x) = a*x + 2*exp(b*x)
我必须使用数据求解 a 和 b:
x = [0.00,0.25,0.50,0.75,1.00];
y = [2.10,3.70,6.26,10.03,16.31];
使用它我解决了以下成本函数:
(a,b) = sum(y(i) - m2(x(i))^2
我已经尝试了一段时间了,但我不知道如何从 m2(x(i)) 中提取 a 和 b。 fsolve 对我不起作用,我也尝试过常规的 solve 功能。我不是在寻找答案,而是在寻找一个方向,因为我正处于完全的障碍中。
编辑:模型捕获了 y 对自变量 x 的依赖性
我运行这个函数得到5个方程。
function [f] = func(x,y)
syms a b
f = a*x + 2 * exp(b*x) == y;
end
与driver:
for i = 1:5
f(i) = func(x(i),y(i));
end
disp(f');
你的未知数是 a,b
所以我在模型中将它们参数化为 w
,而不是你所做的。我用了lsqnonlin
,解决方法如下:
x = [0.00,0.25,0.50,0.75,1.00];
y = [2.10,3.70,6.26,10.03,16.31];
m2 = @(w) w(1)*x + 2*exp(w(2)*x);
cost_func = @(w) m2(w)-y;
v = lsqnonlin(cost_func,[1 1]); % normal least squares
plot(x,y,'x',x,m2(v));
目前,我正在尝试弄清楚如何使用模型求解 non-linear 系统。型号是:
m2(x) = a*x + 2*exp(b*x)
我必须使用数据求解 a 和 b:
x = [0.00,0.25,0.50,0.75,1.00];
y = [2.10,3.70,6.26,10.03,16.31];
使用它我解决了以下成本函数:
(a,b) = sum(y(i) - m2(x(i))^2
我已经尝试了一段时间了,但我不知道如何从 m2(x(i)) 中提取 a 和 b。 fsolve 对我不起作用,我也尝试过常规的 solve 功能。我不是在寻找答案,而是在寻找一个方向,因为我正处于完全的障碍中。
编辑:模型捕获了 y 对自变量 x 的依赖性 我运行这个函数得到5个方程。
function [f] = func(x,y)
syms a b
f = a*x + 2 * exp(b*x) == y;
end
与driver:
for i = 1:5
f(i) = func(x(i),y(i));
end
disp(f');
你的未知数是 a,b
所以我在模型中将它们参数化为 w
,而不是你所做的。我用了lsqnonlin
,解决方法如下:
x = [0.00,0.25,0.50,0.75,1.00];
y = [2.10,3.70,6.26,10.03,16.31];
m2 = @(w) w(1)*x + 2*exp(w(2)*x);
cost_func = @(w) m2(w)-y;
v = lsqnonlin(cost_func,[1 1]); % normal least squares
plot(x,y,'x',x,m2(v));