Лабораторная работа №4. Цикл с неизвестным числом повторений

Задание

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

Варианты:

Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru
Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru
Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru
Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru
Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru
Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru

При создании программы должны быть выполнены следующие дополнительные условия:

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

· Программа фиксирует количество членов ряда, необходимое для достижения заданной точности.

Методические указания

Значок «!» означает факториал. Простой пример:

5! = 1*2*3*4*5,

12! = 1*2*3*4*5*6*7*8*9*10*11*12,

при этом 0! и 1! равны 1.

Обратите внимание на тот факт, что при вычислении отдельно числителя и знаменателя достаточно быстро происходит переполнение типа данных. Например, 12!=479 001 600, что превышает ограничения сразу нескольких типов данных, таких как int и прочие.

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

Для того чтобы избежать этих проблем, необходимо использовать специальную методику. Попробуем показать эту методику на примере нахождения значения ряда Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru с заданной погрешностью.

1. Выстраиваем ряд в следующем представлении: Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru (3.1)

2. Определяем формулу перехода для (N+1)-ого члена ряда в формате: Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru

Дальнейшая работа по вычислению ряда будет выглядеть следующим образом: вычисляем первый член ряда исходя из известных данных. В нашем случае Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru . Второй член ряда равен Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru исходя из правил вычисления

Лабораторная работа №4. Цикл с неизвестным числом повторений - student2.ru . (3.2)

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

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

Тестирование данной работы должно проходить в 2 этапа:

· Тестирование итерационного механизма;

· Общее тестирование.

Проверка итерационного механизма заключается в тестировании:

· правильности входа: определения начальных значений;

· правильности перехода от N-го к (N+1)-у члену ряда;

· правильности выхода из суммирования.

Для проверки целесообразно выбрать значение X таким, чтобы было просто вычислять первые несколько членов ряда (например, X=2.0 или X=½). По формуле, полученной в соответствии с (3.1) фиксируем вычисленные значения: номера очередного члена ряда, величины очередного члена ряда и полученного в результате этого шага значения суммы ряда. Для проверки итерационного механизма достаточно вычислить значения трех, четырех первых членов ряда.

Далее необходимо использовать соответствующие средства отладки:

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

· в окне наблюдений значений переменных (watch) выбрать переменные ответственные за порядковый номер члена ряда, значение очередного члена ряда, суммы ряда и требуемой погрешности;

· осуществлять запуск программы на исполнение не менее 3 раз;

· сверить совпадение данных, получаемых в результате выполнения программы, с тестовыми значениями.

Остается проверить правильность выхода из цикла суммирования очередных членов ряда. Отменив на время точку останова и запустив задачу на решение, получаем количество членов ряда необходимое для получения заданной точности. Восстановив точку останова и редактируя её свойства (количество проходов или условие останова), можно наблюдать значение последнего учтенного члена ряда и оценить его величину относительно требуемой точности. Уменьшив на единицу количество проходов до останова, можем убедиться, что величина очередного члена ряда больше требуемой точности. Выполнив перечисленные действия, можем утверждать о правильности работы отлаживаемой программы.

В данной работе необходимо учитывать замечания по выбору единичных и нулевых исходных данных, которые были даны в работе № 3.

Наши рекомендации