Изображение квадрата Дюрера

ООО АВТОМАТИКА плюс

Rambler's Top100

Рейтинг@Mail.ru

Справочная система Matrix32

Matrix32 Unit
Classes Types Routines Vars Const R-Strings
Главный модуль (ядро) вычислительной системы Matrix32.

Description

Краткое описание библиотеки

Возрастающая с каждым годом сложность вычислительных задач требует применения соответствующих инструментов для их решения. Одним из таких инструментов является вычислительная система Matrix32. Это невизуальная библиотека, предоставляющая программисту широкий набор классов для решения вычислительных задач. Программист, работающий с Matrix32, оперирует объектами следующих типов:

  • Числовой массив (массив данных)
  • Рабочая область
  • Массив ячеек
  • Запись
Такой набор средств является достаточным для реализации большинства вычислительных задач.

Matrix32 ориентирован на разработчиков математических библиотек. Программисту такой библиотеки при разработке математических функций можно не беспокоится о том, массив какого типа будет передан в функцию для обработки. Будь то массив элементов Byte, или же массив элементов Extended - для всех случаев достаточно программирование одной математической функции. Допустим, вы разработали функцию для решения системы линейный алгебраических уравнений и назвали ее SLAU.
  procedure SLAU(A, B, X: TMatrix);
где A - матрица коэффициентов, B - вектор свободных членов, X - массив, в который должен быть помещен результат. Не является принципиальным то, какой тип элементов в любом из массивов. Каким бы тип элементов в том или ином массиве ни был, ваша функция в любом случае решит систему уравнений и запишет результат в Х.

Если вы реализуете функцию SLAU без использования системы Matrix32, то в этом случае вы лишаете пользователя вашей функции гибкости, заставляя его передавать в функцию только массивы того формата, который эта функция поддерживает. Вы можете написать перегруженные варианты функции SLAU, однако гибкости это ей не придаст.

Классически функция SLAU реализуется следующим образом:

  • Объявляется тип 2-мерного динамического массива
    TDynExtendedMatrix = array of array of Extended;
  • Объявляется тип динамического массива-вектора
    TDynExtendedVector = array of Extended;
  • Функция объявляется так:
    procedure(const A: TDynExtendedMatrix;
        const B: TDynExtendedVector; var X: TDynExtendedVector);
Пользователю вашей функции такой подход будет весьма неудобен.

Данный подход обязывает пользователя использовать типы, объявленные в вашей библиотеке (в данном случае это TDynExtendedMatrix и TDynExtendedVector). Даже если пользователь не планирует использования типа Extended, ему придется с этим типом работать, иначе он не сможет воспользоваться возможностями, предоставляемыми ему вашей функцией. Пользователю было бы достаточно, если бы ваша функция обрабатывата массивы байтов, однако ему приходится мириться с неоправданными расходами памяти на хранение элементов в формате Extended.

Как было сказано, Matrix32 позволяет пользователю передавать в функцию SLAU массивы с любым типом элементов. Это делает вашу функцию максимально гибкой, и в то же время снимает проблему неоправданного расхода памяти (пользователь сам решает, в каком формате ему нужно хранить элементы того или иного массива).

Вот простой пример того, как пользователь может использовать функцию SLAU, основанную на библиотеке Matrix32:
  var
    A, B, X: TMatrix;
  begin
    // Создаем массив коэффициентов (тип элементов - Byte)
    A := TByteMatrix.Create();
    // Создаем массив свободных членов (тип элементов - Short)
    B := TShortMatrix.Create();
    // Создаем массив-результат (тип элементов - Integer)
    X := TIntegerMatrix.Create();

    try
      // Заполняем массив коэффициентов
      A.AsString := '2, 5, 7; 1, 0, 8; 3, 5, 1';
      // Заполняем массив свободных членов
      B.AsString := '1; 2; 3';
      // Вычисляем СЛАУ
      SLAU(A, B, X);
      // Выводим результат
      ShowMessage(X.AsString);
    finally
      A.FreeMatrix;
      B.FreeMatrix;
      X.FreeMatrix;
    end;
  end;

