Почему выбор другого типа данных дает разные результаты? - PullRequest
0 голосов
/ 22 октября 2019

При расчете элементов матрицы различные результаты получаются, когда они определены как 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 имеет разные значенияв каждой операции, даже если расчеты одинаковы.

Почему выбор другого типа данных дает разные результаты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...