ЛИСП-реализация вычисления элементарных функций

Математические и алгоритмические основы решения задачи. Формула Тейлора для некоторых элементарных функций. Функциональные модели решения задачи и их программная реализация. Понятие элементарной функции. Пример выполнения программы для вычисления.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 20.01.2010
Размер файла 864,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Содержание

Введение

1. Постановка задачи

2. Математические и алгоритмические основы решения задачи

2.1 Понятие элементарной функции

2.2 Формула Тейлора

2.3 Формула Тейлора для некоторых элементарных функций

3. Функциональные модели решения задачи

4. Программная реализация решения задачи

5. Пример выполнения программы

Заключение

Список использованных источников и литературы

Введение

Элементарными функциями называются функции одного аргумента, значения которых получаются с помощью конечного числа вычислительных операций над аргументом, зависимой переменной и постоянными числами.

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

Алгоритм вычисления элементарной функции в микроЭВМ охватывает три следующих типа:

привидение аргумента к интервалу аппроксимации (уменьшение интервала изменения аргумента);

вычисление элементарной функции на интервале аппроксимации;

пост-обработка.

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

Многочлен , наиболее подходящий для вычисления элементарных функций, называется многочленом Тейлора для данной функции; найдя его по заданной функции , мы сможем вместо сложного вычисления значений функции приближённо заменять это вычисление на вычисление значений многочлена .

Целью данной курсовой работы является ЛИСП-реализация вычисления элементарных функций.

1. Постановка задачи

Требуется вычислить элементарные функции. Для вычисления воспользуемся формулой Тейлора:

.

.

.

.

.

.

.

Пример 1. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

Пример 2. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

Пример 3. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

Пример 4. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

Пример 5. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

Пример 6. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

Пример 7. Вычислим с помощью формулы Тейлора.

Решение:

Примем точность n=100. Тогда

.

2. Математические и алгоритмические основы решения задачи

2.1 Понятие элементарной функции

Элементарные функции -- функции, которые можно получить из основных элементарных функций:

многочлен,

рациональная,

степенная,

показательная и логарифмическая,

тригонометрические и обратные тригонометрические

Гиперболические функции

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

2.2 Формула Тейлора

Формула Тейлора используется при доказательстве большого числа теорем в дифференциальном исчислении. Говоря нестрого, формула Тейлора показывает поведение функции в окрестности некоторой точки.

Теорема:

Пусть функция f(x) имеет n + 1 производную в некоторой окрестности точки a, U(a,е).

Пусть .

Пусть p -- произвольное положительное число, тогда: точка при x < a или при x > a. Формула Тейлора с остаточным членом в общей форме.

.

2.3 Формула Тейлора для некоторых элементарных функций

Рассмотрим несколько важнейших элементарных функций и найдём для них многочлены Тейлора при .

1. Рассмотрим функцию . Все её производные совпадают с ней: , так что коэффициенты Тейлора в точке равны

.

Поэтому формула Тейлора для экспоненты такова:

.

2. Рассмотрим функцию . Её производные чередуются в таком порядке:

, , , ,

а затем цикл повторяется. Поэтому при подстановке также возникает повторение:

, , , ,

,

и т. д. Все производные с чётными номерами оказываются равными 0; производные с нечётными номерами равны 1 при , то есть при , и -1 при , то есть при . Таким образом, при всех и коэффициенты Тейлора равны

Получаем формулу Тейлора для синуса:

.

3. Для функции производные также чередуются с циклом длины 4, как и для синуса. Значения в точке имеют то же чередование:

, , , ,

.

Нетрудно видеть, что при , , и при , . Поэтому разложение косинуса по формуле Тейлора имеет вид

.

4. Разложение функции по формуле Тейлора имеет вид:

.

5. Разложение функции по формуле Тейлора имеет вид:

.

6. Разложение функции по формуле Тейлора имеет вид:

.

7. Разложение функции по формуле Тейлора имеет вид:

.

На основе полученных разложений можно получать и разложения многих других функций.

3. Функциональные модели и блок-схемы решения задачи

Функциональные модели решения задачи представлены на рисунках 1 - 8.

Условные обозначения:

X - параметр функции;

N - точность вычисления.

Рисунок 1 - Функциональная модель решения задачи для функции FACTORIAL

Рисунок 2 - Функциональная модель решения задачи для функции EXP_X

Рисунок 3 - Функциональная модель решения задачи для функции SIN_X

Рисунок 4 - Функциональная модель решения задачи для функции COS_X

Рисунок 5 - Функциональная модель решения задачи для функции SINH_X

Рисунок 6 - Функциональная модель решения задачи для функции COSH_X

Рисунок 7 - Функциональная модель решения задачи для функции LN_ADD_X

