Re: Writing packages

Ralf Hemmecke <[email protected]>
Newsgroups gmane.comp.mathematics.axiom.general
Message-ID <[email protected]>
On 05/13/2006 10:35 PM, Fabio S. wrote:
>>>  BTW, I also have another question on this topic: if I compute the 
>>>  characteristic polynomial of a matrix and then I evaluate the 
>>> polynomial  at the matrix, I would expect to have the zero matrix as 
>>> result. This does  not happens: try
>>>
>>>  m:=matrix([[1,2],[3,4]])
>>>  p:=characteristicPolynomial(m)
>>>  p(m)
>>>
>>>  Why?
>>
>> Because Axiom is not smart enough to figure out all the types for you.
>>
>> Does this make you happier?
>>
>> M := SquareMatrix(2,Integer)
>> m:M:=matrix([[1,2],[3,4]])
>> P:=SUP(M)
>> p: P := characteristicPolynomial(m)::P
>> x := first variables p
>> eval(p, x, m)

> I must say that this doesn't make me happier at all. I didn't expect 
> that evaluating a polynomial at a matrix was such a terrible task for 
> the type resolver in axiom: the result of characteristicPolynomial(m) is 
> a polynomial with integer coefficient in one variable. I can't see the 
> difficulty to convert it to UP SquareMatrix(2,Integer) (of course, just 
> from a mathematical point of view).

Well, as I said SUP(Integer) should have been enough. But now, what you 
actually want is NOT a polynomial. You want a *function*

charpol: SquareMatrix(2, Integer) -> SquareMatrix(2, Integer)

and that is something different. I am sure you know the difference.

The big trouble now is to convert the polynomial you get into a 
polynomial function with the above type. I guess the interpreter would 
have been able to find such a conversion if there were an implementation 
of an evaluation of a polynomial at a *square* matrix (arbitrary 
matrices would, of course, not work). However, my browsing through 
hyperdoc was unsuccessful. So I guess the non-existence of such an 
implementation makes the interpreter telling you about the problem.

> Moreover, given the Hamilton-Cayley, it doesn't seem to me a very 
> bizzarre idea to try to evaluate the char pol of a matrix at the matrix 
> itself...

No, of course, not. But as far as I can tell, that is not directly 
implemented.

> I would expect that this is the first example for every linear algebra 
> student, so I would expect that the implementation of the function 
> should take care of this possibility.

I somehow have the impression that is one of the reasons why Axiom 
failed commercially. Simple things must be expressed in a complicated 
manner. I agree that Axiom is not (yet) perfect. Just help and provide a 
implementation for such a function and make all the people who come 
after you happier.

Thank you

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