如何解决如何在非线性数据拟合中使用积分:先使用Fsumsquares然后使用fminunc进行参数优化
我能够为任何方程式运行代码,但是当我引入积分时,该命令将不会运行:
cat sdx.log | mail
有什么建议吗?
谢谢
解决方法
下面的MWE(最小工作示例)代码可以正常工作,在某种意义上,它不会喷出错误:要获得它,我已用虚拟数组替换了您的excel数据。
我限制自己从代码段中的函数中删除不必要的句柄,并将运算符调整为.^
中的元素级.*
和fun1
。
另外,在Ntotal
积分中,限制应该是标量,而不是向量。这就是为什么我只从t
中取出一个元素的原因:
% dummies,put your data back
t=ones(1,10);
y_4=[1,2,3,4,5,6,7,8,9,10];
X=[11,55,22,89,6];
Kg=1.76717865712934;
N0=1.08E+05;
fun1=@(Z) Z.^(-1+(X(1)-Kg)/X(3)).*exp(Z); % changed
Ntotal=integral(fun1,X(2)*exp(-X(3)*t(1)),X(2)); % changed
X0=[10,10,10];
Fsumsquares=@(X) sum((Ntotal-y_4).^2); % changed
opts = optimoptions('fminunc','Algorithm','quasi-newton');
[xunc,ressquared,eflag,outputu] = fminunc(Fsumsquares,X0,opts)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。