РефератыИнформатика, программированиеЛИЛИСП-реализация основных способов вычисления гамма-функции

ЛИСП-реализация основных способов вычисления гамма-функции


СОДЕРЖАНИЕ


Введение


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 Понятие гамма-функции


Гамма функцию определяет интеграл Эйлера второго рода


G(a) =(2.1)


сходящийся при .



Рисунок 1. График гамма-функции действительного переменного


Положим =ty, t > 0 , имеем


G(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
1 2.5066282746310005
2 1.0000000000190015
3 76.18009172947146
4 -86.50532032941677
5 24.01409824083091
6 -1.231739572450155
7 0.1208650973866179e-2
8 -0.5395239384953e-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.5066282746310005 1.0000000000190015 76.18009172947146 -86.50532032941677 24.01409824083091


-1.231739572450155 0.1208650973866179e-2 -0.5395239384953e-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 – Выходные данные. Вычисление гамма-функции для множества чисел


ЗАКЛЮЧЕНИЕ


Гамма функции являются удобным средством для вычисления некоторых интегралов в частности многих из тех интегралов, которые не представимы в элементарных функциях. Благодаря этому они широко применяются в математике и ее приложениях, в механике, термодинамике и в других отраслях современной науки.


Итогом работы можно считать созданную функциональную модель реализации основных способов вычисления гамма функции. Данная модель применима к гамма-функции с положительным целым параметром, гамма-функции с положительным параметром, гамма-функции для множества точек. Созданная функциональная модель реализации основных способов вычисления гамма функции и ее программная реализация могут служить органической частью решения более сложных задач.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ и литературы


1.
Бронштейн, И.Н. Справочник по математике для инженеров и учащихся втузов [Текст] / И.Н.Бронштейн, К.А.Семендяев. – М.: Наука, 2007. – 708 с.


2.
Вычисление гамма-функции и бета-функции [Электронный ресурс] – Режим доступа: http://www.cyberguru.ru/cpp-sources/algorithms/vytchislenie-gamma-funktsii-i-beta-funktsii.html


3.
Гамма-функция – Википедия [Электронный ресурс] – Режим доступа: http://ru.wikipedia.org/wiki/Гамма_функция


4.
Кремер, Н.Ш. Высшая математика для экономистов: учебник для студентов вузов. [Текст] / Н.Ш.Кремер, 3-е издание – М.:ЮНИТИ-ДАНА, 2006. C. 412.


5.
Семакин, И.Г. Основы программирования. [Текст] / И.Г.Семакин, А.П.Шестаков. – М.: Мир, 2006. C. 346.


6.
Симанков, В.С. Основы функционального программирования [Текст] / В.С.Симанков, Т.Т.Зангиев, И.В.Зайцев. – Краснодар: КубГТУ, 2002. – 160 с.


7.
Степанов, П.А. Функциональное программирование на языке Lisp. [Электронный ресурс] / П.А.Степанов, А.В. Бржезовский. – М.: ГУАП, 2003. С. 79.


8.
Хювенен Э. Мир Лиспа [Текст] / Э.Хювенен, Й.Сеппянен. – М.: Мир, 1990. – 460 с.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: ЛИСП-реализация основных способов вычисления гамма-функции

Слов:1286
Символов:12255
Размер:23.94 Кб.