Скачиваний:
40
Добавлен:
01.05.2014
Размер:
8.39 Кб
Скачать

Библиотека AP для Delphi Библиотека AP для Delphi Этот документ описывает библиотеку AP, адаптированную для Delphi. Библиотека AP для Delphi содержит базовый набор математических функций и констант, которые требуются для работы программ с сайта "Библиотека алгоритмов".

Совместимость Данная библиотека должна быть совместима с любым компилятором Object Pascal, начиная с версии, поставляемой вместе с Borland Delphi 4.0 (Примечание: если несовместимость всё-таки замечена, просьба сообщить об этом мне, указав версию компилятора и тип ошибки). Под Kylix эти исходники не тестировались, буду рад любым сообщениям о результатах, если кто-то такое тестирование проведет.

Состав и использование В состав библиотеки входит единственный модуль ap.pas Для использования библиотеки достаточно подключить этот модуль к проекту.

Описание библиотеки AP Константы

Функции

Массивы

Операции с комплексными числами

Константы MachineEpsilon

Эта константа определяет точность машинных операций, т.е. минимальное число, такое, что 1+MachineEpsilon≠1 на данной разрядной сетке. Константа может быть взята "с запасом", т.е. реальная точность может быть ещё выше.

MaxRealNumber

Эта константа определяет максимальное положительное вещественное число, представимое на данной машине. Константа может быть взята "с запасом", т.е. реальная граница может быть ещё выше.

MinRealNumber

Эта константа определяет минимальное положительное вещественное число, представимое на данной машине. Константа может быть взята "с запасом", т.е. реальная граница может быть ещё ниже.

Функции function AbsReal(X : Extended):Extended;

Возвращает модуль вещественного числа. Эквивалентна стандартной функции Abs.

function AbsInt (I : Integer):Integer;

Возвращает модуль целого числа. Эквивалентна стандартной функции Abs.

function RandomReal():Extended;

Возвращает случайное вещественное число в полуинтервале [0,1).

function RandomInteger(I : Integer):Integer;

Возвращает случайное целое число в полуинтервале [0, I).

function Sign(X:Extended):Integer;

Возвращает:

+1, если X>0

-1, если X<0

0, если X=0

function DynamicArrayCopy(const A: TInteger1DArray):TInteger1DArray;overload;

function DynamicArrayCopy(const A: TReal1DArray):TReal1DArray;overload;

function DynamicArrayCopy(const A: TComplex1DArray):TComplex1DArray;overload;

function DynamicArrayCopy(const A: TBoolean1DArray):TBoolean1DArray;overload;

function DynamicArrayCopy(const A: TInteger2DArray):TInteger2DArray;overload;

function DynamicArrayCopy(const A: TReal2DArray):TReal2DArray;overload;

function DynamicArrayCopy(const A: TComplex2DArray):TComplex2DArray;overload;

function DynamicArrayCopy(const A: TBoolean2DArray):TBoolean2DArray;overload;

Это семейство функций служит для создания копий одномерных и двухмерных динамических массивов.

Массивы В стандартной библиотеке AP определены следующие типы динамических массивов:

type TInteger1DArray = array of LongInt; TReal1DArray = array of Double; TComplex1DArray = array of Complex; TBoolean1DArray = array of Boolean; TInteger2DArray = array of array of LongInt; TReal2DArray = array of array of Double; TComplex2DArray = array of array of Complex; TBoolean2DArray = array of array of Boolean; Операции с комплексными числами Поскольку язык Object Pascal не поддерживает перегрузку операторов (что является предметом справедливой критики со стороны адептов С++), операции с комплексными числами не могут осуществляться так же легко, как и со встроенными типами данных. Поэтому в библиотеке определен тип данных Complex, представляющий собой запись с двумя вещественными полями x и y, операции с которым осуществляются путем вызова функций, реализующих операции сложения, умножения, вычитания и деления, и принимающих как комплексные, так и вещественные параметры, и возвращающих комплексные результаты. Список этих функций приведен ниже.

function C_Add(const Z1 : Complex; const Z2 : Complex):Complex;

function C_AddR(const Z1 : Complex; const R : Double):Complex;

Эти функции вычисляют суммы Z1+Z2 или Z1+R.

function C_Sub(const Z1 : Complex; const Z2 : Complex):Complex;

function C_SubR(const Z1 : Complex; const R : Double):Complex;

function C_RSub(const R : Double; const Z1 : Complex):Complex;

Эти функции вычисляют разности Z1-Z2, Z1-R или R-Z1.

function C_Mul(const Z1 : Complex; const Z2 : Complex):Complex;

function C_MulR(const Z1 : Complex; const R : Double):Complex;

Эти функции вычисляют произведения Z1*Z2 или Z1*R.

function C_Div(const Z1 : Complex; const Z2 : Complex):Complex;

function C_DivR(const Z1 : Complex; const R : Double):Complex;

function C_RDiv(const R : Double; const Z2 : Complex):Complex;

Эти функции вычисляют отношения Z1/Z2, Z1/R или R/Z2.

function C_Equal(const Z1 : Complex; const Z2 : Complex):Boolean;

function C_EqualR(const Z1 : Complex; const R : Double):Boolean;

function C_NotEqual(const Z1 : Complex; const Z2 : Complex):Boolean;

function C_NotEqualR(const Z1 : Complex; const R : Double):Boolean;

Эти функции сравнивают Z1 и Z2 или Z1 и R.

function C_Complex(const X : Double):Complex;

Эта функция конвертирует вещественное число в равное ему комплексное.

function C_Opposite(const Z : Complex):Complex;

Эта функция возвращает -Z.

function AbsComplex(const Z : Complex):Double;

Эта функция возвращает модуль комплексного числа. Вычисление модуля осуществляется с использованием т.н. "безопасного" алгоритма, который никогда не приводит к переполнению при вычислении промежуточных результатов.

function Conj(const Z : Complex):Complex;

Эта функция возвращает комплексное число, сопряженное своему аргументу.

function CSqr(const Z : Complex):Complex;

Эта функция возвращает квадрат аргумента.

Соседние файлы в папке libs