Ошибка значения Np: установка элемента массива с последовательностью

#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?