Недавно добавленные исходники

•  Animation Loaders  663

•  DeLiKaTeS Tetris (Тетрис)  5 673

•  TDictionary Custom Sort  7 637

•  Fast Watermark Sources  7 327

•  3D Designer  10 529

•  Sik Screen Capture  7 848

•  Patch Maker  8 072

•  Айболит (remote control)  8 128

•  ListBox Drag & Drop  6 929

•  Доска для игры Реверси  100 107

•  Графические эффекты  8 193

•  Рисование по маске  7 595

•  Перетаскивание изображений  6 196

•  Canvas Drawing  6 558

•  Рисование Луны  6 488

•  Поворот изображения  5 666

•  Рисование стержней  4 588

•  Paint on Shape  3 288

•  Генератор кроссвордов  4 277

•  Головоломка Paletto  3 414

•  Теорема Монжа об окружностях  4 234

•  Пазл Numbrix  2 747

•  Заборы и коммивояжеры  3 651

•  Игра HIP  2 458

•  Игра Go (Го)  2 439

•  Симулятор лифта  2 846

•  Программа укладки плитки  2 289

•  Генератор лабиринта  3 008

•  Проверка числового ввода  2 511

•  HEX View  2 917

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Модуль реализации матричных вычислений для массивов больших размеров



Автор: 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)




Похожие по теме исходники

Модуль активации программ

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

 

Кувшины для воды

Доска для игры Реверси




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте