我正在寻找Julia中Matlab的lsqnonlin
函数的模拟。
LsqFit.jl看起来很棒,但不接受Matlab实施的相同论点;具体是:
其中初始条件,下限和上限是长度为6的向量。
任何建议都很棒。谢谢!
答案 0 :(得分:2)
实际上,确实如此,它只是在自述文件中没有解释(为了更好的衡量,这里是一个稳定的链接README.md)。
目前还不清楚你的初始条件是什么意思。如果你的意思是初始参数,这是非常有可能的。
using LsqFit
# a two-parameter exponential model
# x: array of independent variables
# p: array of model parameters
model(x, p) = p[1]*exp.(-x.*p[2])
# some example data
# xdata: independent variables
# ydata: dependent variable
xdata = linspace(0,10,20)
ydata = model(xdata, [1.0 2.0]) + 0.01*randn(length(xdata))
p0 = [0.5, 0.5]
fit = curve_fit(model, xdata, ydata, p0)
(取自手册)。这里p0
是初始参数向量。
这会给你一些非常接近[1.0, 2.0]
的东西。但是如果我们想要将参数约束在[0,1]x[0,1]
中呢?然后我们只需将关键字参数lower
和upper
设置为下限和上限的向量
fit = curve_fit(model, xdata, ydata, p0; lower = zeros(2), upper = ones(2))
根据您的确切数据,应该提供类似[1.0, 1.0]
的内容。
答案 1 :(得分:0)
也许这不是一个正确的答案,但过去我取得了一些成功 在边界之外的成本函数中添加惩罚项,类似于具有阶梯式行为的强指数。当然,缺点是手动定义成本函数。