Как сделать логарифм в паскале
Операции div и mod определены только для целочисленных операндов. Приведем пример их использования:
var y , c , n : integer ;
Здесь переменная c получит значение 20 , а n -- значение 9 .
Примеры арифметических выражений мы приведем после рассмотрения стандартных функций языка Паскаль.
Стандартные функции служат для выполнения элементарных математических расчетов, часто требуемых при написании программ. Разработчики Паскаля стремились сделать его программное ядро максимально компактным, поэтому в него не вошел ряд функций, обычно имеющихся в других языках, таких, как вычисление максимума и минимума, возведение числа в произвольную степень и др. Физически коды стандартных функций хранятся в стандартной библиотеке Паскаля -- файле с именем turbo . tpl . Все функции оформляются одинаково: после имени функции следует ее аргумент, заключенный в круглые скобки. Если аргументов несколько, они разделяются запятыми. Информация об основных стандартных функциях представлена в табл. 3.2.
Табл. 3.2. Стандартные функции языка Паскаль
Запись на Паскале
аргумента и результата
Модуль аргумента x
Integer (I) или Real (R)
Квадрат аргумента x
аргумент - I или R , результат - r
Остальные тригонометрические функции выражаются через эти
аргумент - I или R , результат - R
Экспонента и натуральный логарифм
аргумент - I или R , результат - R
Квадратный корень от аргумента x
аргумент - I или R , результат - R
Функция без аргументов, вернет число p
Функция отбрасывает дробную часть аргумента, аргумент не округляется
аргумент R, результат I
дробную часть своего
Округление вещественного числа до ближайшего целого
аргумент R, результат I
В табл. 3.2 x обозначает любую подходящую по типу переменную, либо результат вычисления выражения соответствующего типа, либо соответствующий по типу результат, вычисленный другой стандартной функцией.
Приведем примеры арифметических выражений.
1. Возвести величину x в пятую степень. Выражение может быть записано как x * x * x * x * x или sqr ( x )* sqr ( x )* x или sqr ( sqr ( x ))* x , последнее показывает, что результаты одних функций могут быть аргументами других -- это называют вложением функций. Разумеется, тип результата, возвращаемый вложенной функцией, должен быть подходящим для аргумента внешней функции.
2. Возвести величину a в произвольную степень x . Так как в Паскале нет функции возведения в произвольную степень, воспользуемся формулой a x = e x * ln a :
Обратите внимание, что все круглые скобки в выражении должны быть парными. Другой пример применения этого способа: = exp (1/3 * ln ( x )) .
3. Вычислить sin 2 x . Запись на Паскале: sqr ( sin ( x )) . Сравните с выражением sin x 2 , которое записывается как sin ( sqr ( x )) .
4. Вычислить k = tg ( t ). Т. к. функции тангенса в Паскале нет, распишем тангенс в виде k := sin ( t )/ cos ( t ); .
5. При необходимости изменить обычное старшинство операций в записи выражения используются дополнительные круглые скобки. Например, правильная запись выражения выглядит как y :=( a + b )/2; . Запись y := a + b /2; неверна, т. к. это означает .
6. В записи выражений нельзя пропускать знак *, как часто делается в математике: b 2 -4 ac записывается как sqr ( b )-4* a * c . Нельзя писать sin * x или sin x , после имени функции может следовать только ее аргумент в круглых скобках.
Тип выражения определяется старшим из типов входящих в него операндов (т. е., стандартных функций, переменных, констант). Старшинство типов можно определить по табл. 2.1, напомню, что в первой строке таблицы находится самый младший тип.
Например, для переменных
var i , j : integer ; f : real ;
выражение i +4* j имеет целый тип, и его результат можно записать в целую переменную. Выражение f + i *0.5 дает вещественный, результат, который должен быть записан в вещественную переменную.
Операция деления / в Паскале всегда дает вещественное число. Для деления целых чисел с целым результатом (остаток отбрасывается) используйте div , для взятия остатка от деления двух целых -- mod .
Пользовательские процедуры и функции. При написании программ со сложными математическими вычислениями становится очевидным, что математических функций встроенных в Turbo Pascal, явно недостаточно. Нет, например такой функции, как y = x n . В процессе вычислений можно конечно задействовать такую формулу возведения в степень: y := exp(n*(ln(x)); но при частом использовании такой формулы в программе легко запутаться, особенно если нужно использовать разные аргументы.
Turbo Pascal предусматривает создание пользовательских процедур и функций. Рассмотрим создание функции возведения числа х в произвольную степень n (n >=0). Функция на паскале должна быть объявлена до начала программы, то есть до оператора begin.
Функция описывается следующим образом:
function имя функции (аргумент : тип аргумента) : возвращаемый тип данных;
var
раздел локальных переменных (если нужен);
begin
тело функции;
end;
В нашем случае с вычислением степеней, функция будет выглядеть так:
function stepen(x,n: real): real;
begin
stepen:= exp(n*ln(x));
end;
Теперь, напишем программу с использованием нашей функции.
uses crt;
function stepen(x,n: real): real;
begin
stepen:= exp(n*ln(x));
end;
var
rez,osn, pok: real;
begin
clrscr;
write('Wwedi osnowanie');
readln(osn);
write('Wwedi pokazatel');
readln(pok);
rez:= stepen(osn,pok);
writeln('rezultat= ',rez:0:2);
readln;
end.
Результат работы программы:
Используя уже написанные пользовательские функции можно создавать другие функции. Например, в нашем случае, мы можем написать функцию извлечения корня с произвольным показателем k (k <> 0) из любого числа q.
Известно, что q 1/k = q Исходя из этих соображений напишем функцию извлечения корня:
function koren(q,k: real): real;
var
kr: real;
begin
kr:= 1 / k;
koren:= stepen(q,kr);
end;
Так как, функция koren, использует функцию stepen, то в тексте программы, функция koren должна быть описана после описания функции stepen. Дополним и изменим нашу программу, с учётом вычисления не степени, а корня:
Процедуры в паскале, то-же, что и функции, но процедуры не возвращают никаких значений. Описываются процедуры так же, как и функции, в начале программы:
Язык:
Русский
English
Возвращает натуральный логарифм аргумента.
Объявление
Function Ln(X : Real) : Real;
Режим
Windows, Real, Protected
Замечания
Возвращает натуральный логарифм вещественного выражения X.
Смотри также
Пример
Язык:
Русский
English
begin
E := Exp ( 1.0 ) ;
WriteLn ( 'Ln(e) = ' , Ln (E)) ;
end .
В таблице приведены основные математические операции Турбо Паскаль (Delphi, Lazarus)..
Символ операции | Название операции | Пример |
* | умножение | 2*3 (результат: 6) |
/ | деление | 30/2 (результат: 1.5E+01) |
+ | сложение | 2+3 (результат: 5) |
- | вычитание | 5-3 (результат: 2) |
div | целочисленное деление | 5 div 2 (результат: 2) |
mod | остаток от деления | 5 mod 2 (результат: 1) |
Операции отношения
К операциям отношения в Турбо Паскаль относятся такие операции, как:
Порядок выполнения операций переопределить можно с помощью скобок. Например 2*5+10 равно 20, но 2*(5+10) равно 30.
Основные математические функции
В этом разделе приведены основные математические функции, встроенные в системную библиотеку Турбо Паскаль (Delphi, Lazarus).
Abs(X) Возвращает абсолютное значение числа X. Cos(X), Sin(X) Возвращает косинус (синус) числа X, где X - угол в радианах.
Функций тангенс и котангенс в Турбо Паскале нет. Для их вычисления используйте выражение sin(x)/cos(x) (или cos(x)/sin(x) для котангенса).
ArcTan(X) Возвращает арктангенc числа X. Exp(X) Возвращает число, равное e в степени X. Ln(x) Возвращает число, равное натуральному логарифму от числа X. Pi Число Пи. Sqr(X) Возвращает число, равное квадрату числа X.
Функции возведения в произвольную степень в Турбо Паскале нет. Используйте многократное умножение для возведения в целочисленную степень, либо функции Exp и Ln для возведения в вещественную степень.
Sqrt(X) Возвращает число, равное квадратному корню из числа X. Trunc(X) Возвращает число, равное целой части числа X. (Происходит отбрасывание дробной части числа X. Результат выполнения имеет тип Longint). Frac(X) Возвращает число, равное дробной части числа X. Int(X) Возвращает число, равное целой части числа X. Результат выполнения функции - real. Round(X) Функция округляет число X. Возвращаемое значение имеет тип Longint. Random(X) Возвращает случайное целое число в диапазоне 0..X. Если аргумент опущен (Random), то возвращается случайное вещественное число от 0 до 1.
Перед использованием random в программах рекомендуется сначала инициализировать генератор псевдослучайных чисел процедурой Randomize. В противном случае при каждом запуске программы будет генерироваться одна и та же последовательность случайных чисел.
Пример. Вывод на экран 5 случайных чисел в диапазоне -10..10.
var i: integer; begin randomize; for i:=1 to 5 do writeln(random(21)-10); end. Inc(X,Y) Увеличивает значение числа X на Y. Если число Y не указано, то увеличение происходит на 1. Dec(X,Y) Уменьшает значение числа X на Y. Если число Y не указано, то уменьшение происходит на 1.
Сводка функций модуля Math
ArcCos Арккосинус
ArcCosh Гиперболический арккосинус
ArcSin Арксинус
ArcSinh Гиперболический арксинус
ArcTahn Гиперболический арктангенс
ArcTan2 Арктангенс с учетом квадранта (функция ArcTan, не учитывающая квадрант, находится в модуле System)
Cosh Гиперболический косинус
Cotan Котангенс
CycleToRad Преобразование циклов в радианы
DegToRad Преобразование градусов в радианы
GradToRad Преобразование градов в радианы
Hypot Вычисление гипотенузы прямоугольного треугольника по длинам катетов
RadToCycle Преобразование радианов в циклы
RadToDeg Преобразование радианов в градусы
RadToGrad Преобразование радианов в грады
SinCos Вычисление синуса и косинуса угла. Как и в случае SumAndSquares и MeanAndStdDev, одновременная генерация обеих величин происходит быстрее
Sinh Гиперболический синус
Tan Тангенс
Tanh Гиперболический тангенс
Арифметические функции и процедуры
Ceil Округление вверх
Floor Округление вниз
Frexp Вычисление мантиссы и порядка заданной величины
IntPower Возведение числа в целую степень. Если вы не собираетесь пользоваться экспонентами с плавающей точкой, желательно использовать эту функцию из-за ее скорости
Ldexp Умножение X на 2 в заданной степени
LnXP1 Вычисление натурального логарифма X+1. Рекомендуется для X, близких к нулю
LogN Вычисление логарифма X по основанию N
Log10 Вычисление десятичного логарифма X
Log2 Вычисление двоичного логарифма X
Power Возведение числа в степень. Работает медленнее IntPower, но для операций с плавающей точкой вполне приемлемо.
Финансовые функции и процедуры
DoubleDecliningBalance Вычисление амортизации методом двойного баланса
FutureValue Будущее значение вложения
InterestPayment Вычисление процентов по ссуде
InterestRate Норма прибыли, необходимая для получения заданной суммы
InternalRateOfReturn Вычисление внутренней скорости оборота вложения для ряда последовательных выплат
NetPresentValue Вычисление чистой текущей стоимости вложения для ряда последовательных выплат с учетом процентной
ставки
NumberOfPeriods Количество периодов, за которое вложение достигнет заданной величины
Payment Размер периодической выплаты, необходимой для погашения ссуды, при заданном числе периодов, процентной ставке, а также текущем и будущем значениях ссуды
PeriodPayment Платежи по процентам за заданный период
PresentValue Текущее значение вложения
SLNDepreciation Вычисление амортизации методом постоянной нормы
SYDepreciation Вычисление амортизации методом весовых коэффициентов
Статистические функции и процедуры
MaxIntValue Максимальное значение в наборе целых чисел.
MaxValue Максимальное значение в наборе чисел.
Mean Среднее арифметическое для набора чисел
MeanAndStdDev Одновременное вычисление среднего арифметического и стандартного отклонения для набора чисел. Вычисляется быстрее, чем обе величины по отдельности
MinIntValue Минимальное значение в наборе целых чисел.
MinValue Минимальное значение в наборе чисел.
MomentSkewKurtosis Статистические моменты порядков с первого по четвертый, а также асимметрия (skew) и эксцесс (kurtosis) для набора чисел
Norm Норма для набора данных (квадратный корень из суммы квадратов)
PopnStdDev Выборочное стандартное отклонение. Отличается от обычного стандартного отклонения тем, что при вычислениях используется выборочное значение дисперсии, PopnVariance (см. ниже)
RandG Генерация нормально распределенных случайных чисел с заданным средним значением и среднеквадратическим отклонением
StdDev Среднеквадратическое отклонение для набора чисел
Sum Сумма набора чисел
SumsAndSquares Одновременное вычисление суммы и суммы квадратов для набора чисел. Как и в других функциях модуля Math, обе величины вычисляются быстрее, чем по отдельности
SumInt Сумма набора целых чисел.
SumOfSquares Сумма квадратов набора чисел
Читайте также: