Итак, у меня есть матрица 3x3 G (здесь она не показана, она не имеет отношения к моей проблеме), которую я создал, используя две переменные u (вектор, x - y) и скаляр k. x_j = (x_1 (j), x_2 (j), x_3 (j)) и y_j = (y_1 (j), y_2 (j), y_3 (j)). alpha_j - это матрица 3x3 Матрица A является блочной диагональной матрицей размером 3nx3n. У меня проблемы с матрицей W Как мне кодировать матрицу размером 3nx3n, где (i, j) -й блок - это матрица 3x3, заданная alpha_i * G_ [ij] * alpha_j ?? Я потерян.
Кажется, у моей матрицы alpha_j тоже есть проблемы. Цикл продолжает выдавать ошибку: «Только массивы длины 1 могут быть преобразованы в скаляры Python». Пожалуйста, помогите: /
def W(x, y, k, alpha, A):
u = x - y
n = x.shape[0]
W = np.zeros((3*n, 3*n))
for i in range(0, n-1):
for j in range(0, n-1):
#u = -np.array([[x[i,0] - x[j,0]], [x[i,1] - x[j,1]], [0]]) ??
W[i][j] = (alpha_j(alpha, A) * G(u, k) * alpha_j(alpha, A))
W[i][i] = np.zeros((n, n))
return W
def alpha_j(a, A):
alph = np.array([[0,0,0],[0,0,0],[0,0,0]],complex)
rho = np.random.rand(3,1)
for i in range(0, 2):
for j in range(0, 2):
alph[i][j] = (rho[i] * a * A[i][j])
return alph
#-------------------------------------------------------------------
x1 = np.array([[1], [2], [0]])
y1 = np.array([[4], [5], [0]])
# SYSTEM PARAMETERS
# incoming Wave angle
theta = 0 # can range from [0, 2pi)
# susceptibility
chi = 10 + 1j
# wavelength
lam = 0.5 # microns (values between .4-.7)
# frequency
k = (2 * np.pi)/lam # 1/microns
# volume
V_0 = (0.05)**3 # microns^3
# incoming wave vector
K = k * np.array([[0], [np.sin(theta)], [np.cos(theta)]])
# polarization vector
vecinc = np.array([[1], [0], [0]]) # (can choose any vector perpendicular to K)
# for the fixed alpha case
alpha = (V_0 * 3 * chi)/(chi + 3)
# 3 x 3 matrix
A = np.matlib.identity(3) # could be any symmetric matrix,
#-------------------------------------------------------------------
# TEST FUNCTIONS
test = G((x1-y1), k)
print(test)
w = W(x1, y1, k, alpha, A)
print(w)
Иногда мои циклы W выдают ошибку «невозможно установить элемент массива с последовательностью». Но мне нужно установить каждый элемент массива в этой произвольной матрице W на матрицу 3x3, созданную умножением альфы на G ...