有谁知道如何在 MATLAB 中最小化包含积分的函数?该函数如下所示:
L = Int(t=0,t=T)[(AR-x)dt], A is a system parameter and R and x are related through:
dR/dt = axRY - bR, where a and b are constants.
dY/dt = -xRY
我在某处读到我可以结合使用 fminbnd 和 quad,但我无法使其工作。有什么建议么?
有谁知道如何在 MATLAB 中最小化包含积分的函数?该函数如下所示:
L = Int(t=0,t=T)[(AR-x)dt], A is a system parameter and R and x are related through:
dR/dt = axRY - bR, where a and b are constants.
dY/dt = -xRY
我在某处读到我可以结合使用 fminbnd 和 quad,但我无法使其工作。有什么建议么?
也许您可以提供更多积分的详细信息,例如缺少的括号在[AR-x)dt]
哪里?是否有任何依赖x
,t
或者我们可以整合dR/dt = axR - bR
给予R=C*exp((a*x-b)*t)
?fminbnd
在任何情况下,要在and上回答您的问题quad
,您可以设置A,C,T,a,b,xmin
and xmax
(最后两个是您要查找最小值的范围)并使用:
[x fval] = fminbnd(@(x) quad(@(t)A*C*exp((a*x-b)*t)-x,0,T),xmin,xmax)
这发现x
使积分最小化。
如果我没有弄错,您正在尝试尽量减少对 t 的尊重:
\int_0^t{(AR-x) dt}
那么你只需要找到零点:
AR-x
这只是数学,不是 matlab ;)
这是对您的方程式的一些操作,可能会有所帮助。
结合你给出的第二个和第三个方程
dR/dt = -a*(dY/dt)-bR
现在,如果我们在右手边求解 R 并将其代入您给出的第一个方程,我们得到
L = Int(t=0,t=T)[(-A/b*(dR/dt + a*dY/dt) - x)dt]
现在我们可以整合第一项得到:
L = -A/b*[R(T) - R(0) + Y(T) - Y(0)] - Int(t=0,t=T)[(x)dt]
所以现在关于 R 和 Y 的所有事情都是端点。事实上,你也可以定义一个新函数 Z 等于 Y + R。然后你得到
L = -A/b*[Z(T) - Z(0)] - Int(t=0,t=T)[(x)dt]
下一部分我没有那么自信。x 对 t 的积分将给出一些在 t = 0 和 t = T 时评估的函数。这个函数我们将调用 X 来给出:
L = -A/b*[Z(T) - Z(0)] - X(T) + X(0)
这个等式适用于所有 T,所以如果我们愿意,我们可以将 T 设置为 t。
L = -A/b*[Z(t) - Z(0)] - X(t) + X(0)
此外,我们可以将许多常量组合在一起并称它们为 C 来给出
X(t) = -A/b*Z(t) + C
在哪里
C = A/b*Z(0) + X(0) - L
所以我不确定这还能做什么,但我已经证明 x(t) 的积分与 Z(t) = R(t) + Y(t) 线性相关。在我看来,有很多方程可以解决这个问题。其他人看到从这里去哪里?我的数学有问题吗?