我想解决以下颂歌
K T + C T'= Q
给出示例数据是我的代码
import numpy as np
import scipy as sp
# Solve the following ODE
# K*T + C*T' = Q
# T' = C^-1 ( Q - K * T )
T_start=sp.array([ 151.26, 132.18, 131.64, 146.55, 147.87, 137.87])
K = sp.array([[-0.01761969, 0.02704873, 0.00572222, 0. , 0. ,
0. ],
[ 0.02704873, -0.03546941, 0. , 0. , 0.00513177,
0. ],
[ 0.00572222, 0. , 0.03001858, -0.04752982, 0. ,
0.02030505],
[ 0. , 0. , -0.04752982, 0.0444405 , 0.00308932,
0. ],
[ 0. , 0.00513177, 0. , 0.00308932, 0.02629577,
-0.01793915],
[ 0. , 0. , 0.02030505, 0. , -0.01793915,
0.00084506]])
Q = sp.array([ 1.66342077, 0.16187956, 0.65115035, 0.71274755,2.54614269, 0.13680399])
C_invers = sp.array([[ 3.44827586, 0. , 0. , 0. , 0. ,
-0. ],
[ 0. , 1.5625 , 0. , 0. , 0. ,
-0. ],
[ 0. , 0. , 2.63157895, 0. , 0. ,
-0. ],
[ 0. , 0. , 0. , 2.17391304, 0. ,
-0. ],
[ 0. , 0. , 0. , 0. , 1.63934426,
-0. ],
[ 0. , 0. , 0. , 0. , 0. ,
2.38095238]])
time = np.linspace(0, 20, 10000)
#T_real = sp.array([[ 151.26, 132.18, 131.64, 146.55, 147.87, 137.87]])
def deriv(T, t):
return sp.dot( C_invers, Q - np.dot(K, T) )
T_sol = sp.integrate.odeint(deriv, T_start, time)
我知道结果是
sp.array([ 151.26, 132.18, 131.64, 146.55, 147.87, 137.87])
当且仅当我将其用作T_start条件时,解决方案才是“稳定的”
但如果我将我的开始条件改为例如
T_start=sp.array([ 0, 0, 0, 0, 0, 0])
我的错在哪里?负值对我的系统毫无意义:/你能帮助我吗?谢谢;)
答案 0 :(得分:4)
数组
SELECT
p.CODE,
p.REFERENCE,
p.TAXCAT,
p.DISPLAY,
p.NAME,
p.PRICEBUY,
p.PRICESELL,
s.UNITS AS UNIT,
c.NAME AS CATEGORY
FROM PRODUCTS p
INNER JOIN STOCKCURRENT s
ON s.PRODUCT = p.ID
INNER JOIN CATEGORIES c
ON p.CATEGORY = c.ID;
是你的系统的平衡(大约)。您可以通过将方程组的右侧设置为0来找到这一点,这将导致array([ 151.26, 132.18, 131.64, 146.55, 147.87, 137.87])
:
Teq = inv(K)*Q
这就是为什么当您使用这些值作为起点时,您的解决方案似乎是稳定的。解决方案非常接近均衡,所以它的变化不大。
然而,从长期来看,解决方案最终将偏离Teq,因为该平衡点不稳定。您的系统In [9]: Teq = np.linalg.solve(K, Q)
In [10]: Teq
Out[10]:
array([ 151.25960795, 132.17972469, 131.6402527 , 146.55025359,
147.87025015, 137.87029892])
在T' = inv(C)*(Q - K*T)
中是线性的,因此您可以通过计算T
的系数矩阵的特征值来确定稳定性。也就是说,写T
。 T = inv(C)*Q - inv(C)*K*T
的系数矩阵为T
。以下是如何找到该矩阵的特征值:
-inv(C)*K
系数矩阵A具有三个正特征值。这些对应于将在时间上呈指数增长的模式。也就是说,均衡是不稳定的,所以你看到的增长是可以预期的。