Я определяю функцию для решения моих дифференциальных уравнений в execute_ivp Сципи.
def conv(t,Z):
global sw,von,X
if X[1]>=von or X[0]>0:
zdot=LA.inv(v1).dot(A1).dot(v1).dot(Z).reshape(4,1)+LA.inv(v1).dot(B1).dot(U)
von=0.7
X=v1.dot(Z)
else:
zdot= LA.inv(v0).dot(A0).dot(v0).dot(Z).reshape(4,1)+LA.inv(v0).dot(B0).dot(U)
X=v0.dot(Z)
return np.squeeze(np.asarray(zdot))
и решение моего уравнения, используя
sw=0
e1,v1=LA.eig(A1)
von=0
Z= np.array([0, 0, 0, 0])
X=v1.dot(Z)
U = np.array([[vin], [vdon]])
Z0= np.array([0, 0, 0, 0])
V=v1
sol = solve_ivp(conv, tspan,Z0,method='Radau')
Первоначально как sw
= 0
и X
= [0,0,0,0]
, я ожидаю, что условие if
будет выполнено и if block
будет реализовано. Но программа выполняет блок else. Я не могу понять проблему.