0

我正在尝试为由隐式函数定义的模型找到优化参数,以使用 fsolve 和 lsqcurvefit 拟合数据集。我在单独的 m 文件中定义了 3 个函数:第一个是要定义的 4 个参数中的隐式函数的定义,第二个使用 fsolve 查找已定义隐式函数的根,第三个使用 lsqcurvefit 查找优化值为四个参数。我自然需要为参数定义足够好的初始值,但是尝试了各种合理的组合后,lsqcurvefit 总是运行大约 20-30 次迭代(matlab 在每次迭代后打印出用 fsolve 找到的解计算的向量值)然后打印

No solution found.

fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
default value of the function tolerance.

<stopping criteria details>

??? Error using ==> lsqcurvefit at 253
Function value and YDATA sizes are incommensurate.

Error in ==> optimointi at 5
z = lsqcurvefit('laske_i',parametrit,V_vektori,I_vektori_mitattu,[],[],options);

我看不出“函数值和 YDATA 大小不相称”。突然,因为迭代第一次运行了 20-30 次。每次迭代后打印的值几乎全是零(非常适合),但最后几个“爆炸”从 0 到 1(系数为 10 的几个幂)。对错误的任何帮助表示赞赏!

4

2 回答 2

0

错误在于 fsolve 的工作方式。实际工作的是 fsolve,但我必须添加一个 for 循环以使域向量的每个元素的 fsolve 的结果也成为一个向量。这就是为什么 Function value 和 YDATA 真的不相称的原因。

于 2010-11-29T12:57:52.030 回答
0

在我的情况下,lsqcurvefit 中的错误说“函数值和 YDATA 大小不相称”是由于我用作 Ydata 的向量,这实际上是一件很愚蠢的事情。向量必须是列形式 y=[1;2;3],不像 y=[1 2 3]。这导致 lsqcurvefit 出现问题,因为 xdata 也像列

于 2015-11-12T11:58:26.470 回答