У меня проблема с частью моего кода. В частности, когда я запускаю приведенный ниже код, я получаю предупреждения «RuntimeWarning: переполнение, обнаруженное в double_scalars»
«RuntimeWarning: недопустимое значение, обнаруженное в multiply».
В результате получается массив A, который заполнен значениями NaN.
import numpy as np
N = 100 #number of waveguides
S = 1000
k_a = 1
k_b = 2
gamma = 1
z_max =10
h= z_max/S #Iteration step
A = np.zeros((1,N),dtype=complex)
A[0][50] = 2.5
g = np.zeros((1,N),dtype = complex)
field = np.zeros((1000,100),dtype = complex)
for i in range(0,S):
ak = A
g[0][0] = 1j*k_a*A[0][1] + 1j*k_b*A[0][0]+1j*A[0][0]*gamma*(np.abs(A[0][0]))**2
g[0][-1] = 1j*k_a*A[0][-2] + 1j*k_b*A[0][-1]+1j*A[0][-1]*gamma*(np.abs(A[0][-1]))**2
for tr in range(1,N-2):
g[0][tr] = 1j*k_a*(A[0][tr+1]+A[0][tr-1])+1j*k_b*A[0][tr]+1j*gamma*A[0][tr]*
(np.abs(A[0][tr]))**2
k1 = h*g
A = ak + (0.5)*k1
Как я могу решить эту проблему? Заранее спасибо