[英]How can I include the derivative of a function as an input to a function handle?
考虑以下与常微分方程组解相对应的代码段
da / dt = t * a /(a ^ 2 + b ^ 2 +1)
db / dt =(ba)^ 2 /(b ^ 2 + c ^ 2 + 1)
dc / dt = t ^ 2 * c ^ 2 /(a ^ 2 + c ^ 2 + 1)
clear;clc;
initial_conditions = [1 0 -1];
F=@(t,y) [t.*y(1)./(y(1).^2+y(2).^2+1);
(y(2)-y(1)).^2./(y(2).^2+y(3).^2+1);
t.^2.*y(3).^2./(y(1).^2+y(3).^2+1)];
[t y]=ode23tb(F,[0 2], initial_conditions);
plot(t, y(:,1), 'r', t, y(:,2), 'g', t, y(:,3), 'b')
其中y(1)对应于a,y(2)对应于b,y(3)对应于c。 如何包含z(0)= 2的附加微分方程dz / dt = 5 * da / dt? 我不确定如何将其包括在函数句柄中,因为它是右侧状态变量之一的派生形式,而不是其他方程式本身的状态变量本身之一。
谢谢。
由于a(t)
, b(t)
和c(t)
以及它们的导数不取决于z(t)
或dz/dt
,因此问题的性质仍然只是3个未知的ODE。
因此,尽管您可以将其编码为4个未知数的ODE并让ode23()
解决整个集合,但效率低下。 只需解决代码中已经完成的a
, b
, c
,并从ode23()
获得的da/dt
中的z(t)
进行ode23()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.