Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/af_htm_p/afb1r_p.htm
Дата изменения: Thu Jun 23 11:48:51 2011 Дата индексирования: Mon Oct 1 22:56:12 2012 Кодировка: Windows-1251 |
Текст подпрограммы и версий afb1r_p.zip , afb1e_p.zip |
Тексты тестовых примеров tafb1r_p.zip , tafb1e_p.zip |
Треугольное разложение ленточной матрицы, заданной в компактной форме, с выбором ведущего элемента по столбцу.
Заданная в компактной форме ленточная матрица А приводится к ленточной верхней треугольной матрице U при помощи элементарного преобразования L так, что LU = А. Матрица L является ленточной нижней треугольной с единичными диагональными элементами.
Дж.Х.Уилкинсон, Алгебраическая проблема собственных значений, "Наука", М., 1970.
procedure AFB1R(var A :Array of Real; N :Integer; NLC :Integer; NUC :Integer; var R :Array of Real; var IERR :Integer);
Параметры
A - | вещественный двумерный массив размера N *(NLС + NUС + 1), в котором содержится заданная матрица, записанная в компактной форме; по окончании работы подпрограммы в массиве А запоминается также в компактной форме ленточная верхняя треугольная матрица U (в первых NUС + 1 столбцах); |
N - | порядок матрицы (тип: целый); |
NLC - | число ненулевых диагоналей, расположенных под главной диагональю (тип: целый); |
NUC - | число ненулевых диагоналей, расположенных над главной диагональю (тип:целый); |
R - | вещественный двумерный массив размера N * (NLС + 1), используемый как рабочий; по окончании работы подпрограммы в первых N*NLС компонентах массива R содержится нижняя треугольная ленточная матрица L; |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
IЕRR=65 - | если заданная матрица является алгоритмически сингулярной. |
Версии
AFB1E - | треугольное разложение ленточной матрицы, заданной в компактной форме с расширенной (Extended) точностью (выбор ведущего элемента по столбцу). |
Вызываемые подпрограммы
UTBF10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АFВ1R. |
UTBF11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы АFВ1E. |
Замечания по использованию
Для подпрограммы АFВ1E параметры А и R должны иметь тип Extended. |
Unit TAFB1R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, AFB1R_p; function TAFB1R: String; implementation function TAFB1R: String; var I,J,_i,IERR :Integer; R :Array [0..5] of Real; const A :Array [0..8] of Real = ( 0.0,2.0,1.0,1.0,5.0,17.0,2.0,1.0,0.0 ); label _8; begin Result := ''; { результат функции } for I:=1 to 3 do begin for J:=1 to 2 do begin _8: R[(I-1)+(J-1)*3] := 0.0; end; end; Result := Result + Format('%s', [' РАЗЛОЖЕНИЕ НЕОСОБЕННОЙ ЛЕНТОЧНОЙ MATPИЦЫ' + #$0D#$0A]) + #$0D#$0A; Result := Result + Format('%s',[' ЗАДАННАЯ MATPИЦA:']); Result := Result + #$0D#$0A; for _i:=0 to 8 do begin Result := Result + Format('%20.16f ',[A[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; AFB1R(A,3,1,1,R,IERR); Result := Result + Format('%s',[' PEЗYЛЬTAT:' + #$0D#$0A]); Result := Result + #$0D#$0A; for _i:=0 to 8 do begin Result := Result + Format('%20.16f ',[A[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + #$0D#$0A; for _i:=0 to 5 do begin Result := Result + Format('%20.16f ',[R[_i]]); if ( ((_i+1) mod 4)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; Result := Result + Format('%s',[' IERR=']); Result := Result + Format('%5d ',[IERR]) + #$0D#$0A; UtRes('TAFB1R',Result); { вывод результатов в файл TAFB1R.res } exit; end; end. Результаты: A = (1., 25., 16., 3., 5., 0., 0., 0., 0.), R = (0., -1., 0.4, 1., 2., 3.), IERR = 0