0
$\begingroup$

I have various $\mathbb{C}^{n}$ valued function $f[z,\overline{z}],g[z,\overline{z}]$ with $z \in \mathbb{C}$ and I wish to represent their Hermitian inner product and furthermore the derivative of this inner product symbolically.

The rules I wish to include would be the complex product rule; $\frac{\partial}{\partial z} \langle f,g \rangle = \langle \frac{\partial f}{\partial z} , g \rangle + \langle f, \frac{\partial g}{\partial \overline{z}} \rangle$ as well as the conjugate linear property of the bracket $\langle f , \alpha g \rangle = \overline{\alpha} \langle f, g\rangle$

However, I've been unsuccessful when trying to define such a product as the expression;

H[a_,b_] = a.Conjugate[b]

when differentiating, will result in Conjugate'[f[z,Conjugate[z]]] and Conjugate'[z] terms.

What would be the best way to represent these symbols, I've tried defining the differential directly

H[a_,b_]:=a.Conjugate[b]; Dz[A_,z_]:=H[D[A[[1]],z],A[[2]]]+H[A[[1]],D[A[[2]],Conjugate[z]]];

But this will result in the same problem as above, as breaks down once you apply it twice.

$\endgroup$
0

1 Answer 1

0
$\begingroup$

I'm not sure this will solve your problem entirely, but my suggestion would be to leave the Hermitian operator unevaluated usually and then define manipulation rules on it specifically.

For your cases we can try something like:

Clear@H;
H /: HoldPattern[D[H[a_, b_], o___]] := 
  H[D[a, o], b] + H[a, D[b, o]];
H[a_, c_*b_] := Conjugate@c*H[a, b];
HEvaluate[expr_] := (expr /. (H[a_, b_] :> a.Conjugate[b]));

Where H /: HoldPattern[D[H[a_, b_], o___]] means set an UpValue on H such that when it is being differentiated, apply the Hermitian differentiation definition. And we also define an evaluation wrapper (HEvaluate) so that we can do something like:

In[1213]:= 
D[H[y^2, x^2], {x, 2}]
HEvaluate@D[H[y^2, x^2], {x, 2}]

Out[1213]= H[0, x^2] + H[y^2, 2]

Out[1214]= 0.Conjugate[x]^2 + y^2.2

Hopefully this is at least somewhat helpful.

$\endgroup$
4
  • $\begingroup$ This works when you differentiate the dot product once, however if I feed the result back into the evaluation wrapper D[H[F, F], z] X = HEvaluate@D[H[F, F], z]; D[X, z] HEvaluate@D[X, z] gives $f\left(z,z^*\right).\left(f^{(2,0)}\left(z,z^*\right) \text{Conjugate}'\left(f^{(1,0)}\left(z,z^*\right)\right)\right)+f^{(1,0)}\left(z,z^*\right).\left(f^{(1,0)}\left(z,z^*\right) \text{Conjugate}'\left(f\left(z,z^*\right)\right)\right)+f^{(1,0)}\left(z,z^*\right).f^{(1,0)}\left(z,z^*\right)^*+f^{(2,0)}\left(z,z^*\right).f\left(z,z^*\right)^*$ (I don't know how to directly copy the output) $\endgroup$
    – Jack Moon
    Commented Jan 11, 2017 at 4:35
  • $\begingroup$ Sorry I'm not exactly sure what you are getting at here. Is your problem that taking the derivative after applying HEvaluate gives a wonky result? Because that's not too surprising. Try applying HEvaluate only at the very end. That is, do all your Hermitian stuff symbolically, passing the operator itself around, then later apply HEvaluate. $\endgroup$
    – b3m2a1
    Commented Jan 11, 2017 at 20:32
  • $\begingroup$ The problem is these Conjugate' terms in the previous expression. So the output for F = f[z, Conjugate[z]]; D[H[F, F], z] ; HEvaluate@D[H[F, F], z] /. {Conjugate'[z] -> 0} is as expected f[z,Conjugate[z]].Conjugate[(f^(1,0))[z,Conjugate[z]]]+(f^(1,0))[z,Conjugate[z]].Conjugate[f[z,Conjugate[z]]], however preforming the operation twice, say for example; D[D[H[F, F], z] , z]; HEvaluate@D[D[H[F, F], z] , z] /. {Conjugate'[z] -> 0} results in terms such as (H^(0,1))[(f^(1,0))[z,Conjugate[z]],f[z,Conjugate[z]]] $\endgroup$
    – Jack Moon
    Commented Jan 12, 2017 at 1:47
  • $\begingroup$ Whilst X = HEvaluate@D[H[F, F], z] /. {Conjugate'[z] -> 0} HEvaluate@D[X, z] /. {Conjugate'[z] -> 0} should have a second order derivative term of the form $ f \cdot \overline{\frac{\partial^2 f}{\partial z^2}}$, instead it has the term f[z,Conjugate[z]].((Conjugate')[(f^(1,0))[z,Conjugate[z]]] (f^(2,0))[z,Conjugate[z]]) It's like this (Conjugate')[(f^(1,0))[z,Conjugate[z]]] term should be the conjugate operator on the following term. $\endgroup$
    – Jack Moon
    Commented Jan 12, 2017 at 1:53

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