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

•  DeLiKaTeS Tetris (Тетрис)  4 628

•  TDictionary Custom Sort  6 632

•  Fast Watermark Sources  6 410

•  3D Designer  9 352

•  Sik Screen Capture  6 742

•  Patch Maker  7 126

•  Айболит (remote control)  7 134

•  ListBox Drag & Drop  5 993

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

•  Графические эффекты  7 326

•  Рисование по маске  6 613

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

•  Canvas Drawing  5 862

•  Рисование Луны  5 585

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

•  Рисование стержней  3 660

•  Paint on Shape  2 893

•  Генератор кроссвордов  3 791

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

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

•  Пазл Numbrix  2 537

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

•  Игра HIP  2 217

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

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

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

•  Генератор лабиринта  2 668

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

•  HEX View  2 653

•  Физический маятник  2 285

 
скрыть

  Форум  

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-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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