LAPACK++ Help

pavlova

Все мануалы и юзерс гайды, которые я видел (и читал) на netlib-е и других сайтах довольно скудны. Есть ли что-нибудь вроде class reference (полного)? Может кто подсказать?

Ivan8209

Чем не устроила родная документация?
Раз выдвигаешь слишком выскокие требования, пора читать исходники?
Может быть, стоит подписаться на рассылку и спросить там.
Или спросить в USENET.
---
...Я работаю антинаучным аферистом...

pavlova

Родная документация меня не устроила тем, что вопрос о диагонализации почти не разобран, указаны варианты использования функции LaEigSolve и не более. Меня интересует, например, вариант, когда создается еще и матрица собственных векторов. Там, на что ты сылаешься, вообще не указано какие собственные вектора создаются. Ясно, что они должны быть ортогональными, но нормальными ли... Этого там нет. Те собственные вектора, которые у меня получаются с использованием функции LaEigSolve вообще не всегда ортогональны . Возможно это глюк в коде, но кроме исходников я также качал и бинарные готовые библиотеки, с которыми получается та же хня. Поэтому мне хотелось бы разобраться, как по мнению авторов нужно решать проблему диагонализации.
На счет спросить USENET конечно вариант, но неужели здесь нет людей, которые сишным лапаком диагонализуют ?!

pavlova

Да, забыл добавить: мои матрицы вещественные и симметричные (короче LaSymmMatDoule). Для матрицы собственных векторов использую LaGenMatDouble, которая согласно исходникам для LaEigSolve и нужна.

Ivan8209

"Они [вектора] должны быть <...> нормальными" к чему?
Там не прилагается процедур ортогонализации?
Вроде, должны быть, задача-то ходовая.
Я ещё посмотрю.
Вот тут мне подсказывают, что ЛАПАКом пользовался тов. .
Попробуй ему написать.
Но не знаю, насколько часто он посещает форум.
---
...Я работаю антинаучным аферистом...

pavlova

Когда только начинал учиться подключать LAPACK++, я вечерами сидел с калькулятором и проверял вектора на нормальность и ортогональность (матрицы были 3*3). Почти всегда было и то и другое, но только почти, иногда попадались вектора с нормой 30 или параллельные другим. Матрицы я брал всегда вещественные и симметричные и с разными собственными значениями. Кстати, вчера я залез в тестирующие LAPACK++ программы и заставил их проверить матрицы порядков от 1 до 10 (до этого были только 1, 10 и 30). Результат печальный: с 2 по 6 включительно задача по диагонализации валилась. Валилась как раз из-за собственных векторов. Еще поговорил с одним профессором и он мне сказал, что да, LAPACK плох с собственными векторами.
Короче меня все это довольно быстро подз...о и я решил попробовать ARPACK++. Но как всегда было одно "но": ARPACK++, на сколько я сейчас понимаю, может считать только n-1 собственное значение, поэтому приходилось изъя...ся и делать матрицы с дополнительными нулевыми строкой и столбцом. Вектора же получались отличные. Так что с проблемой я справился, но меня донимает то самое "но" - с ним прога как-то некрасиво смотрится .
Использовать встроенные процедуры ортогонализации в LAPACK в принципе маза, надо попробовать. Просто я хотел, чтобы за меня все делали .
Вообще я недавно понял, что LAPACK++ жутко экспериментальный, по крайней мере та версия, которую я сейчас использую (но она вроде последняя: 1.1a). Там многие сишные процедуры, в частности процедуру отогонализации, придется писать самому.
С тов. ом я свяжусь. Спасибо за подсказку.

Ivan8209



These routines are intended for "small" systems where simple
algorithms are acceptable. Anyone interested finding
eigenvalues and eigenvectors of large matrices will want to use
the sophisticated routines found in LAPACK. The Fortran version
of LAPACK is recommended as the standard package for linear algebra.


Извлечено из описания GNU SL.
Может, действительно, взять фортрановский ЛАПАК?
---
...Я работаю антинаучным аферистом...

pavlova

Приказ начальства - С++, так что просто, видимо, придется из си нужные фортрановские бинарники LAPACKа вызывать. Что ж, буду соответствующие функции в LAPACK++ дописывать...

Ivan8209

Пожалуй, вызывать фортрановские бинарники будет самым разумным решением.
---
...Я работаю антинаучным аферистом...

Ivan8209

Если ещё волнует, то вот.


From: <yatsen.cas.McMaster.CA>
Subject: Re: LAPACK vs. GSL matrix algebra
To: Linas Vepstas <austin.ibm.com>
cc: gsl-sources.redhat.com
Date: Mon, 27 Sep 2004 12:35:36 -0400 (EDT)
you can easily access the fortran routines from C.
i always write C routines that access the fortran
functions from LAPACK that i need. as long as you
keep in mind that fortran stores matrices column-wise
and C does it row-wise. but most fortran routines
allow you to set the 'transpose' option so you can
easily pass in your C matrix.
that way you don't have to write your own matrix
routines. the fortran lapack is pretty good and it
has been extensively tested over the years.
if you need example files, let me know.
k




From: Linas Vepstas <austin.ibm.com>
Subject: Re: LAPACK vs. GSL matrix algebra
To: Gerard Jungman <lanl.gov>
Cc: gsl-sources.redhat.com
Date: Mon, 27 Sep 2004 15:02:59 -0500
On Mon, Sep 27, 2004 at 12:06:03PM -0600, Gerard Jungman was heard to remark:
> On Mon, 2004-09-27 at 10:35, yatsen.cas.McMaster.CA wrote:
> > you can easily access the fortran routines from C.
Indeed. The hardest part was reading the lapack doco's
and creating the C prototype for the needed routine.
The other hard part was figuring out the libraries to link to:
.o:
cc -o $@ $< -llapack -lf77blas -latlas -lg2c -lm
.c.o:
cc -g -O2 -c $<
> GSL should provide an interface to these routines,
> the way it does for BLAS. We thought about it years
Yes, it should. The C prorotype for fortran routines
is kind-of ugly.
Did you auto-gen the cblas code and/or headers, or
are these hand-written?
--linas


---
...Я работаю антинаучным аферистом...

pavlova

Спасибо за ссылку. Узнал хоть, что есть какой-то еще GSL. Уже скачал, буду тестить.

Ivan8209

Иногда полезно смотреть в FAQ "Study."
---
...Я работаю антинаучным аферистом...

pavlova

OK !
Может туда добавить еще такие сылки:
ARPACK
ARPACK++
National Institute of Standards and Technology
?
Оставить комментарий
Имя или ник:
Комментарий: