Delphi World - Модуль реализации матричных вычислений для массивов больших размеров
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Модуль реализации матричных вычислений для массивов больших размеров

Автор: Andrey
WEB-сайт: http://delphikingdom.com

В этом модуле «осели» все операции с матрицами и векторами, которые я использовал для работы. Но есть алгоритмы, которые многие, наверняка, увидят впервые: Divide – алгоритм прямого деления, MSqrt – квадратный корень, MAbs – абсолютная величина. Поскольку модуль содержит все, от элементарных операций до матричных, разобраться будет несложно:

Например, решение системы ЛУ (консольное приложение)

var
  N : Integer;
  A : Matrix;
  b, x : Vector;
begin
  N := . . .;
  A.Init( N, N );
  b.Init( N );
  x.Init( N ); // или x.Init( B ); или x.InitRow( A );
  . . .
  { формирование A и b }
  . . .
  x.Divide( b, A );
  x.Print;
  . . .
end.

Некоторые алгоритмы требуют пояснения, например:

Matrix.E( i, j : LongWord ) или Vector.E( i : Integer ) : RealPtr 

(RealPtr = ^Real) функция для вычисления адреса элемента матрицы/вектора. Перешла из ДОС когда в модуле использовался алгоритм управления виртуальной памятью для больших размерностей.

Matrix.Multiple( X, Y : Vector ) 

Результатом, которого является произведение вектора X на транспонированный вектор Y - матрица ранга 1.

Matrix.Invert( A : Matrix ) 

– если A[N,M], и N <> M то результат – матрица размера [M,N] – псевдообратная = A+.

Matrix.Addition( A : Matrix; B : Real ) 

– добавление числа в главную диагональ.

Matrix.Diag( r : Real ) 

– присваивание значения главной диагонали.

Когда есть исходный текст - разобраться можно всегда.

Этот модуль используется почти во всех реализованных мной численных алгоритмах и методах. Те части, которые писал не я – приводятся без изменений(по возможности) стиля и комментариев.

Скачать hmatrixw.zip (14K)
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования