sagemath의 삽관 이론
sage를 사용하여 다항식을 자르는 방법에 대한 문서를 보았지만 실제로 이것을 내 작업에 적용 할 수있는 방법에 대해 고민하고 있습니다 ...
나는 현재 섭동 메트릭 텐서에 대한 Ricci 텐서를 찾으려고 노력하고 있습니다. 적은 양의 자유 스칼라 (이 경우 2)를 추가하면 Sage가 현재 솔루션을 정확히 계산하려고하기 때문에 계산 시간이 많이 늘어납니다. 문제는 정확한 솔루션이 필요하지 않고 '첫 번째 주문'솔루션 만 필요하다는 것입니다. 이 계산을 손으로 할 때 필요하지 않은 항은 2 차 차수 이상이기 때문에 쉽게 버릴 수 있지만 sage를 사용하여 이것을 할 수 있기를 원합니다 ... 기본적으로 할 수 있는지 알고 싶습니다. 계산하는 동안 더 높은 차수의 항을 버리라고 sage에게 말하여 계산 시간을 줄이십시오.
추신 : 기호 고리를 사용하여 $\mathcal{O}$ 표기법과 이것은 함수에서 완벽하게 작동하지만 이것을 Lorentzian 메트릭과 병합하려고 할 때는 작동하지 않습니다.
예를 들어, 내 섭동이 $\psi$ 과 $\zeta$ 세이지가 전체적인 용어를 고려하지 않기를 바랍니다. $\zeta$$\ psi $ 또는 $ \ zeta ^ 2 $ 또는 $ \ psi ^ 2 $ 등
답변
작은 매개 변수를 도입하여이를 수행 할 수 있습니다. $\epsilon$및 set_calc_order. 다음은 교란 된 Schwartzchild 메트릭에 대한 Ricci 스칼라를 계산하는 예입니다.$\mathcal{O}(\epsilon^2)$.
먼저 세이지에서 매니 폴드를 설정합니다.
%display latex
M = Manifold(4, 'M', latex_name=r'\mathcal{M}', structure='Lorentzian')
chart.<t,r,th,ph> = M.chart(r"t r:(0,+oo) th:(0,pi):\theta ph:(0,2*pi):\phi")
m = var('m')
assume(m > 0)
기호 무한소 매개 변수를 도입하십시오.
eps = var('epsilon')
다음을 사용하여 메트릭 (또는 스칼라 필드 또는 기타 원하는 항목)을 정의합니다 eps.
g = M.metric()
g[0,0] = -(1-2*m/r) + eps
g[1,1] = 1/(1-2*m/r) + eps
g[2,2] = r^2
g[3,3] = (r*sin(th))^2
g.display()
$$\newcommand{\Bold}[1]{\mathbf{#1}}g = \left( \epsilon + \frac{2 \, m}{r} - 1 \right) \mathrm{d} t\otimes \mathrm{d} t + \left( \epsilon - \frac{1}{\frac{2 \, m}{r} - 1} \right) \mathrm{d} r\otimes \mathrm{d} r + r^{2} \mathrm{d} {\theta}\otimes \mathrm{d} {\theta} + r^{2} \sin\left({\theta}\right)^{2} \mathrm{d} {\phi}\otimes \mathrm{d} {\phi}$$
잘림이없는 전체 Ricci 스칼라는 다음과 같습니다.
ricci = g.ricci_scalar()
ricci.expr().factor()
$$\newcommand{\Bold}[1]{\mathbf{#1}}\frac{2 \, {\left(4 \, \epsilon^{3} m^{2} r^{2} - 4 \, \epsilon^{3} m r^{3} + \epsilon^{3} r^{4} + 16 \, \epsilon^{2} m^{3} r - 28 \, \epsilon^{2} m^{2} r^{2} + 12 \, \epsilon^{2} m r^{3} - \epsilon^{2} r^{4} + 16 \, \epsilon m^{4} - 48 \, \epsilon m^{3} r + 32 \, \epsilon m^{2} r^{2} - 4 \, \epsilon m r^{3} - \epsilon r^{4} - 12 \, m^{4} + 12 \, m^{3} r + 2 \, m^{2} r^{2} - 4 \, m r^{3} + r^{4}\right)} \epsilon}{{\left(2 \, \epsilon m - \epsilon r - r\right)}^{2} {\left(\epsilon r + 2 \, m - r\right)}^{2} r^{2}}$$
순서 설정 $\epsilon$와 함께 set_calc_order. 이제 계산은 다음으로 잘립니다.$\mathcal O(\epsilon^2)$ 자동으로 :
g.set_calc_order(eps, 2)
ricci = g.ricci_scalar()
ricci.expr().factor()
$$\newcommand{\Bold}[1]{\mathbf{#1}}-\frac{2 \, {\left(96 \, \epsilon m^{6} - 224 \, \epsilon m^{5} r + 192 \, \epsilon m^{4} r^{2} - 64 \, \epsilon m^{3} r^{3} + 6 \, \epsilon m r^{5} - \epsilon r^{6} + 24 \, m^{5} r - 36 \, m^{4} r^{2} + 8 \, m^{3} r^{3} + 10 \, m^{2} r^{4} - 6 \, m r^{5} + r^{6}\right)} \epsilon}{{\left(2 \, m - r\right)}^{3} r^{5}}$$