Текст подпрограммы и версий
asv1r_p.zip , asv1e_p.zip
Тексты тестовых примеров
tasv1r_p.zip , tasv1e_p.zip

Подпрограмма:  ASV1R (модуль ASV1R_p)

Назначение

Решение систем линейных алгебраических уравнений с матрицей Вандермонда.

Математическое описание

ASV1R вычисляет решение системы  N линейных алгебраических уравнений с матрицей Вандермонда:

      |  1            1       ...      1      |     |  y1   |        |  b1   |
      |  x1          x2      ...    xN      |     |  y2   |        |  b2  |
      |  x12       x22      ...   xN2      |     |  y3   |   =   |  b3  |
           . . . . . . . . . . . . . . . . . .           . . .             . . .
      |  x1N-1    x2N-1   ...  xNN-1   |     |  yN  |        |  bN  | 

Решение системы данного вида с транспонированной матрицей осуществляется подпрограммой IP01R .

Н.С.Бахвалов. Численные методы. Изд - во "Наука", 1973.

Использование

procedure ASV1R(var X :Array of Real; var Y :Array of Real;
                var B :Array of Real; N :Integer;
                var RAB :Array of Real; var IERR :Integer);

Параметры

X - вещественный вектор длины  N, компоненты которого равны коэффициентам  x1, x2, ..., xN заданной матрицы системы;
Y - вещественный вектор длины  N, содержащий компоненты вычисленного вектора решения системы;
B - вещественный вектор длины  N, в котором задаются компоненты вектора правой части системы;
N - порядок системы (тип: целый);
RAB - вещественный вектор длины  N, используемый в подпрограмме в качестве рабочего;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом
IERR=65 - когда матрица системы вырождена.

Версии

ASV1E - решение систем линейных алгебраических уравнений с матрицей Вандермонда в режиме расширенной (Extended) точности. При этом параметры X, Y, B, RAB должны иметь тип Extended.

Вызываемые подпрограммы

UTAS10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы ASV1R.
UTAS11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы ASV1D.

Замечания по использованию: нет

Пример использования

Unit TASV1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, ASV1R_p;

function TASV1R: String;

implementation

function TASV1R: String;
var
_i,IERR :Integer;
Y :Array [0..2] of Real;
RАВ :Array [0..2] of Real;
const
X :Array [0..2] of Real = ( 0.0,-1.0,1.0 );
B :Array [0..2] of Real = ( 0.0,1.0,2.0 );
begin
Result := '';  { результат функции }
ASV1R(X,Y,B,3,RAB,IERR);
Result := Result + #$0D#$0A;
for _i:=0 to 2 do
 begin
  Result := Result + Format('%20.16f ',[Y[_i]]);
  if ( ((_i+1) mod 3)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
UtRes('TASV1R',Result);  { вывод результатов в файл TASV1R.res }
exit;
end;

end.


Результаты:    Y  =  ( - 2.0, 0.5, 1.5 ) ,    IERR = 0