Я хочу сделать то же самое, что и этот пост , но у меня проблемы с переменными.
У меня есть три 1D-массива, которые я хочу внедрить в решатель разностных уравнений, чтобы мои три константы могли меняться со временем в соответствии с массивами
t = np.linspace(0, 50000, 50000)
ur = np.array([0, 5, 6, 12, 1.254, ..., 0.145]) # shape (50000, )
utheta = np.array([1.45, 5.9125, 1.367, ..., 3.1458])
uphi = np.array([0.124, 0.258, 0.369, ..., 0.147])
interp = interpolate.interp1d(t,(ur,utheta,uphi))
def c(t,zc):
x1=zc[0]
x2=zc[1]
x3=zc[2]
x4=zc[3]
x5=zc[4]
x6=zc[5]
ur, utheta, uphi = interp(t)
dx1dt=x2
dx2dt= x1 * (...) - 1) / (x1 ** 4)) + ur
dx3dt=x4
dx4dt= -((2*x2*x4) (...) * cot(x5) + (utheta / (x1 * sin(x5)))
dx5dt=x6
dx6dt= -((2*x2*x6) / x1) + (...) + (uphi / x1)
return [dx1dt, dx2dt, dx3dt, dx4dt, dx5dt, dx6dt]
steps = 1
method = 'Radau'
atol = 1e-3
zc0=solve_ivp(c, (0, 50000), z0, method=method, t_eval=t, atol=atol)
Выход:
message: 'Required step size is less than spacing between numbers.'
t: array([0. , 1.00002]), this array should have 50000 elements
y: array([[ 6.78500000e+06, 4.72847723e+06],
[ 2.24011561e-13, -4.11296318e+06],
[ 7.45760534e-01, 7.45307438e-01],
[-7.01068174e-04, -2.20751593e-04],
[ 1.57077832e+00, 1.57195175e+00],
[ 8.85785588e-04, 2.01498441e-03]]), and this matrix should have 50000 columns although it does have the correct number of lines (6)