【发布时间】:2021-01-17 16:13:22
【问题描述】:
我可以运行任何方程的代码,但是当我引入积分时,命令将无法运行:
t=dataset_TK1(:,1);
dataset_TK4=xlsread('Akis','Sheet1','AG491:AR725');
y_4=dataset_TK4(:,12);
Kg=1.76717865712934;
N0=1.08E+05;
fun1=@(Z) Z^(-1+(X(1)-Kg)/X(3))*exp(Z);
Ntotal=@(X,t)integral(fun1,X(2)*exp(-X(3)*t),X(2));
X0=[10,10,10];
Fsumsquares=@(X)sum((Ntotal(X,t)-y_4).^2);
opts = optimoptions('fminunc','Algorithm','quasi-newton');
[xunc,ressquared,eflag,outputu] = fminunc(Fsumsquares,X0,opts)
有什么建议吗?
谢谢
【问题讨论】:
-
我想积分的极限应该是标量,不能用函数计算运行时。
-
fun1应该是fun1 = @(X,Z)可能吗?您的代码缺少X,句柄下只有Z -
但我必须及时记录每个时间点。有建议的方法吗?
-
X(1)和X(3)在fun1中,但X没有定义,至少在你的代码 sn-p 中没有。 -
而且
t在Ntotal的句柄中,但也在代码sn-p的第一行定义。X没有被定义,而是与t相同。Ntotal在Fsumsquares中调用时定义了其参数,而fun1在Ntotal调用时没有定义参数。我认为函数参数都应该一视同仁。
标签: matlab integral non-linear