# Symbolic Differential Equation Substitution Anonymous

Hi, I have a symbolic partial differential equation like $\nabla^2 P(t,r,\theta,\phi) = 0$. Now I want to substitute the following anzast $P(t,r,\theta,\phi) = e^{-i\omega t} f(r) Y^{m}_{l}(\theta,\phi)$ where the last terms is spherical bessel function. When I wrote,

%display latex
M = Manifold(4, 'M', structure='Lorentzian')
X.<t,r,th,phi> = M.chart(r"t r:(0,+oo) th:(0,pi):\theta phi:(0,2*pi):\phi ")

g = M.metric()
g[0,0] = 1-2/r
g[1,1] = -1/(1-2/r)
g[2,2] = -r^2
g[3,3] = -(r*sin(th))^2
g.display()

w = var('w')
T = e^(-i*w*t)

f = M.scalar_field(function('f')(r), name='f')

l = var('l')
m = var('m')
Y = spherical_harmonic(l,m,th,phi)

P = T*f*Y

eq1 = (dalembertian(P).expr()) == 0
eq1.simplify()


I should get an expression independent of $\theta,\phi$ since the angular part of the equation cancel itself because by definition spherical harmonics satisfies it's own differential equation (see Wolfram-Spherical Harmonics for example). Now when I check manually using

Q = (1/(sin(th))*diff(sin(th)*diff(Y,th),th)+1/((sin(th))^2)*diff(diff(Y,phi),phi)+l*(l+1)*Y)

bool(Q==0)


I got FALSE. To force Sage to use this relation, I tried things like,

eq1.substitute_expression(Q==0).simplify_full()


but they did not work either. The problem roots from the following line,

differentiate(spherical_harmonic(l,m,th,phi),th)


gives expression in terms of higher-order harmonics and Sage is unable to simplify expressions using recursion relations of the spherical harmonics. I also looked at the following integrals

integrate(integrate(spherical_harmonic(l,m,th,phi)*conjugate(spherical_harmonic(l,m,th,phi))*sin(th),th,0,pi),phi,0,2*pi).simplify_full()


but again Sage is unable to evaluate the types of integral unless we plug specific $l,m$. My question is there any way to define spherical harmonics without using a built-in spherical_harmonic() function (like power series) so that Sage would be able to simplify "its differential equation" involving spherical harmonics to automatically zero.

edit retag close merge delete

Sort by » oldest newest most voted

Unfortunately, the built-in function spherical_harmonic() has many issues, as discussed in this post (see also ticket #25034).

As suggested in the above post, a workaround is to use the function spin_weighted_spherical_harmonic() of the SageMath package kerrgeodesic_gw with a zero weight, so that you get the standard spherical harmonics. A limitation is that this works only for specific values of $(l, m)$, i.e. you cannot keep $l$ and $m$ as symbolic variables. See here for the documentation and examples of use of spin_weighted_spherical_harmonic() . Installing kerrgeodesic_gw in SageMath is easy: open a terminal and run

sage -pip install kerrgeodesic_gw


NB: on CoCalc, you have to add the option --user:

sage -pip install --user kerrgeodesic_gw

more