美好的一天,
我在Matlab中有以下代码:
ds1 =
2.0709 -3.0379
3.1447 -1.4320
4.0650 -2.5355
modelfun = @(b,w)(b(1)*10.^w+b(2));
beta0 = [1 1];
mdl = NonLinearModel.fit(ds1,modelfun,beta0);
我正在尝试创建符合等式的NonLinearModel:y = beta(1)* 10 ^(w)+ beta(2),但我最终得到以下错误:
使用NonLinearModel.fit时出错(第837行) 必须提供模型系数的模型定义和初始值。
有什么想法吗?
答案 0 :(得分:1)
该型号是否需要?我不确定这是我的第一选择。
首先绘制数据。 (不是很多,有吗?)一个简单的二阶多项式将是一个精确拟合,因为你有三个点。
y = c0 + c1*x + c2*x^2
或者通过采用双方的基数10日志进行转换可能会更好地为您服务。
这里不需要非线性模型。但是如果你确实需要一个,那么非线性解决方案需要一个起点。他们试图以迭代的方式走向真正的解决方案,如果有的话。
可能不是解决方案,或者您可能选择了一个糟糕的起点,或者步长可能太小而无法及时完成,或者太大而且超出您想要的答案。
所有这些都使非线性问题比线性问题困难得多。