0

再会,

我在 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);

我正在尝试创建一个适合等式的非线性模型:y = beta(1)*10^(w)+beta(2),但最终出现以下错误:

使用 NonLinearModel.fit 时出错(第 837 行) 必须提供模型定义和模型系数的初始值。

有任何想法吗?

4

1 回答 1

1

该模型是必需的吗?我不确定这会是我的第一选择。

从绘制数据开始。(不多,是吗?)一个简单的二阶多项式将是一个精确的拟合,因为你有三个点。

y = c0 + c1*x + c2*x^2

或者,通过取双方的以 10 为底的对数进行转换可能对您更有效。

这里不需要非线性模型。但是,如果您确实需要一个,众所周知,非线性解决方案需要一个起点。他们试图以迭代的方式找到真正的解决方案,如果有的话。

可能没有解决方案,或者您可能选择了一个错误的起点,或者步长可能太小而无法及时完成,或者太大而越过您想要的答案。

所有这些都是使非线性问题比线性问题更难的原因。

于 2013-06-01T18:40:59.553 回答