Надеюсь, что мне удалось заинтересовать читателя, и теперь система Matrix32 обретет нового пользователя.

Желаю успехов в освоении данного инструмента!

Classes
EMatrixAbstractError 
EMatrixAliasError 
EMatrixBadName 
EMatrixBadParams 
EMatrixBadRef 
EMatrixBCDError 
EMatrixClassError 
EMatrixDimensionsError 
EMatrixError 
EMatrixFileStreamError 
EMatrixFunctionError 
EMatrixMatlabError 
EMatrixMemoryError 
EMatrixParsingError 
EMatrixRefError 
EMatrixStreamError 
EMatrixWrongCoords 
EMatrixWrongElemType 
TByteMatrix Массив целых чисел типа Byte.
TCardinalMatrix Массив целых чисел типа Cardinal.
TCellMatrix Массив ячеек - массив ссылок на другие объекты TMatrix
TCharMatrix Массив символом типа Char.
TCommonMatrixClass Общий класс, способный выполнять универсальные операции, не учитывающие тип данных, используемых в массиве
TCompMatrix Массив дробных чисел типа Comp.
TCurrencyMatrix Массив дробных чисел типа Currency.
TDoubleComplexMatrix Массив комплексных чисел типа TDoubleComplex.
TDoubleMatrix Массив дробных чисел типа Double.
TDynamicArrayMatrixClass Класс, от которого наследуются все динамические массивы.
TExtendedComplexMatrix Массив комплексных чисел типа TExtendedComplex.
TExtendedMatrix Массив дробных чисел типа Extended.
TFloatComplexMatrixClass Класс массивов вещественных комплексных чисел
TFloatMatrixClass Класс массивов вещественных чисел, совместимых с Extended
TInt64Matrix Массив целых чисел типа Int64.
TInt64MatrixClass Класс массивов длиных целых чисел, совместимых с Int64.
TIntegerMatrix Массив целых чисел типа Integer.
TIntegerMatrixClass Класс массивов целых чисел, совместимых с Integer
TMatrix Базовый класс для всех объектов Matrix32.
TNumericMatrixClass Общий класс для всех числовых массивов.
TObjectMatrixClass Класс массивов элементами которых являются ссылки на объекты (любого типа)
TRecordMatrix Запись (объект, содержащий другие массивы произвольных типов, ссылки на которые хранятся в списке).
TShortIntMatrix Массив целых чисел типа Shortint.
TShortMatrix Массив целых чисел типа Short (Smallint).
TSingleComplexMatrix Массив комплексных чисел типа TSingleComplex.
TSingleMatrix Массив дробных чисел типа Single.
TWordMatrix Массив целых чисел типа Word.
TWorkspace Рабочая область.

