Функции для финансовых вычислений

Функция DoubleDecliningBalance (Cost, Salvage: Extended; Life, Period: Integer ): Extended;
Модуль: Math
Описание
Функция вычисляет амортизационные отчисления на определенном этапе. В качестве параметров используются: начальная стоимость Cost, срок службы Life, конечная стоимость Salvage и амортизационный период Period. Вычисления производятся по следующим формулам:
Период
Сумма амортизационных отчислений
1
А1:= Cost*2/Life
2
А2:= (Cost-А1)*2/Life
3
А3:= (Cost-А1-А2)*2/Life


n
Аn:= (Cost-А1-А2 — … — Аn-1)*2/Life,
где n=Period

При достижении конечной стоимости, амортизация перестает начисляться, и для последующих периодов функция будет возвращать значение, указанное в параметре Salvage.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
A : Extended;
begin

A:=DoubleDecliningBalance(1000, 100, 5, 1); // A:=400

end;{/codecitation}


Функция FutureValue (
Rate: Extended;

NPeriods: Integer ;
Payment, PresentValue: Extended;
PaymentTime: TPaymentTime ): Extended;
Модуль: Math
Описание
Функция вычисляет значение вклада по прошествии определенного периода времени.
NPeriods — количество прошедших единиц периода времени. Например, если проценты начисляются раз в год, то данный параметр определяет количество лет.
PresentValue — первоначальная сумма вклада.
В параметре Payment указывается сумма, которая будет добавляться вкладчиком ко вкладу в течение каждой единицы периода времени. Если вклад осуществляется только один раз, то Payment:=0.
Rate — дивиденты, начисляемые за единицу периода.
Параметр PaymentTime определяет, как должны начисляться проценты:
Значение
Описание
PtStartOfPeriod
Проценты начисляются в конце единицы периода времени на всю сумму, находящуюся на момент начисления на счету.
ptEndOfPeriod
Проценты начисляются только на сумму, которая находилась на счету в начале единицы периода времени. Т.е. на сумму, которая была добавлена вкладчиком к вкладу в течение последней единицы времени, проценты будут начислены по прошествии следующего периода.

Знак минус в результате функции показывает, что данная сумма является кредитовой, т.е. должна быть списана со счета.
Пример
Первоначальный вклад составил 100 руб. дивиденды — 10% годовых. Ежегодно вкладчик добавляет к вкладу 50 руб. Проценты начисляются в конце года только на сумму, которая находилась на счету в начале года, т.е. проценты на сумму, которая была добавлена к вкладу в течение года будут начислены только в конце следующего года. Вычисляем сумму вклада через 5 лет.
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Sum : Extended;
begin

Sum:=FutureValue(0.1, 5, 50, 100, ptEndOfPeriod);
// Sum:= -466.306

end;{/codecitation}
 


