如何使用条件范围与lsqcurvefit参数?

5视图(30天)
我想符合指数曲线的一组数据(指数累积分布函数)。
我想解出的参数 λ , , ,但是有一些我需要绑定的参数条件。
既非负的值可以是0但是两个值不能大于0的同时” 以及“ 的自然对数 λ 可以是任何值在0和4之间。”
有,我将能够使用lsqcurvefit定义这些条件参数来解决吗?如果不是我的方法拟合曲线数据应该如何?下面是我试图使用lsqcurvefit没有之间的条件
xdata = 0:7;
ydata = 100 * 0.112543130593672 - 0.814735805710535 [0 1 1 1 1 1);
磅=(日志(1),0,0);
乌兰巴托=(日志(4),100);%如何定义上界条件?
有趣= @ (x, xdata) (1 - exp (- x (1) * (xdata-x (2))) + x (3));
x = lsqcurvefit(有趣,(0,0,0),xdata, ydata,磅,乌兰巴托)
阴谋(1 * ydata xdata,“同意”,“MarkerSize”,20)
持有
情节有趣(xdata 1 * (x, xdata))
1评论
马特·J
马特·J 2023年1月25日
的自然对数 λ 可以是任何值从0到4。
如果0 < =日志(λ)< = 4,那么你的界限λ是exp(0) < =λ< = exp(4),而在你的代码,你有日志(1)< =λ< =日志(4)

登录置评。

接受的答案

马特·J
马特·J 2023年1月25日
编辑:马特·J 2023年1月25日
你必须把这个问题分为两种情况:一种情况下,X0 Y0时固定在0和第二固定在零。
xdata = 0:7;
ydata = 100 * 0.112543130593672 - 0.814735805710535 [0 1 1 1 1 1);
磅= (exp (0), 0, 0);
乌兰巴托= (exp (4), 100);
%例1:Y0 = 0
有趣= @ (x, xdata) (1 - exp (- x (1) * (xdata-x (2))));
x = lsqcurvefit(有趣,(0,0),xdata ydata,磅(1:2),乌兰巴托(1:2));
初始点是一个局部最小值。优化完成,因为在初始点梯度的大小小于最优公差的值。
索尔{1}= [x (1), (2), 0];
%例2:X0 = 0
有趣= @ (x, xdata) (1 - exp (- x (1) * (xdata)) + x (2));
x = lsqcurvefit(有趣,(0,0),xdata ydata,磅([1,3]),乌兰巴托([1,3]));
局部最小值。lsqcurvefit停止是因为最后的平方和的变化相对于其初始值小于公差的值函数。
索尔{2}= [x (1) 0 (2)];
现在测试每个解决方案和看到resnorm给最好的。显然,溶胶的{2}是最好的:
有趣= @ (x)规范(1 - exp (- x (1) * (xdata-x (2))) + x (3) -ydata);
乐趣(sol {1})
ans = 235.7671
乐趣(sol {2})
ans = 112.7009

更多的答案(0)

类别

找到更多的在非线性最小二乘曲线拟合)帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!