【发布时间】:2020-05-01 20:09:11
【问题描述】:
我需要找到树变量的值:a、b 和 c,通过找到最小二乘法的全局最小值。我的功能如下:
f = (1/a)*(asinh((Z(i)/b)^(1/c))^(-1)
其中i 是向量Z 的索引。向量Z 在任务中给出了 9 个值。
对于s,我还有一个包含 9 个值的向量。
最小二乘法需要将函数f 计算的值与向量s 的值之间的差求和。它应该看起来像这样:
((s(i)-f(i))/s(i))^2
我也有价值a、b和c的界限:
10e10>a>10e19、10e-7>b>50、10e-15>c>10。
我尝试使用lsqnonlin,但我不知道该怎么做。我会感谢您的任何帮助!
我试图做这样的事情:
function f=Fsigma(x, Z, sigma)
f=0;
for i=1:length(sigma)
f=f+((sigma(i)-((1/x(1,:))*(asinh((Z(i)/x(2,:))^(1/x(3,:)))^(-1))))/sigma(i))^2
end
end
并像这样在lsqnonlin 中调用这个函数:
Z= [1.49E+18 1.49E+19 1.49E+20 1.99E+15 1.99E+16 1.99E+17 1.49E+13 1.49E+14 1.49E+15];
sigma = [55.1705 79.1016 105.636 25.4809 40.8572 61.7238 12.8147 21.4054 34.8319];
a=linspace(10e10,10e19);
b=linspace(10e-7,50);
c=linspace(10e-15,10);
x=[a; b; c];
p=lsqnonlin(Fsigma(x,Z,sigma));
【问题讨论】:
-
请贴出你目前拥有的代码,这样你的问题就更清楚了
-
@max 我刚刚发布了我的代码。我试图更改我在文档中找到的示例,因此我将能够找到所有树变量:a、b ad c 而不是只找到一个
标签: matlab least-squares minimization