Types
PBCDNumber 
PCardinalArray 
PCompArray 
PCurrencyArray 
PDoubleArray 
PDoubleComplex 
PDoubleComplexArray 
PExtendedArray 
PExtendedComplex 
PExtendedComplexArray 
PInt64Array 
PPointerArray 
PShortArray 
PShortIntArray 
PSingleArray 
PSingleComplex 
PSingleComplexArray 
PWordArray 
TBCDNumber 
TCardinalArray 
TCompArray 
TComplexFunction Тип функции, используемой функцией TMatrix.CalcFunction
TComplexOperation Тип вычислительной операции, используемой функцией TMatrix.CalcOperation
TCurrencyArray 
TDoubleArray 
TDoubleComplex 
TDoubleComplexArray 
TDynExtendedComplexArray 
TDynIntArray Динамический массив чисел Integer
TExtendedArray 
TExtendedComplex 
TExtendedComplexArray 
TFloatFunction Тип функции, используемой функцией TMatrix.CalcFunction
TFloatOperation Тип вычислительной операции, используемой функцией TMatrix.CalcOperation
TInt64Array 
TInt64Function Тип функции, используемой функцией TMatrix.CalcFunction
TInt64Operation Тип вычислительной операции, используемой функцией TMatrix.CalcOperation
TIntFunction Тип функции, используемой функцией TMatrix.CalcFunction
TIntOperation Тип вычислительной операции, используемой функцией TMatrix.CalcOperation
TMatrixClass Переменная этого типа может хранить ссылку на любой класс TMatrix
TMatrixErrorInfo Данная запись используется при работе с исключениями EMatrixError
TMatrixName Тип для объявления имени объекта TMatrix
TMatrixType Перечень типов, поддерживаемых различными объектами TMatrix
TMatrixTypes Множество типов, поддерживаемых различными объектами TMatrix
TMethodKind Перечень типов методов класса
TPointerArray 
TSetOfChars Множество всех символов Char
TShortArray 
TShortIntArray 
TSignature Тип для объявления псевдонима имени класса
TSingleArray 
TSingleComplex 
TSingleComplexArray 
TWordArray 

