Цель работы
Составить программу на Си, которая печатает таблицу значений элементарной функции, вычисленной двумя способами: по формуле Тейлора и с помощью встроенных функций языка программирования. В качестве аргументов таблицы взять точки разбиения отрезка [a, b] на n равных частей (n + 1 точка, включая концы отрезка), находящихся в рекомендованной области хорошей точности формулы Тейлора. Вычисления по формуле Тейлора проводить по экономной в сложностном смысле схеме с точностью ε×k, где ε — машинное эпсилон аппаратно реализованного вещественного типа для данной ЭВМ, а k — экспериментально подбираемый коэффициент, обеспечивающий приемлемую сходимость. Число итераций должно ограничиваться сверху числом порядка
100. Программа должна сама определять машинное ε и обеспечивать корректные размеры генерируемой таблицы. Алгоритм решения задачи
Сначала найдем машинное эпсилон, с помощью функций epsilon и findent. Алгоритм нахождения следующий: 1) на входе в цикл eps равно 1, 2) делим eps на 2 до тех пор, пока предикат (1 + eps/2) 1 дает значение ИСТИНА . Функция findent нужна чтобы вычислять машинное эпсилон для типа данных float, а не для регистра процессора, так как его размер часто превышает 64 бита, то можно получить совершенно неправильное значение. После этого в переменную prec запишем количество точных бит.
Границы отрезка и шаг «по отрезку» задаются как целые числа, равные своим вещественным аналогам, помноженным на
100. Это дает отсутствие погрешности на каждом шаге цикла. Количество итераций k = 23 для ряда Тейлора, дающее достаточную точность, было получено подбором значения. В теле цикла:
1) Находим значение x = i/100, где I – счетчик цикла.
2) Находим значение функции через встроенные средства языка.
3) Вычисляем значение функции через ряд Тейлора с использованием схемы Горнера.
4) Значение функции через ряд Тейлора умножаем на вынесенные за скобки 2х.
5) Вывод полученных значений. Замечание по поводу вывода, так как в программе используется схема Горнера, то значение функции вычисляемое через ряд Тейлора, имеет смысл проверять на точность вычислений, только на последнем шаге цикла. Поэтому в выводе отсутствует столбец количества итераций. Студент: Ашайкин Ф. И. из 8O-101Б.
Преподаватель: Никитин И. К.
МАИ. Факультет прикладной математики.
Кафедра вычислительной математики и программирования. 2013 г.
Составить программу на Си, которая печатает таблицу значений элементарной функции, вычисленной двумя способами: по формуле Тейлора и с помощью встроенных функций языка программирования. В качестве аргументов таблицы взять точки разбиения отрезка [a, b] на n равных частей (n + 1 точка, включая концы отрезка), находящихся в рекомендованной области хорошей точности формулы Тейлора. Вычисления по формуле Тейлора проводить по экономной в сложностном смысле схеме с точностью ε×k, где ε — машинное эпсилон аппаратно реализованного вещественного типа для данной ЭВМ, а k — экспериментально подбираемый коэффициент, обеспечивающий приемлемую сходимость. Число итераций должно ограничиваться сверху числом порядка
100. Программа должна сама определять машинное ε и обеспечивать корректные размеры генерируемой таблицы. Алгоритм решения задачи
Сначала найдем машинное эпсилон, с помощью функций epsilon и findent. Алгоритм нахождения следующий: 1) на входе в цикл eps равно 1, 2) делим eps на 2 до тех пор, пока предикат (1 + eps/2) 1 дает значение ИСТИНА . Функция findent нужна чтобы вычислять машинное эпсилон для типа данных float, а не для регистра процессора, так как его размер часто превышает 64 бита, то можно получить совершенно неправильное значение. После этого в переменную prec запишем количество точных бит.
Границы отрезка и шаг «по отрезку» задаются как целые числа, равные своим вещественным аналогам, помноженным на
100. Это дает отсутствие погрешности на каждом шаге цикла. Количество итераций k = 23 для ряда Тейлора, дающее достаточную точность, было получено подбором значения. В теле цикла:
1) Находим значение x = i/100, где I – счетчик цикла.
2) Находим значение функции через встроенные средства языка.
3) Вычисляем значение функции через ряд Тейлора с использованием схемы Горнера.
4) Значение функции через ряд Тейлора умножаем на вынесенные за скобки 2х.
5) Вывод полученных значений. Замечание по поводу вывода, так как в программе используется схема Горнера, то значение функции вычисляемое через ряд Тейлора, имеет смысл проверять на точность вычислений, только на последнем шаге цикла. Поэтому в выводе отсутствует столбец количества итераций. Студент: Ашайкин Ф. И. из 8O-101Б.
Преподаватель: Никитин И. К.
МАИ. Факультет прикладной математики.
Кафедра вычислительной математики и программирования. 2013 г.