I have this couple of equations :

$ \partial_\mu \partial^\mu z^i + G^{i\bar{p}} (\partial_j G_{k\bar{p}} ) \partial_\mu z^j \partial^\mu z^k + G^{i\bar{j}} (\partial_{\bar{j}} G_{k\bar{l}} ) \partial_\mu z^k \partial^\mu z^{\bar{l}} =0 $


$ \partial_\mu \partial^\mu z^{\bar{i}} + G^{p\bar{i}} (\partial_{\bar{j}} G_{\bar{k} p} ) \partial_\mu z^{\bar{j}} \partial^\mu z^{\bar{k}} + G^{\bar{i}j} (\partial_j G_{k\bar{l}} ) \partial_\mu z^k \partial^\mu z^{\bar{l}} =0 $

They are the equations of motion of $z$ (scalar field) and its complex conjugate on complex coordinates. $\mu=0,1,2,3$ (Lorentz index) , and $i,j,...= 1,2, ...,$ to any arbitrary values

Can I solve these equations in Mathematica to get $z^i$ and the matrix $G_{ij}$, even numerically?


Note: Again these are E.O.M of $z$ field on complex coordinates so that $G_{ij}$ is the metric on these coordinates (complex space of a manifold).

Take the equations in the direction: $i,j,...=1$, any glimpse for a solution in two unknown variables?

$ \partial_\mu \partial^\mu z^1 + G^{11^*} (\partial_1 G_{11^*} ) \partial_\mu z^1 \partial^\mu z^1 + G^{11^*} (\partial_{1^*} G_{11^*} ) \partial_\mu z^1 \partial^\mu z^{1^*} =0$


$ \partial_\mu \partial^\mu z^{1^*} + G^{11^*} (\partial_{1^*} G_{1^* 1} ) \partial_\mu z^{1^*} \partial^\mu z^{1^*} + G^{1^*1} (\partial_1 G_{11^*} ) \partial_\mu z^1 \partial^\mu z^{1^*} =0 $

  • 2
    $\begingroup$ To the best of my knowledge, Mathematica cannot directly solve PDEs on $\mathbb{C}^n$; you'd have to recast the equations as PDEs on $\mathbb{R}^{2n}$ instead. $\endgroup$ Sep 19, 2019 at 13:29
  • $\begingroup$ @S.S. If you define G, then we can find a solution to a certain class of problems. In principle, this is not very different from the Yang-Mills theory. $\endgroup$ Sep 19, 2019 at 15:38
  • $\begingroup$ Comments are not for extended discussion; this conversation has been moved to chat. $\endgroup$
    – Kuba
    Sep 19, 2019 at 20:38

1 Answer 1


To the best of my knowledge, Mathematica can't analyse this type of equation "out of the box." Its built-in numerical PDE solvers are limited to solving boundary-value and initial-value problems on real manifolds, not complex manifolds (though the functions you're solving for can, I believe, be complex.)

It also doesn't automatically know how to expand quantities like $\partial_\mu \partial^\mu$; you'd have to explicitly provide it with all 16 terms1 of the summation. It does know about the Laplacian operator—check out Laplacian in the documentation–so that's a small mercy if you're working on a manifold with a lot of symmetry like Minkowski or de Sitter spacetimes.

I would recommend looking into the xAct suite, particularly the xCoba and xTras packages. In particular, this suite allows you to use tensor indices on various bundles, including (I believe) complex bundles on real manifolds, which is what you appear to have here. In principle, xCoba can reduce these equations to a set of real-valued functions on a real manifold if you provide it with an ansatz to work with; and you can then (in principle) try feed these equations into NDSolve. I will warn you that the learning curve for xAct is a bit steep; but if you're going to be doing these calculations frequently, it's worth learning.

1 Or, if this is a string theory problem (which it has the air of), 100 terms.

  • $\begingroup$ I think I can write something like $\partial_\mu f$, is it D[f[t,x,y,z],{{t,x,y,z}}] ? , but also till here can Mathematica vary between $\partial_\mu f$ and $\partial^\mu f$ ? , I mean how to write then $ \partial ^\mu f$ ? $\endgroup$
    – S.S.
    Sep 19, 2019 at 18:05
  • $\begingroup$ @S.S.: You'd have to write that as something like $g^{\mu \nu} \partial_\nu f$, which you could do in principle by defining $g^{\mu \nu}$ as a matrix and then using Dot to perform the contraction with $\partial_\nu f$. But going this route is dangerous, as it is extremely easy to get confused about which indices are covariant and which are contravariant; Mathematica does not have any built-in way of keeping track of this. The xAct package is much, much better in this regard, which is why I recommended it. $\endgroup$ Sep 19, 2019 at 19:57
  • $\begingroup$ Yes of course I will try it and the other packages which you mentioned in your answer, but I’m trying now to solve my equations roughly : if i have a term like $\partial_\mu f \partial^\mu f $ , without any package how can I write it? $\endgroup$
    – S.S.
    Sep 19, 2019 at 20:23
  • $\begingroup$ may be I wasn’t clear enough in my previous comment ; I mean if have $\partial_\nu f$ alone I have to multiply by $g^{\mu\nu}$, but if there is a complete term $\partial_\mu f \partial^\mu f$ we don’t have to multiply by the metric. But will it written in Mathematica just by: D[f[t,x,y,z], {{t,x,y,z}}] * D[f[t,x,y,z], {{t,x,y,z}}]. Can’t we take the Conjugate of D as $\partial^\mu$ ? $\endgroup$
    – S.S.
    Sep 19, 2019 at 20:40
  • $\begingroup$ @S.S. No. There's no functionality in basic Mathematica to raise & lower indices; you have to write out all the metrics explicitly, unless the metric is the flat Euclidean metric (in which case the difference between raised & lowered indices is immaterial.) And the quantity $(\partial \mu f)( \partial^\mu f)$ is shorthand for $g^{\mu \nu} (\partial \mu f) (\partial \nu f)$; the metric is inherently in there. $\endgroup$ Sep 19, 2019 at 20:49

Not the answer you're looking for? Browse other questions tagged or ask your own question.