1
$\begingroup$

I wish I could make Mathematica compute the $dd^c=2i\partial\bar\partial$ of a function depending on several complex variables. The question involves complex or Wirtinger derivatives (https://mathematica.stackexchange.com/a/143739/48524) and exterior product as defined by the DifferentialForms package with some modifications.

Following the above mentioned answer, my attempt in 2 complex variables is as follows

    ComplexD[expr_, z__] := 
 With[{v = 
    Union@Cases[{z}, 
      s_Symbol | 
        Conjugate[s_Symbol] | {s_Symbol | Conjugate[s_Symbol], _} :> 
       s], old = 
    "ExcludedFunctions" /. ("DifferentiationOptions" /. 
       SystemOptions["DifferentiationOptions"])}, 
  Internal`WithLocalSettings[
   SetSystemOptions[
    "DifferentiationOptions" -> 
     "ExcludedFunctions" -> Join[old, {Abs, Conjugate}]];
   Unprotect[Conjugate, Abs];
   Conjugate /: D[w_, Conjugate[w_], NonConstants -> v] := 0;
   Conjugate /: D[Conjugate[f_], w_, NonConstants -> v] := 
    Conjugate[D[f, Conjugate[w], NonConstants -> v]];
   Abs /: D[Abs[f_], w_, NonConstants -> v] := 
    1/(2 Abs[f]) D[Conjugate[f] f, w, NonConstants -> v], 
   D[expr, z, NonConstants -> v], 
   SetSystemOptions[
    "DifferentiationOptions" -> "ExcludedFunctions" -> old];
   Conjugate /: D[w_, Conjugate[w_], NonConstants -> v] =.;
   Conjugate /: D[Conjugate[f_], w_, NonConstants -> v] =.;
   Abs /: D[Abs[f_], w_, NonConstants -> v] =.;
   Protect[Conjugate, Abs];]]



Basis[ 4, {z1, bz1, z2, bz2}];
De[expr_, z1__, z2__] :=

  ComplexD[expr, z1]*d[z1] + ComplexD[expr, Conjugate[z1]]*d[bz1] + 
   ComplexD[expr, z2]*d[z2] + ComplexD[expr, Conjugate[z2]]*d[bz2];

Dc[expr_, z1__, z2__] :=
  I*(
       ComplexD[expr, Conjugate[z1]]*d[bz1] - 
     ComplexD[expr, z1]*d[z1] +
     ComplexD[expr, Conjugate[z2]]*d[bz2] - ComplexD[expr, z2]*d[z2]
    );

DeDc[expr_, z1__, z2__] :=
  2 I*(
       ComplexD[ComplexD[expr, Conjugate[z1]], z1]*
      d[z1]\[Wedge]d[bz1] + 
     ComplexD[ComplexD[expr, Conjugate[z2]], z1]*
      d[z1]\[Wedge]d[bz2] +
     ComplexD[ComplexD[expr, Conjugate[z1]], z2]*d[z2]\[Wedge]d[bz1] +
      ComplexD[ComplexD[expr, Conjugate[z2]], z2]*d[z2]\[Wedge]d[bz2]
    );

On the concrete example

    DeDc[(z1*Conjugate[z1] + z2*Conjugate[z2])^(1/2), z1, 
   z2]\[Wedge]DeDc[(z1*Conjugate[z1] + z2*Conjugate[z2])^(1/2), z1, 
   z2] // Simplify

the code seems to work, but it doesn't work symbolically for any function of 2 complex variables.

I thank in advance anyone who can help me.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.