Функция InterestPayment (
Rate: Extended;
NPeriods: Integer ;
PresentValue, FutureValue: Extended;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция вычисляет процентную ставку кредита на определенном этапе в денежном исчислении.
PresentValue — сумма кредита.
Rate — фиксированная процентная ставка кредита.
NPeriods — число этапов, в течение которых производятся выплаты.
Period — номер этапа выплат, для которого производятся вычисления.
FutureValue — значение суммы кредита, по истечении выплат.
Параметр PaymentTime определяет, происходят выплаты в начале (PtStartOfPeriod) этапа или в конце (ptEndOfPeriod).
Знак минус в результате функции показывает, что данная сумма является кредитовой, т.е. должна быть списана со счета.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Pay : Extended;
begin

Pay:=InterestPayment( 0.1, 1, 5, 1000, 0, PtStartOfPeriod);
// Pay:= -90.9090909090909

end; {/codecitation}
 


Функция InterestRate (Periods: Integer;
Payment, PresentValue, FutureValue: Extended;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция вычисляет процентную ставку инвестиций, необходимую для возврата суммы инвестиций PresentValue с дивидендами.
PresentValue — сумма инвестиций.
FutureValue — полная сумма, полученная от инвестиций. Включает возврат первоначальной суммы инвестиций и дивиденды.
NPeriods — количество этапов выплат.
Payment — сумма периодических выплат.
Параметр PaymentTime определяет, происходят выплаты в начале (PtStartOfPeriod) этапа или в его конце (ptEndOfPeriod).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
IRate : Extended;
begin

IRate:=InterestRate(1, -100, -1000, 1500, ptEndOfPeriod);
{ IRate:= 0.4 }

end;{/codecitation}
ВНИМАНИЕ!!! Следует аккуратно использовать финансовые функции и внимательно следить за расстановкой знаков плюс/минус в параметрах функций.
Не рекомендуем использовать функцию InterestRate при написании программ, т.к. данная функция работает некорректно.

Вызов Результат
InterestRate(1, -100, -1000, 1110, ptEndOfPeriod); 0.01
InterestRate(1, -100, -1000, 1150, ptEndOfPeriod); 0.05
InterestRate(1, -100, -1000, 1200, ptEndOfPeriod); 0 (bag)
InterestRate(1, -100, -1000, 1250, ptEndOfPeriod); 0.15
InterestRate(1, -100, -1000, 1300, ptEndOfPeriod); 0.2

 


Функция InternalRateOfReturn (
Guess: Extended;
const CashFlows: array of Double ): Extended;

Модуль: Math
Описание
Функция вычисляет внутреннюю процентную ставку дохода от инвестиций. Массив CashFlows состоит из значений инвестиций и значений получаемого дохода за определенные периоды времени. Первое значение массива должно быть отрицательным, так как оно опредеяет первоначальную сумму инвестиций. Последующие значения могут быть отрицательными (дополнительные инвестиции), положительными (получаемый доход) или равны 0.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
IRate: Extended;
CashFlows: array of Double;
begin

SetLength(CashFlow, 2);
CashFlow[0]:=-1000;
CashFlow[1]:= 1200;
IRate:= InternalRateOfReturn(0, CashFlow);
// IRate:= 0.4

end; {/codecitation}
 

 


Функция NetPresentValue (
Rate: Extended;
const CashFlows: array of Double;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция вычисляет значение текущего платежа, используя массив с расчетными значениями. Данная функция помогает определить расчетную стоимость инвестиций на основе предполагаемого (расчетного) дохода.
Параметр Rate определяет процентную ставку инвестиций.
CashFlows — массив расчетных значений текущих платежей.
Параметр PaymentTime указывает, происходят выплаты в начале (PtStartOfPeriod) или в конце (ptEndOfPeriod) платежного этапа.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
PayValue: Extended;
CashFlows: array of Double;
begin

SetLength(CashFlow, 3);
CashFlow[0]:=-100;
CashFlow[1]:= 110;
CashFlow[2]:= 121;
PayValue:= NetPresentValue (0.1, CashFlow, PtStartOfPeriod);
{ PayValue:= 100 }

end; {/codecitation}
 

 


Функция NumberOfPeriods (
Rate, Payment, PresentValue, FutureValue: Extended;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция определяет количество этапов, необходимых для погашения кредита до значения определенного в параметре FutureValue.
PresentValue — первоначальная сумма кредита.
Rate — процентная ставка.
Payment — величина регулярных выплат.
Параметр PaymentTime определяет, происходят выплаты в начале (PtStartOfPeriod) этапа или в его конце (ptEndOfPeriod).
Пример
Первоначальная сумма кредита составляет 364руб. Процентная ставка 20%. Регулярные ежемесячные выплаты по 100руб производятся в конце месяца. Рассчитаем сколько месяцев необходимо для полной выплаты кредита.
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Np: Extended;
begin

Np:= NumberOfPeriods ( 0.2, 100, 364, 0, ptEndOfPeriod);
{ Np:= -3 }

end; {/codecitation}
 

 


Функция Payment (
Rate: Extended;
NPeriods: Integer;
PresentValue, FutureValue: Extended;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция вычисляет общую сумму погашения кредита, выплачиваемую на каждом этапе (состоит из текущих выплат и процентов).
PresentValue — сумма заимствования.
NPeriods — срок выплаты кредита. Данный пармаметр указывается количество этапов выплаты (количество лет, кварталов, месяцев и т.д.).
FutureValue — оставшаяся сумма кредита по истечении указанного периода.
Rate — величина процентной ставки кредита (ежегодная, ежеквартальная, ежемесячная и т.д. в соответствии с единицей измерения периода времени).
Параметр PaymentTime определяет, как происходят платежи: в начале (PtStartOfPeriod) или в конце (ptEndOfPeriod) платежного периода.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
PaySum : Extended;
begin

PaySum:= Payment(0.2, 1, 100, 0, ptEndOfPeriod);
{ PaySum:=-120 }

end; {/codecitation}
 

 


Функция PeriodPayment (
Rate: Extended;
Period, NPeriods: Integer;
PresentValue, FutureValue: Extended;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция вычисляет сумму выплат основной части кредита (без учета процентов) на определенном этапе.
PresentValue — сумма заимствований.
NPeriods — срок выплаты кредита (количество этапов).
FutureValue — сумма кредита по прошествии указанного срока.
Period — номер этапа, для которого производятся вычисления.
Rate — процентная ставка кредита.
Параметр PaymentTime определяет, как происходят платежи: в начале (PtStartOfPeriod) или в конце (ptEndOfPeriod) платежного периода.
Сумму выплачиваемых процентов кредита можно вычислить с помощью функции InterestPayment.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
PaySum : Extended;
begin

PaySum:= PeriodPayment( 0.1, 2, 5, 1000, 0, ptEndOfPeriod);
{ PaySum:= -180.17722887422 }

end; {/codecitation}
 

 


Функция PresentValue (
Rate: Extended;
NPeriods: Integer;
Payment, FutureValue: Extended;
PaymentTime: TPaymentTime ): Extended;

Модуль: Math
Описание
Функция определяет значение вклада в указанный период времени.
Payment — первоначальная сумма вклада.
NPeriods — срок вклада.
Rate — процентная ставка.
FutureValue — значение, которого могут достигнуть инвестиции в определенный период.
Параметр PaymentTime указывает, как происходят платежи: в начале (PtStartOfPeriod) или в конце (ptEndOfPeriod) платежного периода.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Value : Extended;
begin

Value:= PresentValue( 0.1, 1, -100, 0, ptEndOfPeriod);
{ Value:= 90,9090909090909 }

end; {/codecitation}
 

 


Функция SLNDepreciation (
Cost, Salvage: Extended;
Life: Integer ): Extended;

Модуль: Math
Описание
Функция вычисляет сумму амортизационных отчислений за единицу периода времени по методу линейной (равномерной) амортизации.
Cost — первоначальную стоимость оборудования.
Salvage — конечная стоимость оборудования.
Life — срок эксплуатации.
Для вычисления амортизации по ускоренному методу используйте функцию SYDDepreciation.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Amort : Extended;
begin

Amort:= SLNDepreciation(1000, 200, 5); { Amort:= 160 }

end;{/codecitation}
 

 


Функция SYDDepreciation (
Cost, Salvage: Extended;
Life, Period: Integer ): Extended;

Модуль: Math
Описание
Функция вычисляет сумму амортизационных отчислений на заданном этапе по методу ускоренной амортизации.
Cost — первоначальная стоимость оборудования.
Salvage — конечная стоимость.
Life — срок эксплуатации.
Period — номер этапа, для которого определяется сумма амортизационных отчислений.
Для вычислений по методу равномерной амортизации используйте функцию SLNDepreciation.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Amort : Extended;
begin

Amort:= SYDDepreciation( 1000, 100, 5, 1); { Amort:=300 }

end; {/codecitation}
 

Функции и процедуры для работы с данными перечислимого типа

Процедура Dec( var X[; N: Longint] );
Модуль: System
Описание
Процедура уменьшает значение переменной X на величину N или на 1, если параметр N опущен (т.е. Dec(X)=X-1, а Dec(X,N)= X-N). Аргумент X должен представлять собой переменную перечислимого типа (включая Int64), или типа PChar (если допускается расширенный синтаксис). Значение необязательного параметра N должно иметь целочисленный тип.
Рекомендуется использовать процедуру Dec в программах, насыщенных циклами, т.к. она генерирует наиболее оптимизированный код.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
i: Integer;
begin
i:= Height-10;
while i>0 do
begin
Canvas.TextOut(10, i, IntToStr(i));
Dec(i, 20); // i:= i-20
end;
end; {/codecitation}
 


Процедура Inc( var X[; N: Longint] );
Модуль: System
Описание
Процедура увеличивает значение переменной X на величину N или на 1, если параметр N опущен (т.е. Dec(X)=X+1, а Dec(X,N)= X+N). Аргумент X должен представлять собой переменную перечислимого типа (включая Int64), или типа PChar (если допускается расширенный синтаксис). Значение необязательного параметра N должно иметь целочисленный тип.
Рекомендуется использовать процедуру Dec в программах, насыщенных циклами, т.к. она генерирует наиболее оптимизированный код.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
i: Integer;
begin
i:= 10;
while i<Height do
begin
Canvas.TextOut( 10, i, IntToStr(i) );
Inc( i, 20); // i:= i+20
end;
end; {/codecitation}
 


Функция Odd( X: LongInt ): Boolean;
Модуль: System
Описание
Функция определяет четность аргумента X. Возвращает True, если Х представляет собой нечетное значение и False, если четное.
 


Функция Ord( X ): Longint;
Модуль: System
Описание
Функция возвращает порядковый номер (индекс) выражения перечислимого (кроме Int64) или символьного типа, переданного в параметре X. Если аргумент имеет перечислимый тип, то функция возвращает индекс элемента (1-й элемент имеет индекс 0). Если Х представляет собой значение типа Char, то функция возвращает ASCII код символа.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}type
MyType = (x1, x2, x3, x4);
var
S: string;
begin
S:= ‘x3 имеет порядковый номер ‘+ IntToStr( Ord( x3 ))+ #13;
S:= S+ ‘ASCII код символа "Б" — ‘ + IntToStr( Ord( ‘Б’ ))+ #13;
S:= S+ ‘ASCII код символа "б" — ‘ + IntToStr( Ord( ‘б’ ));
MessageDlg( S, mtInformation, [mbOk], 0);
end; {/codecitation}
 


Функция Pred( X );
Модуль: System
Описание
Функция возвращает значение, предшествующее значению аргумента Х. Аргумент должен иметь перечислимый тип (допускается Int64).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
S: string;
begin
S:= ‘Число 25 следует за числом ‘ + IntTostr( Pred(25)) + #13;
S:= S + ‘Буква Д стоит в алфавите после буквы ‘ + Pred( ‘Д’ );
MessageDlg( S, mtInformation, [mbOk], 0);
end;{/codecitation}
 


Функция Succ( X );
Модуль: System
Описание
Функция возвращает значение, следующее за значением аргумента Х. Аргумент должен иметь перечислимый тип (допускается Int64).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
S: string;
begin
S:= ‘За числом 25 следует число ‘ + IntTostr( Succ(25))+#13;
S:= S + ‘За буквой Д в алфавите идет буква ‘ + Succ(‘Д’);
MessageDlg( S, mtInformation, [mbOk], 0);
end; {/codecitation}
 

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

Функция MaxIntValue (const Data: array of Integer ): Integer;
Модуль: Math
Описание
Функция возвращает наибольшее значение целочисленного массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Integer;
Max, I : Integer;
begin

SetLength(Mas, 10);
Randomize;
for I:= 0 to 9 do Mas[i]:= Random(100);
Max:= MaxIntValue(Mas);

end;{/codecitation}
 


Функция MaxValue (const Data: array of Double ): Double;
Модуль: Math
Описание
Функция возвращает наибольшее значение числового массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Real;
Max: Real;
I: byte;
begin

SetLength(Mas, 10);
Randomize;
for I:=0 to 9 do Mas[i]:= Random;
Max:= MaxValue(Mas);

end; {/codecitation}
 


Функция Mean (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция возвращает среднее арифметическое всех значений массива чисел Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Real;
m: Real;
i: byte;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i/10;
m:= Mean(Mas); // m:= 0.45

end; {/codecitation}
 


Процедура MeanAndStdDev (const Data: array of Double; var Mean, StdDev: Extended );
Модуль: Math
Описание
Функция вычисляет среднее арифметическое Mean всех значений числового массива Data и среднее отклонение StdDev от среднего арифметического. Обе величины вычисляются за один проход. Точность вычислений может быть потеряна, если среднее отклонение >10E7, или числа массива отличаются на очень незначительную величину.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Data: array of Double;
Mean, Dev: Extended;
i: byte;
begin

SetLength(Mas, 11);
for i:= 0 to 10 do Mas[i]:= i;
MeanAndStdDev(Data, Mean, Dev);
{ Mean:=5; Div:=3.3166247903554 }

end;{/codecitation}
 


Функция MinIntValue (const Data: array of Integer ): Integer;
Модуль: Math
Описание
Функция возвращает наименьшее значение целочисленного массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Integer;
Min, I : Integer;
begin

SetLength(Mas, 10);
Randomize;
for I:=0 to 9 do Mas[i]:= Random(100);
Min:= MinIntValue(Mas);

end; {/codecitation}
 


Функция MinValue (const Data: array of Double ): Double;
Модуль: Math
Описание
Функция возвращает наименьшее значение числового массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Real;
Min: Real;
I: byte;
begin

SetLength(Mas, 10);
Randomize;
for I:=0 to 9 do Mas[i]:= Random;
Min:= MinValue(Mas);

end;{/codecitation}
 


Процедура MomentSkewKurtosis (const Data: array of Double;var M1, M2, M3, M4, Skew, Kurtosis: Extended );
Модуль: Math
Описание
Процедура вычисляет основные коэффициенты статистического анализа: первые четыре момента, коэффициент асимметрии и периодичность.
M1 — среднее значение;
M2 — дисперсия;
Skew — отклонение, отражающее симметрию распределения;
Kurtosis — периодичность, отражающая пологость распределения.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Data: array of Double;
M1, M2, M3, M4, Skew, Kur: Extended;
I: Byte;
begin

SetLength(Data, 10);
for i:= 0 to 9 do Data[i]:= i;
MomentSkewKurtosis(Data, M1, M2, M3, M4, Skew, Kur);
{ M1:=4.5; M2:=8.5; M3:=0; M4:=120.8625;
Skew:=0;
Kur:=1,77575757575758 }

end;{/codecitation}
 


Функция Norm (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция возвращает Евклидову норму для значений числового массива Data. Евклидова норма представляет собой квадратный корень суммы квадратов всех значений массива.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Double;
E: Extended;
i: byte;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i;
E:= Norm(Mas); // E:=16.8819430161341

end;{/codecitation}
 


Функция PopnStdDev (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция вычисляет среднеквадратичное отклонение совокупности (квадратный корень дисперсии совокупности) всех значений массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Double;
I: Byte;
Dev: Extended;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i;
Dev:= PopnStdDev(Mas); { Dev:=287228132326901 }

end; {/codecitation}
 


Функция PopnVariance (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция вычисляет дисперсию совокупности всех значений массива чисел Data (TotalVariance(Data)/n ).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Double;
I: Byte;
V: Extended;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i;
V:= PopnVariance(Mas); { V:=8.25 }

end;{/codecitation}


Функция StdDev (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция вычисляет стандартное среднеквадратичное отклонение (квадратный корень типовой дисперсии) значений массива чисел Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Double;
I: Byte;
Dev: Extended;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i;
Dev:= StdDev(Mas); { Dev:=3.02765035409749 }

end;{/codecitation}
 


Функция Sum (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция возвращает сумму значений всех элементов числового массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Double;
Summa: Extended;
i: byte;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i/10;
Summa:= Sum(Mas); { Summa:=4.5 }

end;{/codecitation}
 


Функция SumInt (const Data: array of Integer ): Integer;
Модуль: Math
Описание
Функция возвращает сумму значений всех элементов целочисленного массива Data.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Integer;
Summa, I: Integer;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i;
Summa:= SumInt(Mas); { Summa:= 45 }

end; {/codecitation}
 


Функция SumOfSquares (const Data: array of Double ): Extended;
Модуль: Math
Описание
Фнкция возвращает сумму квадратов всех значений числового массива Data:

Data[0]*Data[0] +
Data[1]*Data[1] +

Data[length(Data)-1]*Data[length(Data)-1].
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Integer;
SumSqr: Extendes; I: Integer;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i/10;
SumSqr:= SumOfSquares(Mas); { SumSqr:=2.85 }

end; {/codecitation}
 


Процедура SumsAndSquares (const Data: array of Double;var Sum, SumOfSquares: Extended );
Модуль: Math
Описание
Процедура возвращает одновременно сумму и сумму квадратов всех значений числового массива Data. При вызове процедуры SumsAndSquares вычисления производятся быстрее, чем при последовательном вызове двух функций Sum и SumOfSquares.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Double;
Sum, SumSqr: Extendes;
I: Byte;
begin

SetLength(Mas, 10);
for i:= 0 to 9 do Mas[i]:= i/10;
SumsAndSquares(Data, Summa, SumSqr);
{ Summa:= 4.5; SumSqr:= 2.85 }

end;{/codecitation}
 


Функция TotalVariance (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция вычисляет статистическую дисперсию равную сумме квадратов разницы между каждым конкретным значением массива Data и средним значением, т.е дисперсия =
(Data[0]-Mean)² + (Data[1]-Mean)² + … + (Data[n-1]-Mean)²,
где n — количество элементов массива Data,
Mean — среднее арифметическое всех значений массива.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Mas: array of Double;
I: Byte;
V: Extended;
begin

SetLength(Mas, 5);
for i:= 0 to 4 do Mas[i]:= i;
V:= TotalVariance(Mas); { V:= 10 }

end;{/codecitation}
 


Функция Variance (const Data: array of Double ): Extended;
Модуль: Math
Описание
Функция вычисляет статистическую типовую дисперсию всех значений числового массива Data, по методу n-1.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Mas: array of Double;
I: Byte;
V: Extended;
begin

SetLength(Mas, 5);
for i:= 0 to 4 do Mas[i]:= i;
V:= Variance(Mas); // V:= 2.5

end; {/codecitation}
 

Преобразование тригонометрических единиц измерений

Функция CycleToRad( Cycles: Extended ): Extended;
Модуль: Math
Описание
Функция преобразовывает значение аргумента из циклов (оборотов) в радианы (1 цикл= 2*Pi).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
L, R: Real;
begin

R:= 10;
L:= R*CycleToRad(1); // вычисляет длину окружности с радиусом R

end; {/codecitation}
 


Функция DegToRad( Degrees: Extended ): Extended;
Модуль: Math
Описание
Функция преобразовывает значение аргумента из градусов в радианы (1° = Pi/180 радиан).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y, Angle: Real;
begin

Angle:= 60;
Y:= Cos( DegToRad(Angle) ); { Y:= 0.5 }

end; {/codecitation}
 


Функция GradToRad( Grads: Extended ): Extended;
Модуль: Math
Описание
Функция преобразовывает значение аргумента из десятичных градусов (grad) в радианы (1 grad = Pi/200 радиан).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
x, y: Real;
begin

x:= GradToRad( 100 );
y:= Sin( x ); // Y:= 1

end; {/codecitation}
 


Функция RadToCycle( Radians: Extended ): Extended;
Модуль: Math
Описание
Функция преобразовывает значение аргумента из радианов в циклы (1 радиан = 1 цикл/(2*Pi) ).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= RadToCycle(Pi); // Y:= 0.5

end; {/codecitation}
 


Функция RadToDeg( Radians: Extended ): Extended;
Модуль: Math
Описание
Функция преобразовывает значение аргумента из радианов в градусы ( 1 радиан = (180/Pi)° ).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
X, Angle: Real;
begin

X:= ArcCos(0.5);
Angle:= RadToDeg(X); // Angle:= 60

end; {/codecitation}
 


Функция RadToGrad( Radians: Extended ): Extended;
Модуль: Math
Описание
Функция преобразовывает значение аргумента из радианов в десятичные градусы ( 1 радиан = 200/Pi grad ).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= RadToGrad(Pi); // Y:= 200

end;{/codecitation}
 

Генерирование случайных чисел

Функция RandG ( Mean, StdDev: Extended ): Extended;
Модуль: Math
Описание
Функция генерирует случайное число с отклонением по Гауссу от среднего значения Mean. Наибольшая часть возвращаемых значений будет лежать в диапазоне Mean-StdDev … Mean+StdDev.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
X: Real;
begin

Randomize;
X:= RandG( 100, 10 ); { 90<=X<=110 }

end; {/codecitation}
 


Функция Random [( Range: Integer );
Модуль: System
Описание
Функция генерирует случайное целое число в заданном диапазоне [0…Range).
Параметр Range является необязательным. Если данный параметр опущен, то функция возвращает число действительного типа в диапазоне [0…1).
Генератор случайных чисел инициализируется процедурой Randomize. Если не производить инициализацию, то при каждом запуске программы, функция Random будет возвращать одну и ту же последовательность чисел. Если необходимо сгенерировать определенную последовательность, то для этого нужно присвоить системной переменной RandSeed: LongInt конкретное значение. При этом следует помнить, что в разных версиях компилятора используются различные алгоритмы генерирования последовательностей значений. По этому не рекомендуется использовать функцию Random для шифровки-дешифровки данных (т.е. когда необходимо генерировать одинаковые псевдослучайные последовательности чисел).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
X: Real;
begin

Randomize;
X:= Random; { 0<=X<1 }

end; {/codecitation}
 


Процедура Randomize;
Модуль: System
Описание
Процедура инициализирует генерацию случайных чисел со случайного значения, используя текущее значение системного времени.
Если не инициализировать генератор случайных чисел с помощью данной процедуры, то при каждом запуске программы будет генерироваться одна и та же последовательность чисел. Для генерации определенной последовательности, необходимо системной переменной RandSeed: LongInt присвоить конкретное значение.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
i: Integer;
begin

Randomize;
for i:= 1 to 100 do
Canvas.TextOut( Random(Width), Random(Height), ‘*’ );

end;  {/codecitation}

Тригонометрические функции

Функция ArcCos( X: Extended ): Extended;
Модуль: Math
Описание
Функция возвращает значение арккосинуса аргумента Х в радианах в диапазоне [0.. Pi]. Значение аргумента должно удовлетворять условию -1<=X<=1, иначе возникнет исключение EinvalidOp.
Пример

{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= ArcCos(1); { Y:= 0 }

end;
{/codecitation}
 


Функция ArcCosh( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет гиперболический арккосинус аргумента Х. Значение аргумента должно удовлетворять условию X>=1.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= ArcCosh(1); { Y:= 0 }

end; {/codecitation}
 

 


Функция ArcSin( X: Extended ): Extended;
Модуль: Math
Описание
Функция возвращает значение арксинуса аргумента Х в радианах в диапазоне [-Pi/2…Pi/2]. Значение аргумента должно удовлетворять условию -1<=X<=1, иначе возникнет исключение EInvalidOp.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= ArcSin(0); { Y:= 0 }

end; {/codecitation}
 

 


Функция ArcSinh( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет гиперболический арксинус аргумента Х.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= ArcSinh(0); { Y:= 0 }

end;{/codecitation}
 

 


Функция ArcTan( X: Extended ): Extended;
Модуль: Math
Описание
Функция возвращает арктангенс аргумента Х в радианах в диапазоне [-Pi/2…Pi/2].
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= ArcTan(0); {Y:= 0}

end; {/codecitation}
 

 


Функция ArcTan2( X, Y: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет arctg(Y/X) и возвращает значение угла в радианах с учетом квадранта в диапазоне от -Pi до Pi.
Значения X и Y не должны выходить за пределы диапазона
(-264…264), а также значение Х не должно быть равным 0.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= ArcTan2( X/Y );

end;{/codecitation}
 

 


Функция ArcTanh( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет гиперболический арктангенс аргумента Х. Значение аргумента должно удовлетворять условию
-1<=X<=1, иначе возникнет исключение EOverflow.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= ArcTanh( 0 ); {Y:= 0}

end; {/codecitation}
 

 


Функция Cos( X: Extended ): Extended;
Модуль: System
Описание
Функция вычисляет косинус аргумента Х. Значение аргумента указывается в радианах.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= Cos( 2*Pi ); {Y:= 1}

end; {/codecitation}
 

 


Функция Cosh( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет гиперболический косинус аргумента Х.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= Cosh( 0 ); {Y:= 1}

end;{/codecitation}
 

 


Функция Cotan( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет котангенс аргумента X. Значение аргумента не должно быть равно нулю, иначе возникнет исключение EZeroDivide.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= Cotan( 1 ); {Y:= 0,642092615934331}

end;{/codecitation}
 

 


Функция Hypot( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет длину гипотенузы прямоугольного треугольника по заданным значениям катетов.
Hypot( X,Y ) = sqrt( X*X + Y*Y ).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
А: Real;
begin

А:= Hypot(3, 4); { А:= 5 }

end;{/codecitation}
 

 


Функция Sin( X: Extended ): Extended;
Модуль: System
Описание
Функция вычисляет синус аргумента Х. Значение аргумента указывается в радианах.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= Sin(Pi/2); { Y:= 1 }

end;{/codecitation}
 

 


Процедура SinCos (Angle: Extended;
var Sin: Extended;
var Cos: Extended );

Модуль: Math
Описание
Процедура вычисляет одновременно синус и косинус угла Angle в радианах.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
S, C: Real;
begin

SinCos( Pi/3, S, C ); { S:=0.8660254; C:=0.5 }

end; {/codecitation}
 

 


Функция Sinh( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет гиперболический синус аргумента Х.
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"} var
Y: Real;
begin

Y:= Sinh( 0 ); { Y:=0 }

end;{/codecitation}
 

 


Функция Tan( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет тангенс аргумента X.
Tan(X) = Sin(X) / Cos(X).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= Tan( 0 ); { Y:=0 }

end; {/codecitation}
 

 


Функция Tanh( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет гиперболический тангенс аргумента Х.
Tahn(X) = Sinh(X) / Cosh(X).
Пример
{codecitation class="brush: pascal; gutter: false;" width="500px"}var
Y: Real;
begin

Y:= Tanh( 0 ); { Y:=0 }

end; {/codecitation}
 

Арифметические функции

Функция Abs ( X );
Модуль: System
Описание
Функция возвращает абсолютное значение аргумента X.
Аргумент может иметь значение как целочисленного, так и действительного типа.
Пример
 

{codecitation class="brush: pascal; gutter: false;" width="500px"}

var
x1: Real;
x2: Integer;
begin

x1:= Abs(-1.6); {x1:=1.6}
x2:= Abs(-147); {x2:=147}

end;{/codecitation}
 


Функция Ceil ( X: Extended ): Integer;
Модуль: Math
Описание
Функция округляет значение аргумента X к ближайшему большему целому. Абсолютное значение X не должно превышать величину MaxInt ( 2 147 483 647 ).
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x1, x2: Integer;
begin

x1:= Ceil(-5.7); { x1:=-5 }
x2:= Ceil(5.7); { x2:= 6 }

end;{/codecitation}
 


Функция Exp ( X: Real ): Real;
Модуль: System
Описание
Функция вычисляет значение ex.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
e1, e2: Real;
begin

e1:= Exp(1); {e1:=2.71828182845905}
e2:= Exp(2); {e2:=7.38905609893065}

end;{/codecitation}
 


Функция Floor ( X: Extended ): Integer;
Модуль: Math
Описание
Функция округляет значение аргумента X к ближайшему меньшему целому. Абсолютное значение X не должно превышать величину MaxInt ( 2 147 483 647 ).
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x1, x2: Integer;
begin

x1:= Floor(-5.7); {x1:=-6}
x2:= Floor(5.7); {x2:= 5}

end;{/codecitation}
 


Функция Frac ( X: Extended ): Extended;
Модуль: System
Описание
Функция возвращает дробную часть аргумента Х, т.е.
Frac(X) = X — Int(X).
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x1, x2: Integer;
begin

x1:= Frac(-1234.5678); {x1:=-0.5678}
x2:= Frac(1234.5678); {x2:=0.5678}

end;{/codecitation}
 


Процедура Frexp (X: Extended;
var Mantissa: Extended;
var Exponent: Integer );

Модуль: Math
Описание
Процедура возвращает мантиссу и экспоненту аргумента Х
(X=Mantissa*2Exponent), где -1<Mantissa<1.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
m: Extended;
e : Integer;
begin

Frexp(-3, m, e); {m:=-0.75; e:=2}
Frexp(8, m, e); {m:=0.5; e:=4}

end;{/codecitation}
 


Функция Int ( X: Extended ): Extended;
Модуль: System
Описание
Функция возвращает целую часть аргумента нецелочисленного типа.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x1, x2: Real;
begin

x1:= Int(-1234.5678); {x1:=-1234.0}
x2:= Int( 1234.5678); {x2:= 1234.0}

end;{/codecitation}
 


Функция IntPower (X: Extended;
Y: Integer ): Extended;

Модуль: System
Описание
Функция возводит X в целочисленную степень Y. Для возведения числа в дробную степень используйте функцию Power.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
z1, z2: Real;
begin

z1:= IntPower(0.5, -2); {z1:=4}
z2:= IntPower(0.5, 2); {z2:=0.25}

end;{/codecitation}
 


Функция Ldexp (X: Extended;
Y: Integer ): Extended;

Модуль: Math
Описание
Функция вычисляет X*2Y.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
z1, z2: Real;
begin

z1:= Ldexp(0.4, -3); {z1:=0.05}
z2:= Ldexp(0.4, 3); {z2:=3.2}

end;{/codecitation}
 


Функция Ln ( X: Real ): Real;
Модуль: System
Описание
Функция вычисляет натуральный логарифм аргумента Х.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x, y: Real;
begin

x:= Exp(1); { x:=2.71828182845905 }
y:= ln(x); { y:=1 }

end;{/codecitation}
 


Функция LnXP1 ( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет натуральный логарифм ln(X+1).
Данную функцию удобно использовать для вычислений, когда значение аргумента X близко к нулю.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Real;
begin

y:= LnXP1( 0.01 ); { y:=0.00995033085316808 }

end;{/codecitation}
 


Функция Log10 ( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет логарифм аргумента Х по основанию 10.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Real;
begin

y:= Log10( 100 ); { y:=2 }

end;{/codecitation}
 


Функция Log2 ( X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет логарифм аргумента Х по основанию 2.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Real;
begin

y:= Log2( 8 ); { y:=3 }

end;{/codecitation}
 


Функция LogN( N, X: Extended ): Extended;
Модуль: Math
Описание
Функция вычисляет логарифм аргумента Х по основанию N.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Real;
begin

y:= LogN( 3, 243 ); { y:=5 }

end;{/codecitation}
 


Функция Max( X1, X2 );
Модуль: Math
Описание
Функция сравнивает значение двух чисел и возвращает большее из них.
Варианты вызова функции:

Max( X1, X2: Integer ):Integer;
Max( X1, X2: Int64 ):Int64;
Max( X1, X2: Single ):Single;
Max( X1, X2: Double ):Double;
Max( X1, X2: Extended ):Extended;
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x1, x2, y: Real;
begin

x1:= LogN( 2, 4 ); { x1:=2 }
x2:= LogN( 4, 2 ); { x2:=0.5 }
y:= Max( x1, x2 ); { y := 2 }

end;{/codecitation}
 


Функция Min( X1, X2 );
Модуль: Math
Описание
Функция сравнивает значение двух чисел и возвращает меньшее из них.
Варианты применения функции:

Min( X1, X2: Integer ):Integer;
Min( X1, X2: Int64 ):Int64;
Min( X1, X2: Single ):Single;
Min( X1, X2: Double ):Double;
Min( X1, X2: Extended ):Extended;
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
x1, x2, y: Real;
begin

x1:= LogN( 2, 4 ); { x1:=2 }
x2:= LogN( 4, 2 ); { x2:=0.5 }
y := Min( x1, x2 ); { y :=0.5 }

end;{/codecitation}
 


Функция Pi;
Модуль: System
Описание
Функция возвращает значение числа Пи (3.1415926535897932385).
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
R, L: Real;
begin

R:= 10;
L:= 2*Pi*R; { Вычисляет длину окружности с радиусом R }

end;{/codecitation}
 


Функция Poly (X: Extended;
const Coefficients:
array of Double ): Extended;

Модуль: Math
Описание
Функция вычисляет однородный полином C1+C2X+C3X2+…+CnXn
Coefficients[0] + Coefficients[1]*X + Coefficients[1]*(X**2) + … + Coefficients[N]*(X**N).
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Extended;
c: array of Double;
begin

SetLength( c, 3 );
c[0]:= 10;
c[1]:= 20;
c[2]:= 30;
y:= Poly( 2, c ); { y:= 170 }

end;{/codecitation}
 


Функция Power ( X, Y: Extended ): Extended;
Модуль: Math
Описание
Функция возводит X в степень Y.
Значение аргумента Х должно быть больше нуля, иначе возникнет исключение EInvalidOp. Данная функция аналогична функции IntPower за исключением того, что для Power значение показателя степени Y может превышать MaxInt и иметь нецелочисленный тип.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
Z: Real;
begin

Z:= Power(0.25, 0.5); { Z:=0.5 }

end;{/codecitation}
 


Функция Round ( X: Extended ): Int64;
Модуль: System
Описание
Функция округляет значение аргумента X к ближайшему целому числу.
Если указанное значение аргумента находится ровно посредине между двумя целыми, например 1.5, то число округляется к четному целому, в данном случае к 2. Если результат функции выходит за пределы Int64, то возникает исключение EInvalidOp.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y1, y2, y3: Real;
begin

y1:= Round( 1.4 ); { y1:= 1 }
y2:= Round( 1.5 ); { y2:= 2 }
y3:= Round(-1.5 ); { y3:=-2 }

end;{/codecitation}
 


Функция Sqr ( X: Extended ): Extended;
Модуль: System
Описание
Функция возвращает квадрат аргумента Х.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Integer;
begin

y:= Sqr( 5 ); { y:=25 }

end;{/codecitation}
 


Функция Sqrt ( X: Extended ): Extended;
Модуль: System
Описание
Функция возвращает квадратный корень аргумента Х.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y: Real;
begin

y:= Sqrt( 25 ); { y:=5 }

end;{/codecitation}
 


Функция Trunc ( X: Extended ): Int64;
Модуль: System
Описание
Функция отсекает дробную часть числа.
Возвращаемое значение имеет целочисленный тип.
Если результат функции выходит за пределы Int64, то возникает исключение EInvalidOp.
Пример{codecitation class="brush: pascal; gutter: false;" width="500px"}
var
y1, y2: Int64;
begin

y1:= Trunc( 1.2345 ); { y1:= 1 }
y2:= Trunc( -1.5 ); { y2:=-1 }

end;{/codecitation}