我正在尝试为隐式函数定义的模型找到优化的参数,以使用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. ??? 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(具有十次幂的系数)“爆炸”。对错误的任何帮助表示赞赏!
回答:
错误在于fsolve如何工作。实际起作用的是fsolve,但是我必须添加一个for循环,以使域向量的每个元素的fsolve结果也成为一个向量。这就是为什么Function值和YDATA确实不相称的原因。
更多&回答...