Re: Curious behavior of Taylor series

Jay Belanger <[email protected]>
Newsgroups gmane.comp.mathematics.axiom.general
Message-ID <[email protected]>
Ralf Hemmecke <[email protected]> writes:

> On 08/21/2006 03:38 AM, Jay Belanger wrote:
>> Martin Rubey <[email protected]> writes:
>>
>>> "Igor Khavkine" <[email protected]> writes:
>>>
>>>> Can someone explain the following behavior of Taylor series in Axiom?
>>>>
>>>> (113) -> y := taylor x
>>>>    (113)  x
>>>>                          Type: UnivariateTaylorSeries(Expression Integer,x,0)
>>>> (114) -> x*y
>>>>    (114)  x x
>>>>                          Type: UnivariateTaylorSeries(Expression Integer,x,0)
>>>> (115) -> coefficient(%,1)
>>>>    (115)  x
>>>>                                                      Type: Expression Integer
>>> The reason is that Axiom cannot really know whether you meant x in (114) to be
>>> an element of the coefficient Ring EXPR INT, or to be a univariate Taylor
>>> series. In case of doubt, it usually chooses the wrong possibility :-)
>>
>> When multiplying two elements, shouldn't Axiom try to coerce them to
>> be in the same structure?  (I realize it doesn't, particularly here,
>> but wouldn't that be reasonable behavior?)
>
> But Axiom coerced the two x to the same domain!!! 

Not in any meaningful way.  What I think should have happened is
something like


(1) -> y := taylor x

   (1)  x
                         Type: UnivariateTaylorSeries(Expression Integer,x,0)
(2) -> (x::UnivariateTaylorSeries(Expression Integer,x,0))*y

         2
   (2)  x
                         Type: UnivariateTaylorSeries(Expression Integer,x,0)

(without the cast having to be explicit).
The only real experience I have with domains is in MuPAD, and this is
roughly how MuPAD handles it.

> The first x is a coefficient, and the second x is the variable from
> the Taylor series. So you cannot complain.

Oh, I can always complain.  The only question is whether or not my
complaints are justified.

> The only problem is that it is terribly confusing. Unfortunately, I
> cannot even blame that the user did anything wrong since Axiom came up
> with this strange type UnivariateTaylorSeries(Expression Integer,x,0).
>
> But I could blame the user for trying to do "x * y". Here you instruct
> the compiler to guess since there is no function
>
> *: (Symbol, UTS(Expression Integer,x,0))->UTS(Expression Integer,x,0)
>
> so the interpreter has to do something with the x. It coerces it to
> Expression(Integer). That is perfectly legal. 

But not perfectly reasonable, I think.  And it isn't coercing x to be
in the same domain as the other x, which is what I think should happen.

Jay
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.