WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаМатематика, Геометрія, Статистика → Числовi функцiї - Реферат

Числовi функцiї - Реферат


Реферат на тему:
Числовi функцiї
Числовi функцiї виконують основнi математичнi операцiї над цiлими та дробовими числами. Користувач може обрати для роботи точну або наближену рацiональну арифметику. Для точної рацiональної арифметики розмiр цiлих чисел, чисельникiв та знаменникiв обмежений приблизно до 25000 десяткових знакiв.
Примiтивними числовими функцiями є додавання, вiднiмання, множення та дiлення. В мовi програмування Лiсп вони є n-арними, тобто кiлькiсть їхнiх аргументiв необмежена. Синтаксис числових функцiй наступний:
1. (+ ... ). 3. (* ... )
2. ( - ... ) 4. (/ ... )
Функцiя додавання повертає суму своїх аргументiв. Функцiя вiднiмання повертає рiзницю першого аргумента та суми всiх iнших аргументiв. Функцiя множення повертає добуток своїх аргументiв. Функцiя дiлення повертає частку вiд дiлення першого аргумента та добутку iнших аргументiв.
$ (+ 2 4 6 7) $ (- 20 3 5 6) $ (* 2 4 6) $ (/ 24 2 2 3)
19 6 48 2
Функцiї збiльшення та зменшення мають наступний синтаксичний вигляд:
1. (ADD1 n). Повертає значення, яке на одиницю бiльше за аргумент.
2. (SUB1 n). Повертає значення, яке на одиницю менше за аргумент.
3. (INCQ sym n) Збiльшує значення символа sym на число n.
4. (DECQ sym n) Зменшує значення символа sym на число n.
Якщо функцiю додавання (вiднiмання) одиницi запустити без аргументiв, то виникне переривання по помилцi: недостатня кiлькiсть аргументiв. Якщо у функцiю INCQ або DECQ передати один аргумент - символ, то збiльшення (зменшення) значення символа вiдбудеться на одиницю. Окрiм того, що функцiї INCQ та DECQ повертають результат арифметичної дiї, значення символiв, якi передаються до них як аргументи, змiнюється.
$ (ADD1 6) $ (SUB1 10)
7 9
$ (SETQ S 10) $ (INCQ S 14) $ (DECQ S 4)
10 24 30
Функцiї MIN та MAX повертають символ з вiдповiдно мiнiмальним (максимальним) значенням.
1. (MIN ... ). $ (MIN 12 3 45 67) $ (MAX 1 2 5 3)
2. (MAX ... ). 3 5
Числовi вирази в Лiспi записуються у префiкснiй формi. Вираз 3 * 5 + 5 * 7 для обчислення треба подати у виглядi (+ (* 3 5) (* 5 7)), вираз (3 + 6) * 7 - у виглядi (* (+ 3 6) 7).
Функцiї порiвняння менше та бiльше мають n аргументiв.
1. ( < n1 n2 ... nM) Повертає iстину, якщо n1 < n2 < ... n1 n2 ... nM) Повертає iстину, якщо n1 > n2 > ... > nM.
3. ( /= n1 n2 ... nM) Повертає iстину, якщо iснують хоча б два числа, якi не дорiвнюють одне одному.
До функцiй порiвняння також вiдносяться =.
$ (= 5 3 3 2) $ ( /= 4 4 5)
T T T
$ (< 6 6 8 15) $ (<= 6 6 8 15) $ ( /= 4 4 4)
NIL T NIL
1. Функцiї округлення
(TRUNCATE m n), (ROUND m n), (CEILING m n) (FLOOR m n)
Цi функцiї використовуються для округлення дробових чисел до цiлих. TRUNCATE виконує округлення до ближчого цiлого у напрямку нуля. ROUND виконує округлення до ближчого цiлого по значенню до m/n. CEILING виконує округлення до ближнього цiлого по верхнiй межi, FLOOR - по нижнiй межi. Виклик будь-якої функцiї з двома аргументами (f m n) еквiвалентний виклику функцiї з одним аргументом: (f (/ n m)), де f - будь-яка з наведених чотирьох функцiй.
$ (TRUNCATE 6/4) $ (TRUNCATE -6/4) $ (CEILING 9 4) $ (CEILING -9 4)
1 -1 3 -2
$ (FLOOR 6 4) $ (FLOOR -6 4) $ (FLOOR 6/4) $ (FLOOR -6/4)
1 -2 1 -2
2. Функцiї остачi
(REM m n), (MOD m n), (DIVIDE m n)
Примiтивна функцiя REM повертає остачу вiд дiлення числа m на n. Функцiя MOD працює як REM, але повертає модуль остачi. Якщо (TRUNCATE m n) повертає q, а (REM m n) повертає r, то m=q*n+r. Функцiя (DIVIDE m n) повертає конс, CAR якого дорiвнює частцi, а CDR - остачi вiд дiлення m на n.
$ (REM 6 4) $ (DIVIDE 7 2) $ (REM -6 4) $ (MOD 6 4)
2 (3 . 1) -2 2
3. Знак числа
(SIGNUM n)
Повертає значення -1, 0 або 1 якщо n вiдповiдно вiд'ємне, 0, або додатнє.
4. Модуль числа
(ABS n) - модуль числа n.
5. Чисельник та знаменник
(NUMERATOR n), (DENOMINATOR n) - чисельник та знаменник числа n.
$ (signum -5/3) $ (abs -5/3) $ (numerator 10/8) $ (denominator 10/8 )
-1 5/3 5 4
6. Побiтовi логiчнi функцiї
(LOGAND n1 n2 ... nM), (LOGIOR n1 n2 ... nM), (LOGXOR n1 n2 ... nM), (LOGNOT n).
$ (LOGAND 5 7 3) $ (LOGIOR 4 2 1) $ (LOGXOR 5 2 3) $ (LOGNOT 6)
1 7 4 -7
7. Булевi функцiї
(NOT об'єкт), (AND форма1 форма2 ... формаN), (OR форма1 форма2 ... формаN).
$ (AND (EQL 'as 'as) (< 2 4)) $ (OR NIL (< 4 56)) $ (NOT (EQL 'd 'g))
T T T
8. Зсув.
(SHIFT m n) - зсув числа m на n бiтiв.
$ (SHIFT 3 1) $ (SHIFT 3 -1) $ (GCD 24 66 600) $ (LCM 24 66 600)
6 1 6 6600
9. НСД, НСК.
(GCD n1 n2 ... nM), (LCM n1 n2 ... nM).
Цi функцiї знаходять вiдповiдно найбiльший спiльний дiльник M чисел та найменше спiльне кратне.
Аpифметичнi задачi
Задача 1. Список lst має 100 елементiв, якi дорiвнюють 0 або 1. Написати функцiю (CHANGE01 lst), яка повертає список, у якому всi елементи 0 замiненi на 1, а 1 - на 0. Необхiдно замiсть використання умовного оператора застосувати дiю X := 1 - X.
(DEFUN CHANGE01 (lst)
((NULL lst) NIL)
(CONS (- 1 (CAR lst)) (CHANGE01 (CDR lst))) )
Задача 2. Змiнним a та b присвоєнi числа. Записати функцiю в одному рядку (не визначати цю функцiю), в результатi якої змiннi обмiнюються своїми значеннями. Використовувати допомiжнi змiннi забороняється.
$ (SETQ a 2 b 3) // a = 2, b = 3
$ (SETQ a (+ a b) b (- a b) a (- a b)) // a = 3, b = 2
Задача 3. Вiдомо, що lst - список, який мiстить неспадну послiдовнiсть чисел. Функцiя (NUM lst) повинна обчислювати кiлькiсть рiзних чисел у ньому.
(DEFUN NUM (lst)
((NULL (CDR lst)) 1)
((/= (CAR lst) (CADR lst)) (+ 1 (NUM (CDR
Loading...

 
 

Цікаве