Проектирование ассемблерных программ вычислительных алгоритмов
Покупка
Год издания: 2013
Кол-во страниц: 124
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7038-3902-7
Артикул: 806850.01.99
Шесть лабораторных работ учебного пособия методически связаны единой целью: разработать оптимальную по точности и быстродействию ассемблерную программу вычисления заданной функции на ЦВМ с фиксированной запятой. В каждой работе приведен пример её выполнения с подробными комментариями. Трудоемкость лабораторного практикума соответствует учебному плану Калужского филиала МГТУ им. Н.Э. Баумана для направления подготовки «Информатика и вычислительная техника» по профилю «Вычислительные машины, комплексы, системы и сети».
Пособие может быть полезно студентам, аспирантам, инженерам и специалистам, желающим повысить свои навыки в низкоуровневом программировании.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет имени Н.Э. Баумана Калужский филиал А.В. Максимов, Е.А. Максимова ПРОЕКТИРОВАНИЕ АССЕМБЛЕРНЫХ ПРОГРАММ ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ: ЛАБОРАТОРНЫЙ ПРАКТИКУМ Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению подготовки 230100 «Информатика и вычислительная техника»
УДК 004.421.2 ББК 32.973-01 М17 Рецензенты: зав. кафедрой «Компьютерные системы, сети и технологии» Обнинского института ядерной энергетики НИЯУ МИФИ, д-р физ.-мат. наук, профессор С.О. Старков; зав. кафедрой «Компьютерные технологии и системы» Брянского государственного технического университета, д-р техн. наук, профессор В.И. Аверченков Максимов А. В. М17 Проектирование ассемблерных программ вычислительных алгоритмов: лабораторный практикум. Учебное пособие для вузов / А. В. Максимов, Е. А. Максимова. — М. : Издательство МГТУ им. Н. Э. Баумана, 2013. — 124 с. ISBN 978-5-7038-3902-7 Шесть лабораторных работ учебного пособия методически связаны единой целью: разработать оптимальную по точности и быстродействию ассемблерную программу вычисления заданной функции на ЦВМ с фиксированной запятой. В каждой работе приведен пример её выполнения с подробными комментариями. Трудоемкость лабораторного практикума соответствует учебному плану Калужского филиала МГТУ им. Н.Э. Баумана для направления подготовки «Информатика и вычислительная техника» по профилю «Вычислительные машины, комплексы, системы и сети». Пособие может быть полезно студентам, аспирантам, инженерам и специалистам, желающим повысить свои навыки в низкоуровневом программировании. УДК 004.421.2 ББК 32.973-01 © Максимов А.В., Максимова Е.А., 2013 © Издательство МГТУ ISBN 978-5-7038-3902-7 им. Н. Э. Баумана, 2013
ПРЕДИСЛОВИЕ Данный лабораторный практикум имеет целью сформировать у студента умения и навыки анализа вычислительных алгоритмов перед последующими реализациями их на ассемблере. Все лабораторные работы методически связаны единой целью: разработать оптимальную по точности и быстродействию ассемблерную программу вычисления заданной функции на ЦВМ с фиксированной запятой. В первой работе необходимо выбрать лучший вариант реализации заданной функции, представленной разложением в ряд Тейлора. Во второй работе проводятся исследования влияния квантования аргумента на точность реализации выбранного в первой работе варианта реализации заданной функции. Фактически это моделирование влияния разрядности аналого-цифрового преобразователя на точность воспроизведения функции. В третьей работе моделируется влияние на точность вычислений квантования заданной функции в ЦВМ с фиксированной запятой. Одновременное влияние квантования аргумента и функции на точность её вычисления исследуется в четвертой работе. Результаты этой работы позволяют судить о величине трансформированной погрешности при реализации заданной функции, т. е. являются решением прямой задачи анализа трансформированной погрешности. Выполняя пятую лабораторную работу, студент знакомится с особенностями низкоуровневого программирования простейших арифметических операций, с методами повышения точности их работы. Шестая работа — завершающая. Результатом этой работы должна быть оптимальная ассемблерная программа вычисления заданной функции, разложенной в ряд Тейлора в первой работе. Критерием оптимальности в этой работе является наивысшая точность вычисления заданной функции за минимальное время работы процессора ЦВМ. Результаты последней работы позволяют количественно оценить полную погрешность вычисления заданной функции.
В каждой работе приведен пример её выполнения с подробными комментариями и объяснениями причин принятия конкретного решения. Число лабораторных работ, их трудоемкость соответствуют учебному плану Калужского филиала МГТУ им. Н.Э. Баумана для направления подготовки «Информатика и вычислительная техника» по профилю «Вычислительные машины, комплексы, системы и сети». Авторы выражают глубокую признательность рецензентам пособия профессору Сергею Олеговичу Старкову и профессору Владимиру Ивановичу Аверченкову за полезные советы по улучшению рукописи. А.В. Максимов, Е.А. Максимова
ЛАБОРАТОРНАЯ РАБОТА № 1. ИССЛЕДОВАНИЕ ОСОБЕННОСТЕЙ ВОСПРОИЗВЕДЕНИЯ МАТЕМАТИЧЕСКОЙ ФУНКЦИИ, ПРЕДСТАВЛЕННОЙ РАЗЛОЖЕНИЕМ В РЯД ТЕЙЛОРА Цель работы: приобрести практические навыки исследования поведения функции, представленной разложением в ряд Тейлора. Необходимое оборудование и программное обеспечение: для выполнения лабораторной работы необходима ПЭВМ на базе микропроцессора с системой команд ix86, среда программирования любого языка высокого уровня или пакеты математических инструментальных сред, табличный процессор Excel. Задание. Получите у преподавателя № варианта. Выполните разложения функции вашего варианта в двух точках интервала изменения аргумента в ряд Тейлора (Маклорена), удерживая пять ненулевых членов. Точки разложения выберите в середине интервала изменения аргумента и на одном из его концов. Для каждой точки разложения получите отдельно три рабочих реализации вашей функции: первая содержит три ненулевых члена ряда Тейлора, вторая — четыре, третья — пять. Итого должно быть шесть рабочих реализаций. Выполните вычисления и постройте графики: эталонной функции, всех рабочих реализаций, ошибок каждой реализации. Всего должно быть тринадцать графиков. Для каждой реализации рассчитайте среднеквадратичное значение ошибки, математическое ожидание, максимальную приведенную относительную погрешность на всем интервале изменения аргумента. Проанализируйте качество воспроизведения заданной вам функции. Из всех шести рабочих реализаций выберите одну, которая позволяет вычислять вашу функцию с приведенной относительной погрешностью 0,5 % на наибольшем интервале изменения аргумента. С этой, самой лучшей, реализацией вы будете выполнять последующие лабораторные работы. Оформите отчет. Содержание отчета: тема, цель работы, используемое оборудование и программное обеспечение, дата проведения эксперимента, № варианта; расчеты коэффициентов рабочих реализаций; графики:
эталонной, рабочих реализаций (шесть графиков), ошибок (шесть графиков); числовые характеристики ошибок; анализ и оценка качества воспроизведения заданной функции; выводы. Продолжительность работы. Работа должна быть выполнена за 4 академических часа. Варианты заданий приведены в табл. 1.1. Таблица 1.1 Варианты заданий № вари- анта Функция Диапазон изменения аргумента Шаг аргумента 1 2 3 4 1 2x [0,0625; 8] 0,125 2 2 x − [0,125; 4] 0,0625 3 x [0;4] 0,0625 4 3 x [0; 3] 0,0625 5 ( ) ln x [0,0625; 2,5] 0,0625 6 ( ) lg x [0,0625; 2,5] 0,0625 7 ( ) 2 log x [0,0625; 2,5] 0,0625 8 ( ) tg x [–1,5; 1,5] 0,03125 9 ( ) ctg x [0,0625; 1,5] 0,03125 10 ( ) sec x [0,0625; 1,5] 0,03125 11 ( ) cosec x [0,0625; 1,5] 0,03125 12 ( ) arcsin x [–0,9; 0,9] 0,03125 13 ( ) arccos x [–0,9; 0,9] 0,03125 14 ( ) arctg x [–5; 5] 0,125 15 ( ) arcctg x [–5; 5] 0,125 16 ( ) sh x [–5; 5] 0,125 17 ( ) ch x [–5; 5] 0,125 18 ( ) th x [–5; 5] 0,125 19 3x [–2; 4] 0,0625 20 3 x − [–2; 4] 0,0625 21 2 3 x [0; 5] 0,0625
Окончание табл. 1.1 1 2 3 4 22 3 2 x [0; 4] 0,125 23 ( ) ln x [0,0625; 8] 0,125 24 4x [–1; 4] 0,0625 25 ( ) 2 3 2 log x [0,125; 4] 0,0625 26 ( ) tg x x ⋅ [–1,5; 1,5] 0,0625 27 ( ) ctg x x ⋅ [0,0625; 5] 0,0625 28 ( ) 3 2 cos x [–4; 4] 0,0625 29 ( ) 3 2 sin x [–4; 4] 0,0625 30 9x [–1; 3] 0,0625 31 ( ) 6 log x [0,0625; 4] 0,0625 32 ( ) sin x x ⋅ [–4; 4] 0,0625 33 sin( )x [0; 3] 0,0625 34 6x [0; 4] 0,0625 35 cos( ) x x ⋅ [0; 1,5] 0,0625 36 ( ) 4 log x [0; 4] 0,0625 37 2 x e [0; 4] 0,0625 38 4 x − [–2; 4] 0,0625 39 ( ) sin x x ⋅ [–1,5; 1,5] 0,03125 40 6x [–2; 4] 0,0625 Пример выполнения лабораторной работы: ♦ исходная функция ( ) cos ; y x = ♦ диапазон изменения аргумента [ ] 3,25; 3,25 ; x∈ − + ♦ шаг изменения аргумента 3 2 . x st − = Получим с помощью Excel значения заданной функции (табл. 1.2) и построим её график (рис. 1.1). Эти значения функции и её график примем как эталонные.
Таблица 1.2 Значения заданной функции x ( ) cos x x ( ) cos x x ( ) cos x –3,25 –0,994 129 676 –1 0,540 302 306 1,25 0,315 322 362 –3,125 –0,999 862 345 –0,875 0,640 996 858 1,375 0,194 547 708 –3 –0,989 992 497 –0,75 0,731 688 869 1,5 0,070 737 202 –2,875 –0,964 674 146 –0,625 0,810 963 120 1,625 –0,054 177 135 –2,75 –0,924 302 379 –0,5 0,877 582 562 1,75 –0,178 246 056 –2,625 –0,869 507 181 –0,375 0,930 507 622 1,875 –0,299 533 506 –2,5 –0,801 143 616 –0,25 0,968 912 422 2 –0,416 146 837 –2,375 –0,720 278 471 –0,125 0,992 197 667 2,125 –0,526 266 335 –2,25 –0,628 173 623 0 1 2,25 –0,628 173 623 –2,125 –0,526 266 335 0,125 0,992 197 667 2,375 –0,720 278 471 –2 –0,416 146 837 0,25 0,968 912 422 2,5 –0,801 143 616 –1,875 –0,299 533 506 0,375 0,930 507 622 2,625 –0,869 507 181 –1,75 –0,178 246 056 0,5 0,877 582 562 2,75 –0,924 302 379 –1,625 –0,054 177 135 0,625 0,810 963 120 2,875 –0,964 674 146 –1,5 0,070 737 202 0,75 0,731 688 869 3 –0,989 992 497 –1,375 0,194 547 708 0,875 0,640 996 858 3,125 –0,999 862 345 –1,25 0,315 322 362 1 0,540 302 306 3,25 –0,994 129 676 –1,125 0,431 176 517 1,125 0,431 176 517 ( ) cos y x = x 1,0 0,5 0 0,5 − 1,0 − 3,0 − 2,0 − 1,0 − 1,0 2,0 3,0 Рис. 1.1. График эталонной функции Разложение заданной функции в ряд Тейлора в общем виде записывается следующим выражением [1]:
( ) ( ) ( )( ) ( ) ( ) ( ) ( ) 2 2! , ! n n y a y x y a y a x a x a y a x a n ′′ ′ = + − + − + + + − + … … (1) где a — точка разложения. Критериями выбора точки a являются: наименьшее число арифметических операций при реализации разложения, максимальная точность разложения заданной функции. Если в нашем примере выбрать 2 , a k = π 0, 1, 2, 3, , k = ± ± ± … то вид разложения будет довольно простым. Однако ввиду особенностей функции ( ) cos y x = часть её высших производных будут нулевыми. Следовательно, окончательная степень полинома с пятью ненулевыми членами в этом случае будет выше пятой. Учитывая сказанное, выберем 1 0; 2 4. a a = = π Подставляя значения выбранных точек в уравнение (1) и произведя необходимые действия, получим искомые разложения: ♦ для 1 0 a = (ряд Маклорена) ( ) 4 2 6 8 1 ; 2 24 720 40 320 x x x x y x = − + − + (2) ♦ для 2 4 a = π ( ) 2 3 4 2 2 2 2 2 4 4 4 2 2 . 12 4 48 4 y x x x x x π π ⎛ ⎞ ⎛ ⎞ = − − − − + ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ ⎝ ⎠ π π ⎛ ⎞ ⎛ ⎞ + − + − ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ ⎝ ⎠ (3) Разложения функции в ряды Тейлора с четырьмя и тремя ненулевыми членами можно получить из (2) и (3) путем отбрасывания последних одного или двух членов соответственно. Разложение с тремя ненулевыми членами для 1 0: a = ( ) 2 4 1 ; 2 24 x x y x = − + (4) с четырьмя ненулевыми членами для 1 0: a =
( ) 4 2 6 1 . 2 24 720 x x x y x = − + − (5) Разложения для 2 4: a = π ♦ три ненулевых члена: ( ) 2 2 2 2 ; 2 2 4 4 4 y x x x π π ⎛ ⎞ ⎛ ⎞ = − − − − ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ ⎝ ⎠ (6) ♦ четыре ненулевых члена: ( ) 2 3 2 2 2 2 . 2 2 4 4 4 12 4 y x x x x π π π ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ = − − − − + − ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ (7) Выражения (2)–(7) являются рабочими. Для обеспечения максимальной точности при реализации рабочих выражений будем подставлять число π с точностью представления его в выбранном математическом пакете. С этой же точки зрения будем выполнять операции деления непосредственно на 12, 24, 720 и другие целые числа, а не заменять эти операции умножением на коэффициенты в виде округленных периодических дробей. Квадратный корень из двойки также предоставим вычислять математическому пакету. Результаты расчетов отражают следующие графики для 1 0 a = и трех членов ряда Маклорена (Тейлора): график разложения — рис. 1.2, график ошибки в пределах 0,5 % — рис. 1.3, график ошибки — рис. 1.4. ( ) cos y x ≈ x 1 0,5 0 0,5 − 1 − 1 2 3 3 − 1 − 2 − Рис. 1.2. График разложения ( ) cos : y x = три члена ряда, 1 0 a =