Я новичок в Python, но использую Numpy для создания матриц, которые будут частью системы линейных уравнений, Ax = B
.Сейчас я хочу определить A-матрицу, но у меня возникают проблемы с «объединением» имеющихся у меня матриц 2x2 в большую матрицу, соответствующую вектору состояний.
Помимо первой и последней строк, A-матрица является симметричной матрицей с матрицами 2x2 по диагонали (остальное - нули).Моя первая попытка состояла в том, чтобы создать нулевую матрицу и затем вставить вычисленные 2x2-матрицы (они вычисляются отдельно), но, поскольку результат сложный, он превратился в реальные значения.Это может быть хакерский способ добиться того, чего я хочу, поэтому я был бы признателен, если бы было лучшее решение.Заранее спасибо!
def impedance_matrix_A(self):
impedance_matrix = np.zeros((12,12))
#Add A-matrices to impedance-matrix
impedance_matrix[0:2,0:2] = self.A_back_load
impedance_matrix[2:4,2:4] = self.A_o_backing
impedance_matrix[4:6,4:6] = self.A_i_backing
impedance_matrix[6:8,6:8] = self.A_composite
impedance_matrix[8:10,8:10] = self.A_i_front
impedance_matrix[10:12,10:12] = self.A_o_front
impedance_matrix[10:12,10:12] = self.A_front_load
#Removes layers where its zero
impedance_matrix[~np.all(impedance_matrix == 0, axis=1)]
print(impedance_matrix)
return impedance_matrix
Матрицы A _... представляют собой сложные матрицы 2x2, рассчитанные в другом модуле
Это предупреждение, которое я получаю:
ComplexWarning: Casting complex values to real discards the imaginary part
Однако я хочувернуть матрицу с комплексными значениями.