Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Методические указания. Значок «!» означает факториал




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

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 и прочие.

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

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

1. Выстраиваем ряд в следующем представлении: (3.1)

2. Определяем формулу перехода для (N+1)-ого члена ряда в формате:

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

. (3.2)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 374; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.