|
|
|
Функция ACS принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение арккосинуса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Если значение аргумента превышает
по модулю единицу, выдается сообщение, а результат устанавливается равным
атому ERRSTATE
Примеры:
(acs -1)
==> 3.14159265358979
(acs 1)
==> 0.0
(acs 0.5)
==> 1.0471975511966
(acs 1.5)
Модуль аргумента ACS превышает 1
==> ERRSTATE
(* 4 5 (acs 3))
Модуль аргумента ACS превышает 1
==> ERRSTATE
|
В последнем примере производится попытка вычислить арккосинус от 3. Это приводит к ошибке.
Возникший в качестве промежуточного результата атом ERRSTATE "поглощает"
результаты всех предыдущих вычислений. Конечный результат равен ERRSTATE.
|
|
|
|
Функция ASN принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение арксинуса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Если значение аргумента превышает
по модулю единицу, выдается сообщение, а результат устанавливается равным
атому ERRSTATE
Примеры:
(asn 1)
==> 1.5707963267949
(asn -1)
==> -1.5707963267949
(asn 0)
==> 0.0
(asn 1.5)
Модуль аргумента ASN превышает 1
==> ERRSTATE
(* 5 6 (asn 6) 5)
Модуль аргумента ASN превышает 1
==> ERRSTATE
|
В последнем примере производится попытка вычислить арксинус от 6. Это приводит к ошибке.
Возникший в качестве промежуточного результата атом ERRSTATE "поглощает"
результаты всех предыдущих вычислений. Конечный результат равен ERRSTATE.
|
|
|
|
Функция ATN принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение арктангенса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Примеры:
(atn 1)
==> 0.785398163397448
(asn -1)
==> -0.785398163397448
(atn 0)
==> 0.0
|
|
|
|
|
Функция CH принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение гиперболического косинуса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Используется прямое выражение гиперболического
косинуса через экспоненту:
ch(x)=0.5(ex+e-x)
Если значение аргумента превышает 300, возникает переполнение. Примеры:
(ch 1)
==> 1.54308063481524
(ch -1)
==> 1.54308063481524
(ch 100)
==> 1.34405857090807E+43
(ch 400)
Переполнение при вычислении CH
==> ERRSTATE
|
В приведенном выше примере хорошо видно, что гиперболический косинус (как и его тригонометрический брат)
явлется четной функцией.
|
|
|
|
Функция COS принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение косинуса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Аргумент должен выражаться в радианах.
Примеры:
(cos 0)
==> 1.0
(cos _Pi)
==> -1.0
(cos -_Pi)
==> -1.0
(cos (* 0.5 _Pi))
==> -3.49148336110938E-15
|
Последний пример дает величину, порядка 10-15, что практически есть нуль.
Не следует забывать, что операции с плавающей точкой выполняются с некоторой погрешностью.
То же относится и к вычислению математических функций.
|
|
|
|
Функция EXP принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение экспоненты от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Аргумент не должен превышать 300.
Примеры:
(exp 0)
==> 1.0
(exp 1)
==> 2.71828182845905
(exp -1)
==> 0.367879441171442
(exp 400)
Переполнение при вычислении EXP
==> ERRSTATE
|
Следует обратить внимание на то, что в числе встроенных функций HomeLisp
имеется функция EXPT, позволяющая вычислить Xy (при разумных
значениях X и y). В принципе можно вычислить ex с использованием
EXPT, введя (EXPT _E x). Функция EXP сделает это же действие быстрее.
|
|
|
|
Функция LOG принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение натурального логарифма от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Аргумент должен быть положительным числом.
Примеры:
(log 1)
==> 0.0
(log 5)
==> 1.6094379124341
(log 50)
==> 3.91202300542815
(log _E)
==> 1.0
(log 0)
Попытка вычислить логарифм неположительного числа
==> ERRSTATE
(log -100)
Попытка вычислить логарифм неположительного числа
==> ERRSTATE
|
При необходимости вычислить логарифм по основанию, отличному от e,
можно воспользоваться формулой:
logaX = (logbX)/(logba)
В частности, для вычисления десятичного логарифма подойдет функция lg,
определение которой вместе с примерами вызова приводится ниже.
(defun lg (x) (/ (log x) (log 10)))
==> lg
(lg 1000)
==> 3.0
(lg 10)
==> 1.0
(lg 0.01)
==> -2.0
|
|
|
|
|
Функция RND принимает единственный аргумент числового типа (FIXED
или FLOAT). Функция выдает случайное число из диапазона [0,X],
где X - значение аргумента. Если аргумент имеет тип FIXED, то
и результат будет иметь тип FIXED. Соответственно, при вызове функции
с аргументом типа FLOAT, результат будет иметь тип FLOAT.
Примеры:
(rnd 1)
==> 0
(rnd 1)
==> 1
(rnd 1)
==> 1
(rnd 1)
==> 0
(rnd 1.0)
==> 0.423560559749603
(rnd 1.0)
==> 0.441152453422546
(rnd 1.0)
==> 0.921030580997467
(rnd 1.0)
==> 0.320934772491455
(rnd 1.0)
==> 0.290106475353241
(rnd 2.0)
==> 1.62687706947327
(rnd 100.0)
==> 13.8400852680206
(rnd 100)
==> 92
|
Функция RND вызывает соответствующую функцию Visual Basic.
Предварительной рандомизации не требуется - она выполняется автоматически
при инициализации среды HomeLisp.
|
|
|
|
Функция ROUND принимает два аргумента: первый должен иметь тип FLOAT,
а второй - FIXED. Функция выполняет округление значения
первого аргумента, оставляя количество десятичных знаков, заданное значением
второго аргумента.
Примеры:
(round 567.56 1)
==> 567.6
(round 567.56 0)
==> 568.0
|
|
|
|
|
Функция SH принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение гиперболического синуса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Используется прямое выражение гиперболического
синуса через экспоненту:
sh(x)=0.5(ex-e-x)
Если значение аргумента превышает 300, возникает переполнение. Примеры:
(sh 1)
==> 1.1752011936438
(sh -1)
==> -1.1752011936438
(sh 100)
==> 1.34405857090807E+43
(sh 400)
Переполнение при вычислении SH
==> ERRSTATE
|
В приведенном выше примере хорошо видно, что гиперболический синус (как и его тригонометрический брат)
явлется нечетной функцией.
|
|
|
|
Функция SIGN принимает один аргумент типа FIXED или FLOAT.
Для положительных значений аргумента функция возвращает 1, для отрицательных
-1, а для нулевых - 0. Тип результата совпадает с типом аргумента.
Примеры:
(sign 5)
==> 1
(sign -5)
==> -1
(sign 0)
==> 0
(sign 1.0)
==> 1.0
(sign -1.0)
==> -1.0
(sign -0.0)
==> 0.0
|
|
|
|
|
Функция SIN принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение косинуса от значения аргумента.
Тип значения, разумеется, всегда FLOAT. Аргумент должен выражаться в радианах.
Примеры:
(sin 0)
==> 0.0
(sin (* 0.5 _pi))
==> 1.0
(sin _pi)
==> 1.22460635382238E-16
|
Последний пример дает величину, порядка 10-16, что практически есть нуль.
Не следует забывать, что операции с плавающей точкой выполняются с некоторой погрешностью.
То же относится и к вычислению математических функций.
|
|
|
|
Функция SQR принимает единственный аргумент числового типа (FIXED
или FLOAT). Она вычисляет значение квадратного корня от значения аргумента.
Тип значения, разумеется, всегда FLOAT.
Примеры:
(sqr 25)
==> 5.0
(sqr 625)
==> 25.0
(sqr 2)
==> 1.4142135623731
(sqr 3)
==> 1.73205080756888
(sqr -9)
Попытка извлечь квадратный корень из отрицательного числа
==> ERRSTATE
|
Следует обратить внимание на то, что в числе встроенных функций HomeLisp
имеется функция EXPT, позволяющая вычислить Xy (при разумных
значениях X и y). В принципе можно вычислить квадратный корень от x с использованием
EXPT, введя (EXPT x 0.5). Функция SQR сделает это же действие быстрее.
|