У меня слишком сложное векторное поле. Я должен выделить реальную часть сложного векторного поля. Как отделить действительную часть комплексного векторного поля, используя sympy в Python? (векторное поле, связанное с ягодным соединением и ягодной кривизной)
Я пытался объявить k_x, k_y, k_z действительными и взять сопряжение векторного поля и добавить вектор и его сопряжение, чтобы получить действительную часть вектора. Но я получил некоторые ошибки, когда объявил k_x, k_y, k_z реальными. Поэтому нужна помощь, чтобы отделить реальную часть от вектора. Сложное поле, которое я получил, - B в коде, и я должен отделить его реальную часть. (здесь это в системе отсчета k и k_x, k_y, k_z , как x, y, z в реальной плоскости и kx, ky, kz - единичные векторы в соответствующих направлениях)
import numpy as np
from sympy import *
from sympy.physics.vector import *
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
sigma_x = Matrix([[0,1],[1,0]]);
sigma_y = Matrix([[0,-1j],[1j,0]]);
sigma_z = Matrix([[1,0],[0,-1]]);
k=ReferenceFrame('k');
H=sigma_x*k[0]+sigma_y*k[1]+sigma_z*k[2];
H1=sigma_x*k[0]-sigma_y*k[1]+sigma_z*k[2];
t = H.eigenvects();
print(t);
psi_1=t[0][2];
psi_2=t[1][2];
psi_1=Matrix(psi_1);
psi_2=Matrix(psi_2);
t1 = H1.eigenvects();
psi_1h=t1[0][2];
psi_2h=t1[1][2];
psi_1h=Matrix(psi_1h).T;
psi_2h=Matrix(psi_2h).T;
grad_psi_1_0 = gradient(psi_1[0],k);
grad_psi_1_1 = gradient(psi_1[1],k);
A = (psi_1h[0]*grad_psi_1_0 + psi_1h[1]*grad_psi_1_1);
A=A*1j;
B=curl(A,k);
Результат B (комплексное векторное поле), полученный из кода:
(- 1,0 * k_y k_z I * (- k_x + k_y I) (k_x + k_y I) (k_x 2 + k_y 2 +
k_z 2) (- 1,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) ** 0,5) ** 3 +
3,0 * k_y I (- k_x + k_y I) (k_x + k_y I) (- 1,0 * k_z * (k_x 2)
+ k_y 2 + k_z 2) (- 0,5) - 1) * (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0.5) ** 4 + 1,0 * (- k_x
+ k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) - 1) / (k_z + ( k_x 2 + k_y 2 + k_z 2) 0,5) ** 3 + 1,0 * I * (k_x +
k_y I) (- 1,0 * k_y k_z (k_x - k_y I) (k_x 2 + k_y 2 +
k_z 2) (- 1,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 +
1,0 * k_y * (k_x - k_y I) (- 2,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) - 2 ) * (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 +)
k_z 2) 0,5) ** 3 + I * (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) -
1) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2) / (k_z + (k_x 2 + k_y 2)
+ k_z 2) 0,5) + 1,0 * I * (k_x + k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z *) 1110 * 2) (- 0,5) - 1) * (1,0 * k_y * (k_x)
- k_y I) (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y * 1119) * 2 + k_z 2) 0,5) ** 2 + I / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5)) / ( k_z +
(k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 + 1,0 * (k_x +
k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) - 1) / (k_z +
(k_x 2 + k_y 2 + k_z 2) 0,5) ** 3) * k.x + (1,0 * k_x k_z I * (- k_x +
k_y I) (k_x + k_y I) (k_x 2 + k_y 2 + k_z 2) (- 1,5) / (k_z + (к_х 2
+ k_y 2 + k_z 2) 0,5) ** 3 - 3,0 * k_x I (- k_x + k_y I) (k_x + k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) - 1) * (k_x 2 +
k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 4 +
1,0 * I * (- k_x + k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) - 1) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 3 - 1,0 * I * (k_x +
k_y I) (- 1,0 * k_x k_z (k_x - k_y I) (k_x 2 + k_y 2 +
k_z 2) (- 1,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 +
1,0 * k_x * (k_x - k_y I) (- 2,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) - 2 ) * (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 +)
k_z 2) 0,5) ** 3 - (-1,0 * k_z * (k_x 2 + k_y 2 + k_z 2) (- 0,5) -
1) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2) / (k_z + (k_x 2 + k_y 2)+ k_z 2) 0,5) - 1,0 * I * (k_x + k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 + k_z *) 1226 * 2) (- 0,5) - 1) * (1,0 * k_x * (k_x - k_y I) (k_x 2 + k_y 2 +
k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 - 1 / (k_z +
(k_x 2 + k_y 2 + k_z 2) 0.5)) / (k_z + (k_x 2 + k_y 2 +
k_z 2) 0,5) ** 2 - 1,0 * I * (k_x + k_y I) (- 1,0 * k_z * (k_x 2 + k_y 2 +)
k_z 2) (- 0,5) - 1) / (k_z
+ (k_x 2 + k_y 2 + k_z 2) 0,5) ** 3) * ky + (1,0 * k_x I (k_x + k_y I) (1,0 * k_y * (k_x - k_y I) (k_x 2 + k_y 2 + k_z 2) (- 0,5) / ( k_z
+ (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 + I / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5)) * (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 +)
k_y 2 + k_z 2) 0,5) ** 2 - 1,0 * k_y I (k_x + k_y I) (1,0 * k_x * (k_x) -
k_y I) (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y ) 2 +
k_z 2) 0,5) ** 2 - 1 / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5)) * (k_x 2
+ k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 -
1,0 * (1,0 * k_x * (k_x - k_y I) (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + ( k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 - 1 / (k_z + (k_x 2 + k_y 2 +)
k_z 2) 0,5)) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) -
1,0 * I * (1,0 * k_y * (k_x - k_y I) (k_x 2 + k_y 2 + k_z 2) (- 0,5) / (k_z + (k_x 2 + k_y 2 + k_z 2) 0,5) ** 2 + I / (k_z + (k_x 2 + k_y 2 +)
k_z 2) 0,5)) / (k_z + (k_x 2 + k_y 2 + k_z 2) ** 0,5)) * k.z
Мне нужно найти реальную часть этого вектора.