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:
>> ...
>> I am not very interested in real numbers.  I am interested in the
>> algebra.  Would you say that
>>
>>   sqrt(x^2).diff(x) = sqrt(x^2)/x
>>
>> is OK?
>
> I think so, using the following calculation:
>
> sqrt(x^2).diff(x) = exp(1/2*log(x^2)).diff(x) = exp(1/2*log(x^2)) *
> 1/2 * 1/x^2 * 2*x = sqrt(x^2)/x
>
> The function exp(1/2*log(x^2)) that we differentiate is analytic, so I
> don't see any issue here.
>

I did not ask whether it was technically correct or not.  What I meant
was is this expression what you would expect given the rest of the
machinery of differentiation in any given computer algebra system?

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

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

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

>
> In other words, how exactly are the operations on the multivalued
> sets log(x) defined?

FriCAS does not perform operations on multivalued sets to determine the above.

>>
>> I meant that I did not understand what you are proposing for how to
>> represent the value of 'log(z)' symbolically, i.e. when the value of z
>> is unknown.
>
> Ah ok. I would represent it by the approach (B). But then, as we
> talked about, it's not true that conjugate(log(z)) = log(conjugate(z)).
> Since you want this property to hold, then the approach (B) does
> not work for you, obviously. So I am trying to understand how
> exactly are all the operations defined in your approach. You said
> your approach is not (A) exactly. So I am just trying to understand.
>

OK.

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

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?

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.

Bill.

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