ЛИСП-реализация основных способов вычисления гамма-функции
Рисунок 7 — Входные данные. Вычисление гамма-функции для положительных целых чисел Рисунок 8 — Выходные данные. Вычисление гамма-функции для положительных целых чисел Пример 2. Выделяют особый класс функций, представимых в виде собственного либо несобственного интеграла, который зависит не только от формальной переменной, а и от параметра. Рисунок 9 — Входные данные. Вычисление гамма-функции для… Читать ещё >
ЛИСП-реализация основных способов вычисления гамма-функции (реферат, курсовая, диплом, контрольная)
СОДЕРЖАНИЕ Введение
1. Постановка задачи
- 2. Математические и алгоритмические основы решения задачи
- 2.1 Понятие гамма-функции
- 2.2 Вычисление гамма функции
- 3. Функциональные модели и блок-схемы решения задачи
- 4. Программная реализация решения задачи
- 5. Пример выполнения программы
- Заключение
Список использованных источников
и литературы
Выделяют особый класс функций, представимых в виде собственного либо несобственного интеграла, который зависит не только от формальной переменной, а и от параметра.
Такие функции называются интегралами зависящими от параметра. К их числу относится гамма функции Эйлера.
Гамма функция представляется интегралом Эйлера второго рода:
.
Гамма-функция расширяет понятие факториала на поле комплексных чисел. Обычно обозначается ?(z).
Была введена Леонардом Эйлером, а своим обозначением гамма-функция обязана Лежандру.
Через гамма-функции выражается большое число определённых интегралов, бесконечных произведений и сумм рядов.
1. Постановка задачи Требуется реализовать основные способы вычисления гамма-функции:
1. Гамма-функции для целых положительных n равна Г (n) = (n — 1)! = 1· 2… (n — 1). (1)
2. Для x>0 гамма-функция получается из ее логарифма взятием экспоненты.
. (2)
3. Гамма-функции для ряда точек:
(3)
Пример 1.
Вычислить гамма-функции Г (6).
Решение:
Так как 6 — положительное целое число, воспользуемся формулой (1):
Г (6) =(6−1)! = 5! = 120
Ответ: 120.
Пример 2.
Вычислить гамма-функции Г (0,5).
Решение:
Воспользуемся формулой (2):
.
.
Ответ: .
Пример 3.
Вычислить гамма-функции Г (1,5).
Решение:
Воспользуемся формулой (3):
y = 1.5 + 2 = 3.5.
.
Ответ: .
2. Математические и алгоритмические основы решения задачи
2.1 Понятие гамма-функции Гамма функцию определяет интеграл Эйлера второго рода
(a) = (2.1)
сходящийся при .
Рисунок 1. График гамма-функции действительного переменного Положим =ty, t > 0, имеем
(a) =
и после замены, через и t через 1+t, получим
Умножая это равенство и интегрируя по t и пределах от 0 до, имеем:
или после изменения в правой части порядка интегрирования, получаем:
откуда
(2.2)
заменяя в (2,1), на и интегрируем по частям получаем рекурентною формулу
(2.3)
так как Рисунок 2. График модуля гамма-функции на комплексной плоскости При целом имеем
(2.4)
то есть при целых значениях аргумента гамма-функция превращается в факториал, порядок которого на единицу меньше взятого значения аргумента. При n=1 в (2.4) имеем
2.2 Вычисление гамма функции Для вычисления гамма-функции используется аппроксимация логарифма гамма-функции. Сама же гамма вычисляется через него.
Для аппроксимации гамма-функции на интервале x>0 используется формула (для комплексных z) такого вида:
.
Она похожа на аппроксимацию Стирлинга, но в ней имеется корректирующая серия. Для значений g=5 и n=6, проверено, что величина погрешности eps не превышает. Кроме того, погрешность не превышает этой величины на всей правой половине комплексной плоскости: Re z > 0.
Для получения действительной гамма-функции на интервале x>0 используется рекуррентная формула Gam (z+1)=z*Gam (z) и вышеприведенная аппроксимация Gam (z+1). Также можно заметить, что удобнее аппроксимировать логарифм гамма-функции, чем ее саму.
Во-первых, при этом потребуется вызов только одной математической функции — логарифма, а не двух — экспоненты и степени (последняя все равно использует вызов логарифма), во-вторых, гамма-функция — быстро растущая для больших x, и аппроксимация ее логарифмом снимает вопросы переполнения.
Для аппроксимации LnGam () — логарифма гамма-функции — получается формула:
Значения коэффициентов Ck являются табличными данными (Таблица 1).
k | C | |
2.5 066 282 746 310 005 | ||
1.190 015 | ||
76.18 009 172 947 146 | ||
— 86.50 532 032 941 677 | ||
24.1 409 824 083 091 | ||
— 1.231 739 572 450 155 | ||
0.120 865 097 386 6179e-2 | ||
— 0.539 523 938 4953e-5 | ||
Таблица 1. Значения коэффициентов Ck
Сама гамма-функция получается из ее логарифма взятием экспоненты. .
3 Функциональные модели и блок-схемы решения задачи Функциональные модели и блок-схемы решения задачи представлены на рисунке 3, 4, 5, 6.
Условные обозначения:
§ X — параметр функции;
§ RS — инкремент;
§ GN — список коэффициентов;
§ Y — вспомогательная переменная;
§ RES — результат вычисления гамма-функции;
§ GAM — временная переменная, содержащая вычисление гамма-функции.
Рисунок 3 — Функциональная модель решения задачи для функции GAMMA
Рисунок 4 — Функциональная модель решения задачи для функции GAMMA_ WHOLE
Рисунок 5 — Блок-схема решения задачи для поиска логарифма гамма-функции GAMMA_LN
Рисунок 6 — Блок-схема решения задачи для поиска логарифма гамма-функции GAMMA_POINT
4. Программная реализация решения задачи
;СПИСОК КОЭФФИЦИЕНТОВ
(SETQ CN '(2.5 066 282 746 310 005 1.190 015 76.18 009 172 947 146 -86.50 532 032 941 677 24.1 409 824 083 091
— 1.231 739 572 450 155 0.120 865 097 386 6179e-2 -0.539 523 938 4953e-5))
;ЛОГАРИФМ ГАММА ФУНКЦИИ
(DEFUN GAMMA_LN (X)
(SETQ SER (CADR CN))
(SETQ L (CDDR CN))
(SETQ Y X)
(DO
((J 2))
((>= J 8))
(SETQ Y (+ Y 1))
(SETQ CO (CAR L))
(SETQ SER (+ SER (/ CO Y)))
(SETQ L (CDR L))
(SETQ J (+ J 1))
)
(SETQ Y (+ X 5.5))
(SETQ Y (- Y (* (+ X 0.5) (LOG Y))))
(SETQ Y (+ (* -1 Y) (LOG (* (CAR CN) (/ SER X)))))
)
;ВЫЧИСЛЕНИЕ ГАММА-ФУНКЦИИ ЧЕРЕЗ ЕЕ ЛОГАРИФМ
;ГАММА ДЛЯ ПОЛОЖИТЕЛЬНЫХ АРГУМЕНТОВ
(DEFUN GAMMA (X)
(EXP (GAMMA_LN X))
)
;ГАММА ДЛЯ ЦЕЛЫХ ЧИСЕЛ
(DEFUN GAMMA_WHOLE (X)
(SETQ X (- X 1))
(DO
((RES 1) (RS 1))
((EQL X 0) RS)
(SETQ RS (* RES RS))
(SETQ X (- X 1))
(SETQ RES (+ RES 1))
)
)
;ГАММА ДЛЯ МНОЖЕСТВА ТОЧЕК
(DEFUN GAMMA_POINT (X)
(IF (> X 0)
(PROGN
(SETQ Y (+ X 2))
(SETQ GAM (* (SQRT (* 2 (/ PI Y))) (EXP (+ (* Y (LOG Y)) (- (/ (- 1 (/ 1 (* 30 Y Y))) (* 12 Y)) Y)))))
(SETQ RES (/ GAM (* X (+ X 1))))
)
;ИНАЧЕ
(PROGN
(SETQ J 0)
(SETQ Y X)
(DO
(())
((>= Y 0))
(SETQ J (+ J 1))
(SETQ Y (+ Y 1))
)
(SETQ GAM (GAMMA_POINT Y))
(DO
((I 0))
((>= I (- J 1)))
(SETQ GAM (/ GAM (+ X I)))
(SETQ I (+ I 1))
)
(SETQ RES GAM)
)
)
RES)
;ПОЛУЧАЕМ ЭЛЕМЕНТ ФУНКЦИИ
(SETQ FUNC 0)
(SETQ INPUT_STREAM (OPEN «D:GAMMA.TXT» :DIRECTION :INPUT))
(SETQ FUNC (READ INPUT_STREAM))
(CLOSE INPUT_STREAM)
;РЕЗУЛЬТАТ ГАММА-ФУНКЦИИ
(SETQ OUTPUT_STREAM (OPEN «D:RESULT.TXT» :DIRECTION :OUTPUT))
(PRINT 'RESULT_OF_GAMMA_FUNCTION OUTPUT_STREAM)
;ПРИМЕНЯЕМ ДЛЯ ПОЛОЖИТЕЛЬНЫХ ЧИСЕЛ
(PRINT (MAPCAR 'GAMMA FUNC) OUTPUT_STREAM)
;ПРИМЕНЯЕМ ДЛЯ ПОЛОЖИТЕЛЬНЫХ ЦЕЛЫХ ЧИСЕЛ
(PRINT (MAPCAR 'GAMMA_WHOLE FUNC) OUTPUT_STREAM)
;ПРИМЕНЯЕМ ДЛЯ ЛЮБЫХ ЧИСЕЛ
(PRINT (MAPCAR 'GAMMA_POINT FUNC) OUTPUT_STREAM)
(TERPRI OUTPUT_STREAM)
(CLOSE OUTPUT_STREAM)
;END
5 Пример выполнения программы Пример 1.
Рисунок 7 — Входные данные. Вычисление гамма-функции для положительных целых чисел Рисунок 8 — Выходные данные. Вычисление гамма-функции для положительных целых чисел Пример 2.
Рисунок 9 — Входные данные. Вычисление гамма-функции для положительных чисел Рисунок 10 — Выходные данные. Вычисление гамма-функции для положительных чисел Пример 3.
Рисунок 11 — Входные данные. Вычисление гамма-функции для множества чисел Рисунок 12 — Выходные данные. Вычисление гамма-функции для множества чисел
ЗАКЛЮЧЕНИЕ
Гамма функции являются удобным средством для вычисления некоторых интегралов в частности многих из тех интегралов, которые не представимы в элементарных функциях. Благодаря этому они широко применяются в математике и ее приложениях, в механике, термодинамике и в других отраслях современной науки.
Итогом работы можно считать созданную функциональную модель реализации основных способов вычисления гамма функции. Данная модель применима к гамма-функции с положительным целым параметром, гамма-функции с положительным параметром, гамма-функции для множества точек. Созданная функциональная модель реализации основных способов вычисления гамма функции и ее программная реализация могут служить органической частью решения более сложных задач.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ и литературы
Бронштейн, И. Н. Справочник по математике для инженеров и учащихся втузов [Текст] / И. Н. Бронштейн, К. А. Семендяев. — М.: Наука, 2007. — 708 с.
Вычисление гамма-функции и бета-функции [Электронный ресурс] - Режим доступа: http://www.cyberguru.ru/cpp-sources/algorithms/vytchislenie-gamma-funktsii-i-beta-funktsii.html
Гамма-функция — Википедия [Электронный ресурс] - Режим доступа: http://ru.wikipedia.org/wiki/Гамма_функция
Кремер, Н. Ш. Высшая математика для экономистов: учебник для студентов вузов. [Текст] / Н. Ш. Кремер, 3-е издание — М.:ЮНИТИ-ДАНА, 2006. C. 412.
Семакин, И. Г. Основы программирования. [Текст] / И. Г. Семакин, А. П. Шестаков. — М.: Мир, 2006. C. 346.
Симанков, В. С. Основы функционального программирования [Текст] / В. С. Симанков, Т. Т. Зангиев, И. В. Зайцев. — Краснодар: КубГТУ, 2002. — 160 с.
Степанов, П. А. Функциональное программирование на языке Lisp. [Электронный ресурс] / П. А. Степанов, А. В. Бржезовский. — М.: ГУАП, 2003. С. 79.
Хювенен Э. Мир Лиспа [Текст] / Э. Хювенен, Й.Сеппянен. — М.: Мир, 1990. — 460 с.