2
$\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$

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.