MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Математика\Partial Differential Equations Toolbox

Список функций Partial Differential Equations Toolbox: Полезные функции

  В оглавление \ К следующему разделу \ К предыдущему разделу

SPRAN
Решение сформированной разреженной задачи
на собственные значения

Синтаксис.

[xv,lmb,iresult] = sptarn(A,B,lb,ub)

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd)

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd,tolconv)

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd,tolconv,jmax)

[xv,lmb,iresult] = sptarn(A,B,lb,ub,spd,tolconv,jmax,maxmul)

Описание.

Вычисляет собственные значения матричного уравнения (A-lmb*B)*xv=0 в интервале lb < lmb <= ub.

Входные параметры.

  • A, B - разреженные матрицы;
  • lb, ub - нижняя и верхняя границы интервала поиска собственных значений на действительной оси комплексной плоскости;
  • spd - логическая величина, равная 1, если “a priori” известно, что матричная задача на собственные значения симметричная и положительно определённая, и равная 0 в противном случае; по умолчанию spd=0;
  • tolconv - требуемая относительная точность вычисления собственных значений; по умолчанию tolconv=100*eps (сто машинных эпсилонов);
  • jmax - максимальное число базисных векторов (а значит итераций) при вычислении собственных значений; в рабочей области потребуется jmax*N восьмибайтовых ячеек памяти (N - размерность разреженных матриц); малые значения этого параметра целесообразно задавать при работе на маломощных компьютерах; если компьютер достаточно мощный, то целесообразно задавать значение этого параметра по умолчанию
    (jmax=100); обычно алгоритм заканчивается раньше при достижении достаточной сходимости собственных значений;
  • maxmul - число выполнений алгоритма Арнольди; этот параметр должен иметь значение, не меньшее, чем максимальная кратность вычисляемых собственных значений; чем меньше задано значение jmax, тем больше необходимо вызывать алгоритм Арнольди; по умолчанию maxmul=N (столько раз нужно выполнять алгоритм Арнольди при вычислении собственных значений и собственных векторов единичной матрицы).

Выходные параметры.

  • xv - собственные векторы, соответствующие минимальному значению нормы матричного выражения
    A*xv-B*xv*diag(lmb);
  • lmb - собственные значения в заданном интервале;
  • abs(iresult) - число найденных собственных значений;
    - iresult=>0 - успешное завершение, все собственные значения из заданного интервала найдены;
    - iresult<0 - неуспешное завершение, не все собственные значения из заданного интервала найдены (видимо, из-за того, что задан слишком большой интервал); имеет смысл снова вызвать функцию sptarn с меньшим интервалом.

Описание алгоритма.

Используется алгоритм Арнольди со спектральным преобразованием. Начальное приближение выбирается в начале или конце заданного интервала или в случайной точке заданного интервала, когда обе его границы конечны. Число шагов поиска зависит от того, сколько собственных значений находится в интервале; алгоритм останавливается, когда число шагов достигает min(jmax,N).
После остановки можно снова начать поиск собственных векторов в ортогональном дополнении к тем, что уже найдены. Когда больше не находится собственных значений в заданном интервале, алгоритм останавливается. При малых значениях jmax может понадобиться несколько перезапусков sptarn для сходимости некоторого собственного значения. Для больших значений jmax, которые являются предпочтительными, необходимо MUL+1 выполнений алгоритма Арнольди, где MUL - максимальная кратность собственных значений в интервале.
При решении симметричных задач целесообразно (но вовсе не обязательно) задавать spd=1, т.к. алгоритмы факторизации симметричных положительно определённых матриц работают быстрее и точнее.

Неблагоприятные случаи.

1. Медленная сходимость. В этом случае целесообразно:
   1. уменьшить интервал lb, ub;
   2. увеличить jmax;
   3. увеличить maxmul.
2. В случае неудачной факторизации нужно попытаться снова вызвать sptarn с конечными значениями параметров lb, ub. В случае повторной неудачи нужно проверить сингулярность факторизуемой матрицы коэффициентов.
3. Если это происходит всегда, может иметься слишком много собственных значений в заданном интервале. Попытка задания maxmul=2 позволяет увидеть некоторые из вычисляемых собственных значений. В этом случае на выходе почти всегда получается iresult<0, т.е. не все собственные значения из заданного интервала найдены.
4. В случае переполнения памяти целесообразно уменьшить jmax.

Алгоритм предназначен для вычисления собственных значений, расположенных близко к действительной оси. Если нужно найти собственные значения, расположенные близко к мнимой оси, есть смысл попробовать задать A=i*A .

Если при spd=1 задано значение lb, большее, чем минимальное искомое собственное значение, то вычисления идут медленнее, чем при оптимальном значении lb.

Литература.

1. Golub, Gene H., and Charles F. Van Loan, Matrix Computations, 2nd edition, Johns Hopkins University Press, Baltimore, MD, 1989.
2. Saad, Yousef, "Variations on Arnoldi's Method for Computing Eigenelements of Large Unsymmetric Matrices," Linear Algebra and its Applications, Vol 34,
1980, pp. 269-295.

См. также pdeeig.

   В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика