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.