考虑以下与常微分方程组的解决方案相对应的代码片段
da / dt = t * a /(a ^ 2 + b ^ 2 + 1)
db / dt =(b-a)^ 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。如何包含附加微分方程, dz / dt = 5 * da / dt,z(0)= 2?我不确定如何在函数句柄中包含它,因为它是右侧一个状态变量的导数,而不是其中一个状态变量本身 - 正如其他方程式一样。
感谢。
答案 0 :(得分:0)
由于$ awk '
BEGIN {
PROCINFO["sorted_in"]="@ind_num_asc" # I hope numeric order works with text
}
{
a[$1][$5][$4][$3]=$0
}
END {
for(i in a) # brand
for(j in a[i]) # price
for(k in a[i][j]) # mileage
for(l in a[i][j][k]) # year
print a[i][j][k][l]
}' file
Honda Civic 1990 100239 5000
Honda Accord 2008 80324 12839
Subaru Legacy 2003 72198 4300
Subaru WRX 2017 700 25000
Toyota Camry 1999 120000 2000
Toyota Sienna 2005 75600 17832
,a(t)
和b(t)
及其衍生品不依赖于c(t)
或z(t)
,问题的性质仍然存在只有3个未知数的ODE。
因此,虽然您可以将其编码为4-unknowns ODE并让dz/dt
解决整个集合,但它效率低下。只需解析代码已经执行的ode23()
,a
,b
,并整合来自c
z(t)
的{{1}}。