Рисунок 8 - Функциональная модель решения задачи для функции LN_SUBTR_X

4. Программная реализация решения задачи

;----------------

;ФУНКЦИЯ РЕАЛИЗУЮЩАЯ ФАКТОРИЛ X

(DEFUN FACTORIAL (X)

(COND

((EQL X 0) 1)

((EQL X 1) 1)

(T (* X (FACTORIAL (- X 1))))))

;----------------

;ВЫЧИСЛЕНИЕ ЭКСПОНЕНТЫ В СТЕПЕНИ X

(DEFUN EXP_X (X N)

(COND

((< N 0) 0)

(T (+ (FLOAT (/ (EXPT X N) (FACTORIAL N))) (EXP_X X (- N 1))))))

;----------------

;ВЫЧИСЛЕНИЕ СИНУСА

(DEFUN SIN_X (X N)

(COND

((< N 2) X)

(T (+ (* (EXPT -1 (- N 1)) (FLOAT (/ (EXPT X (- (* 2 N) 1)) (FACTORIAL (- (* 2 N) 1))))) (SIN_X X (- N 1))))))

;----------------

;ВЫЧИСЛЕНИЕ КОСИНУСА

(DEFUN COS_X (X N)

(COND

((< N 0) 0)

(T (+ (* (EXPT -1 N) (FLOAT (/ (EXPT X (* 2 N)) (FACTORIAL (* 2 N))))) (COS_X X (- N 1))))))

;----------------

;ВЫЧИСЛЕНИЕ ГИПЕРБОЛИЧЕСКОГО СИНУСА

(DEFUN SINH_X (X N)

(COND

((< N 1) 0)

(T (+ (FLOAT (/ (EXPT X (- (* 2 N) 1)) (FACTORIAL (- (* 2 N) 1)))) (SINX_X X (- N 1))))))

;----------------

;ВЫЧИСЛЕНИЕ ГИПЕРБОЛИЧЕСКОГО КОСИНУСА

(DEFUN COSH_X (X N)

(COND

((< N 0) 0)

(T (+ (FLOAT (/ (EXPT X (* 2 N)) (FACTORIAL (* 2 N)))) (COSH_X X (- N 1))))))

;----------------

;ВЫЧИСЛЕНИЕ LN(1-X)

(DEFUN LN_SUBTR_X (X N)

(COND

((< N 1) 0)

(T (+ (FLOAT (/ (* -1 (EXPT X N)) N)) (LN_SUBTR_X X (- N 1))))))

;----------------

;ВЫЧИСЛЕНИЕ LN(1+X)

(DEFUN LN_ADD_X (X N)

(COND

((< N 1) 0)

(T (+ (FLOAT (* (/ (EXPT -1 (- N 1)) N) (EXPT X N))) (LN_ADD_X X (- N 1))))))

;----------------

;ПЕЧАТЬ РЕЗУЛЬТАТОВ ВЫЧИСЛЕНИЯ ЭЛЕМЕНТАРНЫХ ФУНКЦИЙ

(DEFUN PRINT_FUNCTION (XN1 XN2 OUTPUT)

(DECLARE (SPECIAL X))

(DECLARE (SPECIAL N))

(SETQ X (CAR XN1))

(SETQ N (CADR XN1))

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"E V STEPENI X" '= (EXP_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"E V STEPENI X" '= (EXP X)) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT)

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"SIN X" '= (SIN_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"SIN X" '= (SIN X)) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT)

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"COS X" '= (COS_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"COS X" '= (COS X)) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT)

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"SH X" '= (SINH_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"SH X" '= (SINH X)) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT)

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"CH X" '= (COSH_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"CH X" '= (COSH X)) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT)

(SETQ X (CAR XN2))

(SETQ N (CADR XN2))

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"LN (1 - X)" '= (LN_SUBTR_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"LN (1 - X)" '= (LOG (- 1 X))) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT)

(PRINT (LIST 'X '= X) OUTPUT)

(PRINT (LIST 'N '= N) OUTPUT)

(PRINT "MY FUNCTION" OUTPUT)

(PRINT (LIST '"LN (1 + X)" '= (LN_ADD_X X N)) OUTPUT)

(PRINT "LISP FUNCTION" OUTPUT)

(PRINT (LIST '"LN (1 + X)" '= (LOG (+ 1 X))) OUTPUT)

