Valery Pipin wrote:
> Dear Ray,
>
> Raymond Toy wrote:
>
>> Daniel Lakeland wrote:
>>
>>> On Fri, Dec 22, 2006 at 01:24:37PM -0500, Raymond Toy wrote:
>>>
>>>> Raymond Toy wrote:
>>>>
>>>>> As mentioned before in another thread, maxima lacks numerical
>>>>> computation of eigenvalues and eigenvectors.
>>>>>
>>>> I have this basically working and roughly integrated with maxima. Is
>>>> any one interested in this?
>>>>
>>> I am sure if it were available people would find good uses for it.
>>>
>> It's just very big, that's all. I haven't and don't plan on creating
>> interfaces to all the functions. Eigenvalue/eigenvector and SVD seem
>> useful, so I've done those.
>>
>> Perhaps it can be a share or contrib package, but I'm not even sure it
>> should be checked into maxima at all.
>>
>>
> Could you please put it to some public place.
You can find a copy at http://common-lisp.net/~rtoy/lapack-maxima.tar.bz2.
It's not in the best shape but it should be usable. To install, cd to
the share directory and untar this file. You'll get an lapack directory
that contains everything. You'll have to add share/lapack to maxima's
file search path.
Once you've done that, you should be able to do load("lapack"); This
will compile and load up all of lapack (that I've converted so far).
This may take some time.
Once that's done, you have direct access to dgeev and dgesvd. dgeev
takes 1 arg and 2 optional args. The first arg is a maxima matrix. If
the second arg is true, the right eigenvectors are returned. If the
third arg is true, the left eigenvectors are returned. The output is a
list of 3 items: a list of the eigenvalues, the matrix of right
eigenvectors, and the matrix of left eigenvectors, if selected.
For dgesvd, there are 3 args. The first is the matrix. If the second
arg is true, then U matrix is returned. If the third arg is true, then
V^T is returned, where A = U * S * V^T. A list is returned consisting
of a list of the diagonal elements of S, the matrix U, and the matrix V^T.
There are probably bugs here, but it's a start.
Ray