Routines
_BCDAlign 
AvailMemory Определяет объем доступной памяти.
BCDSub 
BCDSum 
BCDToString Конвертирует число формата TBCDNumber в строковое представление
CheckForMatrixTypes Проверяет объекты на принадлежность к типам MatrixTypes.
CmplxDoubleToSingle Конвертирует комплексное число формата TDoubleComplex в TSingleComplex
CmplxExtendedToDouble Конвертирует комплексное число формата TExtendedComplex в TDoubleComplex
CmplxExtendedToSingle Конвертирует комплексное число формата TExtendedComplex в TSingleComplex
CmplxSingleToDouble Конвертирует комплексное число формата TSingleComplex в TDoubleComplex
CmplxSingleToExtended Конвертирует комплексное число формата TSingleComplex в TExtendedComplex
ComplexFromString Конвертирует строку Value в комплексное число TExtendedComplex.
ComplexGetAbs 
ComplexGetAbsSqr 
ComplexGetAsPolar 
ComplexIsEqual Определяет, равны ли комплексные числа между собой
ComplexIsZero Определяет, является ли комплексное число нулевым
ComplexNaN Возвращает NaN в действительной и мнимой части
ConvertToDynIntArray Конвертирует открытый массив чисел Integer в динамический массив TDynIntArray
DefragBinaryFile Выполняет дефрагментацию двоичного файла AFileName.
DeleteRepeatingSpaces Удаляет повторяющиеся пробелы.
DeleteRepeatingSymbols Удаляет повторяющиеся символы.
DimValuesToString Преобразует значения размеров массива в текстовый вид.
DoubleComplex Формирует из вещественной и мнимой части комплексное число
ExtendedComplex Формирует из вещественной и мнимой части комплексное число
FindMatrixInFileStream Выполняет поиск объекта в потоке TFileStream, имеющем заголовочную зону.
FindMatrixInStream Отыскивает в потоке, начиная с текущей позиции, объект с заданным именем.
FloatComplex Формирует из вещественной и мнимой части комплексное число
FloatToString Переводит число в строку.
fncAbs Возвращает модуль числа Value (отбрасывает минус)
fncCmplxConj Инвертирует знак мнимой части комплексного числа
fncCmplxCos Вычисляет косинус комплексного числа Value
fncCmplxCot Вычисляет котангенс комплексного числа Value
fncCmplxCsc Вычисляет косеканс комплексного числа Value
fncCmplxExp Вычисляет экспоненту комплексного числа Value
fncCmplxImag Возвращает мнимую часть комплексного числа.
fncCmplxImagToReal Копирует мнимую часть числа Value в действительную часть результата Result.
fncCmplxInverse 
fncCmplxLn Вычисляет натуральный логарифм комплексного числа Value
fncCmplxLog10 Вычисляет десятичный логарифм комплексного числа Value
fncCmplxLog2 Вычисляет логарифм по основанию 2 комплексного числа Value
fncCmplxNeg Инвертирует знак действительной и мнимой части комплексного числа
fncCmplxReal Возвращает действительную часть комплексного числа Value
fncCmplxSec Вычисляет секанс комплексного числа Value
fncCmplxSin Вычисляет синус комплексного числа Value
fncCmplxSqr Возводит комплексное число Value в квадрат
fncCmplxSqrt Извлекает квадратный корень комплексного числа Value
fncCmplxTan Вычисляет тангенс комплексного числа Value
fncCos Вычисляет косинус значения Value
fncExp Вычисляет экспоненту значения Value
fncFrac Возвращает дробную часть значения Value
fncInt Выполняет округление значения Value
fncNone Функция - заглушка (возвращает переданное значение Value)
fncNot Выполняет инверсию значения Value.
fncRound Выполняет округление значения Value
fncSin Вычисляет синус значения Value
fncSqr Возводит значение Value в квадрат
fncSqrt Вычисляет квадратный корень значения Value
fncTrunc Выполняет округление значения Value в сторону нуля
GenerateHash Гененирует хэш текстовой строки для ускорения операции поиска.
GenMatrixName Генерирует уникальное имя для объекта TMatrix.
IsEqualArrays Определяет, все ли указанные массивы имеют одинаковый размер и одинаковое содержимое
IsEqualArraysSize Определяет, равны ли размеры массивов между собой.
IsSameMatrixClass Проверяет, относятся ли указанные объекты к одному классу.
IsSameMatrixTypes  Проверяет объекты на принадлежность к типам MatrixTypes.
MatrixCorrectExceptMsg Добавляет в текст исключения ExceptObject дополнительную информацию.
MatrixCreateExceptObj  Создает объект исключения класса AClass с сообщением AText.
MatrixExistsInFile Определяет, есть ли в указанном файле объект с заданным именем.
MatrixFreeAndNil Обнуляет ссылку, после чего уничтожает объект TMatrix.
MatrixNameIsValid Определяет, допустимое ли имя у массива.
MatrixReCreateExceptObj  Пересоздает объект исключения заново, добавляя в текст исключения дополнительную отладочную информацию.
opAnd Выполняет над операндами Value1 и Value2 бинарную операцию AND
opBitAndI Выполняет поразрядную операцию AND (Result := Value1 and Value2)
opBitOrI Выполняет поразрядную операцию OR (Result := Value1 or Value2)
opBitShiftI Выполняет арифметический сдвиг числа Value1 на Value2 разрядов.
opBitXorI Выполняет поразрядную операцию XOR (Result := Value1 xor Value2)
opCmplxCopyRealParts Формирует комплексное число из действительных частей Value1 и Value2
opCmplxDiv Выполняет деление комплексных чисел Value1 и Value2
opCmplxDivBoth Выполняет деление действительной и мнимой части числа Value1 на вещественную часть числа Value2
opCmplxInvDiv 
opCmplxMul Выполняет умножение комплексных чисел Value1 и Value2
opCmplxPower Возводит комплексное число Value1 в степень Value2
opCmplxSub Выполняет вычитание комплексных чисел Value1 и Value2
opCmplxSum Выполняет сложение комплексных чисел Value1 и Value2
opDiv Выполняет деление дробных чисел
opDivI Выполняет деление целых чисел
opDivI64 Выполняет деление длинных целых чисел Int64
opEQ Сравнивает между собой числа Value1 и Value2.
opGE Сравнивает между собой числа Value1 и Value2.
opGT Сравнивает между собой числа Value1 и Value2.
opLE Сравнивает между собой числа Value1 и Value2.
opLT Сравнивает между собой числа Value1 и Value2.
opMul Выполняет умножение дробных чисел
opMulI Выполняет умножение целых чисел
opMulI64 Выполняет умножение длинных целых чисел Int64
opNE Сравнивает между собой числа Value1 и Value2.
opOr Выполняет над операндами Value1 и Value2 бинарную операцию OR
opPower Возводит дробное число Value1 в степень Value2
opSub Выполняет вычитание дробных чисел
opSubI Выполняет вычитание целых чисел
opSubI64 Выполняет вычитание длинных целых чисел Int64
opSum Выполняет сложение дробных чисел
opSumI Выполняет сложение целых чисел
opSumI64 Выполняет сложение длинных целых чисел Int64
opTruncDiv Выполняет деление дробных чисел с округлением в сторону нуля
opXor Выполняет над операндами Value1 и Value2 бинарную операцию XOR
ParseMatrixRow Разбивает строку ARow на числа и помещает их в динамический массив.
RaiseMatrixError  Генерирует исключение класса AClass с сообщением AText.
ReadMatrixNameFromStream Считывает строку TMatrixName из потока TStream
RegisterMatrixClass Регистрирует класс TMatrixClass.
ReRaiseMatrixError  Выполняет регенерацию исключения.
SingleComplex Формирует из вещественной и мнимой части комплексное число
StringToBCD Конвертирует число из строкового представления в формат TBCDNumber.
StringToBCDDef Конвертирует число из строкового представления в формат TBCDNumber.
StringToDimValues Разбивает строку S на числа и помещает их в динамический массив.
StringToFloat Конвертирует строку в число.
TryStringToBCD Конвертирует число из строкового представления в формат TBCDNumber.
WriteMatrixNameToStream Записывает строку TMatrixName в поток TStream.

