在计算矩阵的条目时,分别定义为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
矩阵在每个操作中具有不同的值,即使计算结果相同。
为什么选择不同的数据类型会产生不同的结果?