On Tue, 25 Nov 2014 13:30:33 -0500
Bill Page <bill.p...@newsynthesis.org> wrote:

> On 25 November 2014 at 01:11, Ondřej Čertík <ondrej.cer...@gmail.com> wrote:
> > On Mon, Nov 24, 2014 at 10:23 PM, Bill Page <bill.p...@newsynthesis.org> 
> > wrote:
...
> >> But I don't want to be forced to make a choice of branch until
> >> I actually need to evaluate an expression numerically.
> >
> > I understand that's what you want. I am just trying to understand how
> > exactly this works.
> 
> OK.

Without a choice of branch for sqrt, I cannot answer this question:
* Is there complex number x such that x*conjugate(x) equals sqrt(2)?
This seems a non-numerical question to me. It seems to me that sqrt
without a choice of branch is ill-defined, but perhaps it is
sufficiently well-defined if you restrict to a certain kind of
questions? If so, what questions can I ask? I think I know too
little about the subject of this thread and of FriCAS.

> >> ...
> >> I think what you are trying to say is
> >>
> >>  (A) log(exp(z)) = { z + 2*pi*i*n | for all n in Integer}
> >
> > Exactly, that's what I meant.
> > ...
> >>
> >> Although it may seem simple in this case, in general implementing
> >> sets with comprehension like this requires logic and takes us
> >> outside of algebra as such into the realm of theorem proving.
> >
> > Sure. But that's what you want, correct?
> >
> 
> No, not at all.  I want this to be "algebraic", not some theorem of
> predicate calculus.  That is what I meant by taking
> 
>   x + conjugate(x)
> 
> as the definition of a real valued variable.

Do you mean that z is considered real-valued when there is x such that x
+ conjugate(x) is z? I got lost in this part of the thread.

> > ...
> >>
> >>>
> >>> This is precisely the part that I don't understand with the approach
> >>> (A). log(a*b), log(a) and log(b) are all multivalued, so you would
> >>> naively think, that log(a*b)-log(a)-log(b) = 0 + 2*pi*i*n, for all
> >>> "n". But I think this is not the case, I think the "n" in log(a*b) is
> >>> coupled to the implicit "n" in log(a) and log(b) in such a way, that
> >>> the result is exactly 0. Can you clarify exactly how this works?
> >>
> >> Try it this way:
> >>
> >>   a*b = exp(?1)
> >>   a = exp(?2)
> >>   b = exp(?3)
> >>
> >> I think 'normalize' is saying that there is a solution that makes
> >>
> >>   ?1 - ?2 - ?3  = 0.
> >
> > Ok, but why wouldn't normalize return 2*pi*i instead? Or 4*pi*i?
> 
> These are equivalent in the sense of having the same number of
> algebraically independent transcendental kernels, i.e. none.

Am I understanding correctly that normalize picks some arbitrary
representant of an equivalence class of answers? That seems scary to
me, but perhaps it is sufficiently well-defined for some questions?

...
> > This discussion is about how a CAS should handle (complex)
> > differentiation. Since it started here, I would finish it here, so
> > that the whole thread is in one mailinglist for future reference.
> 
> OK.  It would be nice to know if other sage-devel subscribers actually
> remain interested...

Yes, I find this thread casually interesting. However, I know little of
the subject of or FriCAS, which is also the reason I did not write
before.

> Let's return to differentiation for a moment.  Using your definitions
> what would you say is the correct result for
> 
>   log(exp(z-conjugate(z))).diff(z)
> 
> My patched version of FriCAS based your definition in this thread
> currently returns 0. Do you get the same result?

I'm not interested enough to calculate this by hand, sorry.

> Since the derivative is 0 would we want to say therefore that
> 
>   log(exp(z-conjugate(z)))
> 
> is a constant? If not, isn't this an argument for needing another
> derivative? The result of this test currently causes a problem during
> manipulations of expressions of this form.  Check the two Wirtinger
> derivatives for this case. If we have both derivatives we can avoid
> this problem quite easily as my previous version of the patch showed.

The Wikipedia page suggests that df/d conjugate(z) is
conjugate(conjugate(f).diff(z)). If that is indeed the case, then it
seems that df/d conjugate(z) might be handled without implementing a
second diff-method.


Regards,

Erik Massop

-- 
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