#python #numpy #ode #stochastic
#python #numpy #ode #стохастический
Вопрос:
Я пытался решить стохастическое дифференциальное уравнение. После запуска моего кода в 10-й раз я получил эту ошибку, которую я не могу устранить. Некоторая помощь была бы приятной:
ux = np.zeros(N 1)
uy = np.zeros(N 1)
t = np.zeros(N 1)
def f(u1, u2, t, alpha):
return -alpha * u1* (1-1/(np.sqrt(u1**2 u2**2)))
def ForwardEuler_iso(f, nin, nfin, dt, ux, uy, t):
for k in range(nin 1, nfin):
t[k 1]=t[k] dt
ux[k 1]=ux[k] dt*f(ux[k], uy[k], t, alpha) k_delta*np.sqrt(dt)*np.random.randn()
uy[k 1]=uy[k] dt*f(uy[k], ux[k], t, alpha) k_delta*np.sqrt(dt)*np.random.randn()
return ux, uy, t
ux, uy, t = ForwardEuler_iso(f_pol, N_pol 1, N, dt, ux, uy, t)
Ошибка выдается при ux, uy, t….
Комментарии:
1. Можете ли вы предоставить полный рабочий код для воспроизведения проблемы? Отсутствует множество переменных.
2. Также может помочь полная обратная трассировка. Я предполагаю, что одно из
var[i]=...
выражений пытается присвоить массив (умножить значения) одному элементу массива. Вам необходимо определить, какое назначение является проблемой и почему3. Намеренно ли, чтобы стохастические приращения были независимыми? Является ли определение
f
на самом деле определениемf_pol
? В своем вызовеf(ux[k], uy[k], t, alpha)
вы передаете весь временной массив. Вероятно , вы хотите только пройти мимоt[k]
. Но посколькуt
это не используется в этомf
, это не может быть ошибкой. Или вы переключились на функцию, в которой использовался аргумент time?