При расчете элементов матрицы различные результаты получаются, когда они определены как float и numpy.complex64 соответственно. Поскольку некоторые записи являются большими числами (10 ^ 15), разница кажется большой.
import numpy as np
import sympy as sy
npc=int(2)
k_pnc=[[E1*A1*kl_1*sy.cot(kl_1*l1),-E1*A1*kl_1*sy.csc(kl_1*l1),0],[-E1*A1*kl_1*sy.csc(kl_1*l1),(E1*A1*kl_1*sy.cot(kl_1*l1)+E2*A2*kl_2*sy.cot(kl_2*l2)),-E2*A2*kl_2*sy.csc(kl_2*l2)],[0,-E2*A2*kl_2*sy.csc(kl_2*l2),E2*A2*kl_2*sy.cot(kl_2*l2)]]
KG=np.zeros((2*npc+2,2*npc+2),dtype=np.complex64)
for i in range(0,2*npc,2):
KG[i:i + 3, i:i + 3] = k_pnc + KG[i:i + 3, i:i + 3]
KG[2*npc:2*npc+2,2*npc:2*npc+2]=KG[2*npc:2*npc+2,2*npc:2*npc+2]+E1*A1*kl_1*np.array([[sy.cot(kl_1*l1),-sy.csc(kl_1*l1)],[-sy.csc(kl_1*l1),sy.cot(kl_1*l1)]])
KG[-1,-1]=KG[-1,-1]+ sy.I*E1*A1*kl_1
KG
, Es
, As
kl_s
являются параметрами.
Матрице нужен элемент в конце, который является комплексным числом. Когда я начал получать неестественные результаты, я удалил комплексное число, добавленное к последнему элементу KG[-1,-1]
и сравненное с dtype=float
, что дало мне другие результаты.
При проверке матрица KG
имеет разные значенияв каждой операции, даже если расчеты одинаковы.
Почему выбор другого типа данных дает разные результаты?