(PRINT '--------------------------------------------- OUTPUT))

;----------------

;ОТКРЫВАЕМ ФАЙЛ ДЛЯ ЧТЕНИЯ

(SETQ INPUT_STREAM (OPEN " D:\X.TXT" :DIRECTION :INPUT))

;СЧИТЫВАЕМ ЗНАЧЕНИЕ X И ТОЧНОСТЬ ДЛЯ ВЫЧИСЛЕНИЯ

;E^X, SIN(X), COS(X), SH(X), CH(X)

(SETQ XN1 (READ INPUT_STREAM))

;СЧИТЫВАЕМ ЗНАЧЕНИЕ X И ТОЧНОСТЬ ДЛЯ ВЫЧИСЛЕНИЯ ЭЛЕМЕНТАРНЫХ ФУНКЦИЙ

;LN(1+X), LN(1+X)

;XN2 ОТЛИЧНЫ ОТ XN1 ТАК КАК X ПРИ ВЫЧИСЛЕНИИ ЛОГАРИФМА 0<X<1

(SETQ XN2 (READ INPUT_STREAM))

;ЗАКРЫВАЕМ ФАЙЛ

(CLOSE INPUT_STREAM)

;ОТКРЫВАЕМ ФАЙЛ ДЛЯ ЗАПИСИ

(SETQ OUTPUT_STREAM (OPEN "D:\FUNCTION.TXT" :DIRECTION :OUTPUT))

;ПЕЧАТАЕМ ВЫЧИСЛЕНИЯ ФУНКЦИЙ

(PRINT_FUNCTION XN1 XN2 OUTPUT_STREAM)

;ЗАКРЫВАЕМ ФАЙЛ

(TERPRI OUTPUT_STREAM)

(CLOSE OUTPUT_STREAM)

;КОНЕЦ

5. Пример выполнения программы

Пример 1.

Рисунок 9 - Входные данные

Рисунок 10 - Выходные данные

Пример 2.

Рисунок 11 - Входные данные

Рисунок 12 - Выходные данные

Пример 3.

Рисунок 13 - Входные данные

Рисунок 14 - Выходные данные

Заключение

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

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

Список использованных источников и литературы

1. Архангельский, Н.А. Вычислительные методы алгебры в приемах и задачах. [Текст] / Н.А. Архангельский - М.: МАИ, 2001. C. 812.

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

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

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

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

6. Формула Тейлора для некоторых элементарных функций [Электронный ресурс] - Режим доступа: http://elib.ispu.ru/library/math/sem1/kiselev1/node56.html

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

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


Подобные документы

  • Математические и алгоритмические основы решения задачи. Функциональные модели и блок-схемы решения задачи. Программная реализация решения задачи. ЛИСП-реализация вычисления неэлементарных функций. Вычисления гамма функции для положительных неизвестных х.

    курсовая работа [621,2 K], добавлен 18.01.2010

  • Постановка задачи. Математические и алгоритмические основы решения. Функциональные модели и блок-схемы решения. Программная реализация решения. Пример выполнения программы. Методы, использующие исключение отрезков. Учет информации о значениях функции.

    курсовая работа [527,0 K], добавлен 15.01.2010

  • Программная реализация на языке ЛИСП расписания встреч участников соревнования с использованием круговой и олимпийской системы проведения соревнований. Математические и алгоритмические основы решения задачи. Функциональные модели и блок-схемы решения.

    курсовая работа [1,0 M], добавлен 25.01.2010

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

    контрольная работа [767,1 K], добавлен 02.02.2014

  • Понятие определителя матрицы, математические и алгоритмические основы его расчета, функциональные модели, блок-схемы и программная реализация. Сущность метода Гаусса для решения систем линейных алгебраических уравнений и вычисления определителя матрицы.

    контрольная работа [455,2 K], добавлен 18.01.2010

  • Методика разработки и механизм отладки программы на языке Лисп, реализующей криптографический алгоритм кодирования информации с открытым ключом – RSA. Математические и алгоритмические основы решения задачи, его программная модель, составление блок-схемы.

    курсовая работа [675,7 K], добавлен 20.01.2010

  • Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.

    курсовая работа [527,5 K], добавлен 25.01.2010

  • Математический процессор для вычисления элементарных функций. Расчет разрядности представления данных и числа итераций. Разработка алгоритмов вычисления функции в математическом пакете. Обоснование достаточности аппаратных средств, программных ресурсов.

    курсовая работа [615,9 K], добавлен 19.12.2010

  • Решение биквадратного уравнения методом введения новой переменной. Создание программы с понятным интерфейсом. Математические и алгоритмические основы решения задачи. Алгебраическое уравнение четвертой степени. Программная реализация решения задачи.

    курсовая работа [412,5 K], добавлен 02.02.2010

  • Расчет надежности функционирования систем (Лисп-реализация). Схема включения конденсаторной батареи, показатели интенсивности отказов и вероятности безотказной работы за год. Функциональные модели и блок-схемы решения задачи. Примеры выполнения программы.

    курсовая работа [349,5 K], добавлен 25.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.