我正在用python解决一个微分方程系统,以找到 Z
.
sol = solve_ivp(conv, tspan, Z0,method='BDF')
aa=sol.t
bb=sol.y
然后我发现 X
作为
X=v1.dot(bb) where `v1`is a transformation matrix.
我需要找到第二行的值。X
在每一个集成步骤中,都要执行程序,因为
X[:,0]=[0,0,0,0]
def conv(t,Z):
if (second element of 4*1 X )> .7
Zdot=A*Z+B*U
sol = solve_ivp(conv, tspan, Z0,method='BDF')
aa=sol.t
bb=sol.y
X=v1.dot(bb)
我希望每一步都能检查if条件,然后再进行 Zdot=A*Z+B*U
我只知道每一步积分时X的行数,所以不能使用for循环,我该怎么做?
你可以用以下方法检查 np.all
以检查所有元素。
def conv(t,Z):
if np.all(X[1, :]> .7):
Zdot=A*Z+B*U