Программирование на языке си с использованием чисел с плавающей точкой

  • 29 сент. 2010 г.
  • 1587 Слова
Лабораторная работа №1.
Программирование на языке Си с использованием чисел с плавающей точкой

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

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

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

В качестве входных и выходных данных использовать числа с плавающей точкой (long double).

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

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

На основании анализа полученных результатов, определить допустимый диапазон входных значений и рассчитать погрешности. Все результаты свести в таблицу.

2. Разложение функции в ряд

cos(x)=1-x2/2!+ x4/4!- x6/6!+ x8/8!-…
sin(x)=x-x3/3!+ x5/5!- x7/7!+ x9/9!-…
exp(x)=1+x+x2/2!+ x3/3!+ x4/4!+ x5/5!-…
и т.п.
Максимальное количество используемых в программе слагаемых недолжно превышать 200, причем, чтобы не допустить переполнения, не вычислять факториалы и возведение в степень. Вычисление прекращать, когда достигнута заданная точность.
Пример
exp(x)=1+x+x2/2!+ x3/3!+ x4/4!+ x5/5!-…
Представим этот ряд в виде рекурсивных формул:

[pic],
[pic],

где ui+1, ui - это (i+1)-й и i-й члены ряда,
k(i) - коэффициент связи (i+1)-го и i-го членов ряда,
qi+1, qi - суммы(i+1)-го и i-го членов ряда.

Определим значение k(i):
[pic],
[pic],
[pic].

3. Содержание отчета

Отчет по лабораторной работе должен включать
1. Постановку задачи
2. Математическое описание (алгоритм задачи)
3. Описание функций
4. Описание контрольного примера
5. Результаты тестирования
6. Текст программы

4. Варианты

1. sin(x), eps = 10-15
2. cos(x),eps = 10-15
3. exp(x), eps = 10-15
4. (1+x)α, eps = 10-15
5. ln(1+x), eps = 10-15
6. ln(1-x), eps = 10-15
7. arctg(x) , eps = 10-15
8. arcsin(x) , eps = 10-15
9. sin(x), eps = 10-13
10. cos(x), eps = 10-13
11. exp(x), eps = 10-13
12. (1+x)α, eps = 10-13
13. ln(1+x), eps = 10-13
14. ln(1-x), eps = 10-13
15. arctg(x) , eps = 10-13
16. arcsin(x) , eps= 10-13
17. sin(x), eps = 10-17
18. cos(x), eps = 10-17
19. exp(x), eps = 10-17
20. (1+x)α, eps = 10-17
21. ln(1+x), eps = 10-17
22. ln(1-x), eps = 10-17
23. arctg(x) , eps = 10-17
24. arcsin(x) , eps = 10-17
25. sin(x), eps = 10-19
26. cos(x), eps = 10-19
27. exp(x), eps = 10-19
28. (1+x)α, eps = 10-19
29. ln(1+x), eps = 10-19
30. ln(1-x), eps = 10-1931. arctg(x) , eps = 10-19
32. arcsin(x) , eps = 10-19

5. Литература

1. Справочник по математике для инженеров и учащихся втузов. Бронштейн И.Н., Семендяев К.А. – Москва: Наука, 1981. Стр. 276-277, 357-362

Приложение 1

Пример описания функции

4.1. Функция myexp – вычисление экспоненты числа разложением в ряд Маклорена

Синтаксис: long double myexp(long double x,longdouble eps);
Входные данные:
x - число, экспоненту которого нужно вычислить (тип - long double; допустимый диапазон - [ -1e18; 1e18]);
eps - необходимая точность (тип - long double; допустимый диапазон - [ 0.0; 1e18]).
Выходные данные: через возвращаемое значение.
Описание: Функция вычисляет значение экспоненты для заданного числа с заданной точностью; в функции используется...