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

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

ГоловнаІнформатика, Компютерні науки → Числові функції - Реферат

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


Реферат на тему:
Числові функції
Числові функції виконують основні математичні операції над цілими та дробовими числами. Користувач може обрати для роботи точну або наближену раціональну арифметику. Для точної раціональної арифметики розмір цілих чисел, чисельників та знаменників обмежений приблизно до 25000 десяткових знаків.
Примітивними числовими функціями є додавання, віднімання, множення та ділення. В мові програмування Лісп вони є n-арними, тобто кількість їхніх аргументів необмежена. Синтаксис числових функцій наступний:
1. (+ ... ). 3. (* ... )
2. ( - ... ) 4. (/ ... )
Функція додавання повертає суму своїх аргументів. Функція віднімання повертає різницю першого аргумента та суми всіх інших аргументів. Функція множення повертає добуток своїх аргументів. Функція ділення повертає частку від ділення першого аргумента та добутку інших аргументів.
$ (+ 2 4 6 7) $ (- 20 3 5 6) $ (* 2 4 6) $ (/ 24 2 2 3)
19 6 48 2
Функції збільшення та зменшення мають наступний синтаксичний вигляд:
1. (ADD1 ). Повертає значення, яке на одиницю більше за аргумент.
2. (SUB1 ). Повертає значення, яке на одиницю менше за аргумент.
3. (INCQ ) Збільшує значення символа на число .
4. (DECQ ) Зменшує значення символа на число .
Якщо функцію додавання (віднімання) одиниці запустити без аргументів, то виникне переривання по помилці: недостатня кількість аргументів. Якщо у функцію INCQ або DECQ передати один аргумент - символ, то збільшення (зменшення) значення символа відбудеться на одиницю. Окрім того, що функції INCQ та DECQ повертають результат арифметичної дії, значення символів, які передаються до них як аргументи, змінюється.
$ (ADD1 6) $ (SUB1 10)
7 9
$ (SETQ S 10) $ (INCQ S 14) $ (DECQ S 4)
10 24 30
Функції MIN та MAX повертають символ з відповідно мінімальним (максимальним) значенням.
1. (MIN ... ). $ (MIN 12 3 45 67) $ (MAX 1 2 5 3)
2. (MAX ... ). 3 5
Числові вирази в Ліспі записуються в префіксній формі. Вираз 3*5+5*7 для обчислення треба подати у вигляді (+ (* 3 5) (* 5 7)), вираз (3+6)*7 - у вигляді (* (+ 3 6) 7).
Функції порівняння менше та більше мають n аргументів.
1. ( < ... ) Повертає істину, якщо < < ... < .
2. ... ) Повертає істину, якщо > > ... > .
3. ( /= ... ) Повертає істину, якщо існують хоча б два числа, які не
дорівнюють одне одному.
До функцій порівняння також відносяться =.
$ (= 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. Функції округлення
(TRUNCATE m n), (ROUND m n), (CEILING m n) (FLOOR m n)
Ці функції використовуються для округлення дробових чисел до цілих. TRUNCATE виконує округлення до ближчого цілого у напрямку нуля. ROUND виконує округлення до ближчого цілого по значенню до m/n. CEILING виконує округлення до ближнього цілого по верхній межі, FLOOR - по нижній межі. Виклик будь-якої функції з двома аргументами ( m n) еквівалентний виклику функції з одним аргументом: ( (/ n m)), де f - будь-яка з наведених чотирьох функцій.
$ (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. Функції остачі
(REM m n), (MOD m n), (DIVIDE m n)
Примітивна функція REM повертає остачу від ділення числа m на n. Функція MOD працює як REM, але повертає модуль остачі. Якщо (TRUNCATE m n) повертає q, а (REM m n) повертає r, то m=q*n+r. Функція (DIVIDE m n) повертає конс, CAR якого дорівнює частці, а CDR - остачі від ділення 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 відповідно від'ємне, 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. Побітові логічні функції
(LOGAND ...), (LOGIOR ...), (LOGXOR ...), (LOGNOT n).
$ (LOGAND 5 7 3) $ (LOGIOR 4 2 1) $ (LOGXOR 5 2 3) $ (LOGNOT 6)
1 7 4 -7
7. Булеві функції
(NOT ), (AND ... ), (OR ... <формаN).
$ (AND (EQL 'as 'as) (< 2 4)) $ (OR NIL (< 4 56)) $ (NOT (EQL 'd 'g))
T T T
8. Зсув
(SHIFT m n) - зсув числа m на n бітів.
$ (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). Ці функції знаходять відповідно найбільший спільний дільник M чисел та найменше спільне кратне.
В файлі irratnal.lsp міститься великий набір ірраціональних та трансцендентних функцій. Аргументи тригонометричних функцій задаються в радіанах.
1. (EXP x) експонента ex
2. (EXPT x y) степінь xy
3. (LOG x y) логарифм logyx. Якщо y не задано, основа вважається рівною e.
4. (LN x) натуральний логарифм
5. (SQRT x) квадратний корінь
6. (ISQRT x) ціла частина з квадратного кореня
7. (SIN x) та (ASIN x) сінус та арксінус
8. (COS x) та (ACOS x) косинус та арккосинус
9. (TAN x) та (ATAN x) тангенс та арктангенс
10. (RANDOM n) генерується натуральне число, менше за n.
Задача 1. Список lst має 100 елементів, які дорівнюють 0 або 1. Написати функцію (CHANGE01 lst), яка повертає список, у якому всі елементи 0 замінені на 1, а 1 - на 0.
Необхідно замість використання умовного оператора застосувати дію X := 1 - X.
(DEFUN CHANGE01 (lst)
((NULL lst) NIL)
(CONS (- 1 (CAR lst)) (CHANGE01 (CDR lst))) )
Задача 2. Змінним a та b присвоєні числа. Записати функцію в одному рядку (не визначати цю функцію), в результаті якої змінні обмінюються своїми значеннями. Використовувати допоміжні змінні забороняється.
$ (SETQ a 2 b 3) // a = 2, b = 3
$ (SETQ a (+ a b) b (- a b) a (- a b)) // a = 3, b = 2
Задача 3. Відомо, що lst - список, який містить неспадну послідовність чисел. Функція (NUM lst) повинна обчислювати кількість різних чисел у ньому.
(DEFUN NUM (lst)
((NULL (CDR lst)) 1)
((/= (CAR lst) (CADR lst)) (+ 1 (NUM (CDR lst))))
(NUM (CDR lst)) )
Задача 4. Списки lst1 та lst2 містять строго зростаючі послідовності чисел. Знайти кількість спільних елементів у цих масивах. Часова оцінка алгоритму повинна дорівнювати O(K+L), де K та L - довжини списків lst1 та lst2 відповідно.
(DEFUN COMELEMENT (lst1 lst2)
((OR (NULL lst1) (NULL lst2)) 0)
(( (CAR lst1) (CAR lst2)) (COMELEMENT lst1 (CDR lst2)))
(+ 1 (COMELEMENT (CDR lst1) (CDR lst2))) )
Контрольні конструкції
MuLisp використовує неявну форму PROGN для обчислення форм, які складають тіло функції. Окрім того, інтерпретаторmuLіsp розпізнає в тілі функції неявні COND конструкції. Неявні COND-и роблять визначення функцій читабельними, короткими та ефективними. Спеціальні форми забезпечують контроль за обчисленням форм в процесі виконання програм. Розглянемо деякі контрольні інструкції.
1. QUOTE повертає об'єкт без його обчислення. QUOTE може використовуватися для запобігання обчислення значень констант, які передаються як аргумент функції, що обчислюється.
$ (SETQ a 125)
$ a $ (QUOTE a) $ (CAR (CONS 4 7)) $ (CAR '(CONS 4 7))
125 a 4 CONS
2. LOOP ... Повторно обчислює форми у послідовному порядку доти, поки не зустрінеться неявний COND з предикатом, не рівним NIL. Розглянемо функцію LENGTH обчислення
Loading...

 
 

Цікаве