Global Variables
Base Рабочая область, создаваемая по умолчанию
BCDEmpty Нулевое BCD-число.
fncArccos 
fncArcCosh 
fncArcCot 
fncArcCotH 
fncArcCsc 
fncArcCscH 
fncArcSec 
fncArcSecH 
fncArcsin 
fncArcSinh 
fncArcTanh 
fncCosecant 
fncCosh 
fncCotan 
fncCotH 
fncCscH 
fncLnXP1 
fncLog10 
fncLog2 
fncSecant 
fncSecH 
fncSinh 
fncTan 
fncTanh 
MatrixClassList Ассоциативный список классов TMatrixClass.
SDebug 

Global Constants
ComplexImagSymbol Символ мнимой части комплексного числа
Exp Экспонента
MatrixDecimalSeparator Символ, подставляемый на место DecimalSeparator в операциях конвертирования числа в строку функциями системы Matrix32
MatrixNameRemoveLabel Метка имени удаленного объекта (используется в операциях в потоками и файлами)
MatrixNumberDelimiter Символ, которым отделяются друг от друга числа в строке
MatrixRowsDelimiter Символ, которым отделяются строки друг от друга
MaxArrayNameLength Максимальная длина имени объекта.
MaxBCDLength Максимальное кол-во цифр в двоично-десятичном числе.
MaxSignatureLength Максимальная длина псевдонима класса объекта
NumberChars Набор символов, допустимых в строковом представлении числа
ValidChars Набор символов, допустимых в имени массива

