Hi Bill,

On Thu, Nov 13, 2014 at 10:16 AM, Bill Page <bill.p...@newsynthesis.org> wrote:
> It has always seemed very inconvenient to me that "computer algebra
> programs such as Mathematica" choose to define derivative as
> complex-derivative.  I believe a reasonable alternative is what is
> known as a Wirtinger derivative.  Wirtinger derivatives exist for all
> continuous complex-valued functions including non-holonomic functions
> and permit the construction of a differential calculus for functions
> of complex variables that is analogous to the ordinary differential
> calculus for functions of real variables
>
> http://en.wikipedia.org/wiki/Wirtinger_derivatives
>
> Wirtinger derivatives come in conjugate pairs but we have
>
>   f(x).diff(conjugate(x)) = conjugate(conjugate(f(x).diff(x))
>
> so we really only need one derivative given an appropriate conjugate
> function.  The Cauchy-Riemann equations reduce to
>
>   f(x).diff(conjugate(x)) = 0
>
> I also like that abs is related to the sgn function
>
>  abs(x).diff(x)  = x/abs(x)
>
> This is consistent with
>
>   abs(x)=sqrt(x*conjugate(x))
>
> The Wirtinger derivative of abs(x) is 1/2 x/abs(x).  Its total
> Wirtinger derivative is x/abs(x).
>
> I have implemented conjugate and Wirtinger derivatives in FriCAS
>
>   http://axiom-wiki.newsynthesis.org/SandBoxWirtinger
>
> Unfortunately I have not yet been able to convince the FriCAS
> developers of the appropriateness of this approach.  I would be happy
> to find someone with whom to discuss this further, pro and con.  The
> discussion on the FriCAS email list consisted mostly of the related
> proper treatment of conjugate without making explicit assumptions
> about variables.

Thanks for your email! I haven't talked to you in a long time.
Literally just today I learned about Wirtinger derivatives. The
wikipedia page is *really* confusing to me. It took me a while to
realize, that Wirtinger derivatives is simply the derivative with
respect to z or conjugate(z). I.e.

z = x + i*y
conjugate(z) = x - i*y

>From this it follows:

x = 1/2*(z + conjugate(z))
y = i/2*(-z+conjugate(z))

Then I take any function and write it in terms of z and conjugate(z),
some examples:

|z| = sqrt(z*conjugate(z))
Re z = x = 1/2 * (z + conjugate(z))
z^2 = (x+i*y)^2

And then I simply differentiate with respect to z or conjugate(z).
This is called the Wirtinger derivative. So:

d|z|/dz = d sqrt(z*conjugate(z)) / dz = 1/2*conjugate(z) / |z|

As you said, the function is analytic if it doesn't functionally
depend on conjugate(z), as can be shown easily. So |z| or Re z are not
analytic, while z^2 is. If the function is analytic, then df/d
conjugate(z) = 0, and df/dz is the complex derivative. Right?

So for analytic functions, Wirtinger derivative gives the same answer
as Mathematica. For non-analytic functions, Mathematica leaves it
unevaluated, but Wirtinger derivative gives you something.

How do you calculate the total Wirtinger derivative? How is that defined?

Because I would like to get

d|x| / d x = x / |x|

for real x. And I don't see currently how is this formula connected to
Wirtinger derivatives. Finally, the derivative operator in a CAS could
return Wirtinger derivatives, I think it's a great idea, if somehow we
can recover the usual formula for abs(x) with real "x".

What are the cons of this approach?

Ondrej

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to