Resourcestrings
masSIsBadClassForOperation 'Объект класса '%s' не допустим для выполнения операции'
matSAbstractError 'Попытка обращения к запрещенному для объекта методу'
matSAliasError 'Задан недопустимый псевдоним класса массива'
matSArrayIsEmpty 'Массив пуст'
matSArrayNotFound 'Не удалось найти массив с именем '%s''
matSArraysNotAgree 'Размеры массивов не согласованы'
matSBadBINFile 'Файл не соответствует формату системы Matrix32'
matSBadInputData 'Недопустимые входные данные'
matSBadName 'Указано недопустимое имя массива '%s''
matSBadNameForBinFile 'Невозможно загрузить или сохранить объект в файл, так как имя объекта не указано'
matSBaseWorkspace 'Основная рабочая область'
matSBCDErrorString 'Строка '%s' не содержит корректного двоично-десятичного значения'
matSBCDOverFlow 'Двоично-десятичное число не вместилось в разрядную сетку'
matSBCDTooBigNumber 'Двоично-десятичное число '%s' слишком большое'
matSBinaryHeader 'Matrix32 binaries version 2.0...'
matSCanNotChangeSize 'Невозможно изменить размеры массива'
matSCanNotRenameFile 'Не удалось переименовать файл '%s' в '%s''
matSCanNotWriteCell 'Невозможно изменить элемент массива ячеек, переданного по ссылке'
matSCatchStack 'Цепь распространения ошибки:'
matSClassNotFound 'Класс '%s' не зарегистрирован'
matSDifferentType 'Массивы имеют разные размерности'
matSDimensionError 'Задано недопустимое значение размерности массива'
matSDimIntervError 'Указанный интервал выходит за рамки значения размерности'
matSDimNotValid 'Недопустимая размерность массива'
matSElemReadError 'Ошибка чтения элемента массива'
matSElemWriteError 'Ошибка записи элемента массива'
matSErrorCreateArray 'Невозможно создать массив с указанными размерами'
matSExceptionClass 'Класс исключения: '
matSFunctionError 'При работе функции произошла ошибка'
matSInvalidComplex '''%s'' не является комплексным числом'
matSInvalidFloat '''%s'' не является числом с плавающей точкой'
matSInvalidNumericSymbol 'Символ ''%s'' не допустим для числовой последовательности'
matSIsCopyByRef 'Нельзя изменять структуру массива, переданного по ссылке'
matSIsNotMatrix 'Операция применима только для 2-мерных массивов'
matSIsNotSquareArray 'Массив должен быть квадратной матрицей'
matSIsRefToSelf 'Попытка установить указатель на себя'
matSIsRefToWorkspace 'Попытка присвоить ссылку на объект 'Рабочая область''
matSMatrixChildrenCount 'Число дочерних объектов: %d'
matSMatrixClassName 'Класс объекта: %s = class(%s)'
matSMatrixDimensions 'Размеры массива (%d-D): %s'
matSMatrixElemCount 'Количество элементов массива: %d'
matSMatrixElemSize 'Размер элемента: %d байт(а)'
matSMatrixFieldsCount 'Число полей записи: %d'
matSMatrixListIsSmall 'В списке массивов указано слишком мало элементов'
matSMatrixName 'Имя объекта: '
matSMatrixObjectInformation 'Информация об объекте TMatrix:'
matSMatrixRangeOutOfStream 'Невозможно прочитать данные из потока TStream, так как указатель '+'на конец объекта указывает за пределы потока'
matSMatrixUsedMemory 'Занимаемая память: %d байт(а)'
matSMustHaveSameType 'Массивы должны быть однотипными'
matSNoDimension 'Указанной размерности не существует'
matSNotCellType 'Операция применима только для массивов ячеек'
matSNotDynamicType 'Операция применима только для динамических массивов'
matSNotNumericType 'Операция применима только для числовых массивов'
matSNotObjectType 'Операция применима только для объектных массивов'
matSNotRecordType 'Операция применима только для массивов записей'
matSOriginalErrorMsg 'Сообщение об ошибке:'
matSOutOfMemory 'Недостаточно памяти для выполнения операции'
matSRecordFieldIsNil 'Поля с именем '%s' не существует!'
matSRecordIndexNotExists 'Поля с индексом '%d' не существует!'
matSRefIsNotMatrix 'Ссылка '$%p' не соответствует существующему объекту TMatrix'
matSTryAccessToElem 'Попытка обратиться к элементу с координатами (%s)'
matSUnknownType 'Тип объекта не поддерживается'
matSWorkspace 'Рабочая область'
matSWrongCoords 'Ошибка доступа к элементу массива. Указаны недопустимые координаты элемента. '

Логинов Дмитрий © 2005-2015