КАТЕГОРИИ: Архитектура-(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) |
While(1)
Выбор масштаба. Величину масштаба ограничивает заданная точность вычислений и размер формата данных. Например, для 8-разрядных вычислений и точности 2 знака после запятой 102 ≤ m ≤ 28
a)Вычисления с масштабом m=100 в Си занимает 1.2 мс и объем программы 219 байт. При вычислениях по формуле 2.9. т ребуется подпрограмма целого деления Для упрощения вычислений целесообразно выбирать масштаб m=28
b) При m=28 x*(0x100 – x*x/ 28 /6*(0x100 + x*x/ 28 /20*(0x100 – x*x / 28 /42)/ 28 )/ 28 )/ 28
Диапазон x=[0-1] с масштабом [28-1 ] представим в диапазоне x=[0-255] Деление на 28 заменяем простым сокращением 16-битового формата до 8-битового. #include <reg51.h> unsigned int x,y, sin; main() { for(x=0; x<=0x100; x++) { y=(x*x)>>8; sin=(y/20*(0x100-y/42))>>8; sin= (y/6*(0x100-sin))>>8; P3=sin= (x*(0x100-sin))>>8; } } Объем программы 260 байт, среднее время вычисления 0.25 мс
Выполнить вычисления с масштабами m=100, 128,256 — сравнить время вычислений и объем программ и вычисления с выбранным масштабом реализовать в Макроассемблере. 3.4. Вычисление функции с фиксированной точкой в дробных числах.
Функция задана разложением в ряд Тейлора sinx ~ x/1 – x3/3! + x5/5! – x7/7! Выберем аргумент в диапазоне дробных чисел 0- 0.99 радиан. Масштабирование выполняется после ввода и преобразования десятичных чисел в двоичную систему в 8-разрядном формате умножением на m=28. Дробное число приводится к целому. Деление заменяем умножением на дробный коэффициент в масштабе, например, 1/6 *28=42 y=x*x/28 (2.10) sinx ~ x*(0xff- y/6*(0xff-y/20*(0xff-y/42)/28)/28)/28 (2.11) x*(0xff- y*42/28 *(0xff-y*13/28 *(0xff-y*6/28)/28)/28)/28
При вычитании в формате байта используем приближенное значение единицы 0xff. Если вычитаемое не равно нулю, можно добавить единицу для повышения точности. Объем программы 51 байт и среднее время вычисления 0.04 мс В тексте выделены повторяющиеся фрагменты, которые могут быть обобщены макрокомандой Задания. 1) Для заданных функций разработать программу вычисления функции с плавающей точкой, вывести график, измерить среднее время вычисления одного значения и объем программы. 2) Разработать программы вычисления с фиксированной точкой в С51 и в макроассемблере. Вычисление функции - в целых 8-разрядных числах в диапазоне аргумента 0 – 1.0 и с использованием макрокоманд и подпрограмм. В дробных числах разработать программу вычислений в Ассемблере Измерить среднее время вычислений и объем программы. Привести гистограммы изменения этих параметров для трех рассмотренных способов (две программы в Си и две в макроассемблере).
Варианты Задания по разделу 2.2.
1. 1/(1-x) ~ 1 + x + x2 + x3 + -1<x<1 (сходимость ряда)
2. 1/(1+x) ~ 1 – x + x2 - x3 + -1< x<1
3. (1+x)0.5 ~ 1 + x/2 – x2/(2*4) + 1*3*x3/(2*4*6) -1*3*5*x4/(2*4*6*9) -1<=x<=1
ax ~ 1 + (lna)/1*x + (lna)2 x2/2! + (lna)3 x3/3! + при всех x a>1; lna(10*a/10) = ln10 + ln(a/10) =ln10 + ln(1-(1-a/10))
4. a=2
5. a=1/2
6. cosx ~ 1 – x2/2! + x4/4! – x6/6! + при всех х
7. tgx ~ x + x3/3 +2x5/15 + 17x7/315 +62x9/2835 -π /2 < x < π /2
8. ctgx ~ 1/x – (x/3 +x3/45 + 2x5/945 + 2x7/4725 + …) -π < x < π
9. ln(1+x) ~ x – x2/2 + x3/3 –x4/4 + x5/5 + -1 <x <1
10. ln(1-x) ~ -x – x2/2 - x3/3 - x4/4 - x5/5 – -1 <x <1
11. arcsin(x) ~ x + x3/(2*3) + 1*3*x5/(2*4*5) + 1*3*5x7/(2*4*6*7) + -1 <x <=1
12. arctg(x) ~ x – x3/3 + x5/5 – x7/7 + -1 <x <=1
13. (1-x)0.5 ~ 1 - x/2 – x2/(2*4) - 1*3*x3/(2*4*6) -1*3*5*x4/(2*4*6*9) -1 <=x <=1
14. (1+x)1/3 ~ 1 + x/3 -2x2/(3*6) + 2*5*x3/(3*6*9) -1 <=x <=1
15. (1+x)3/2 ~ 1 + 3x/2 + 3x2/(2*4) – 3x3/(2*4*6) +9x4/(2*4*6*8) -1 <=x <=1
16. arsh(x) ~ x - x3/(2*3) + 1*3*x5/(2*4*5) - 1*3*5x7/(2*4*6*7)
17. ch(x) ~ 1 + x2/2! + x4/4! + x6/6! +
18. sh(x) ~ x/1 + x3/3! + x5/5! + x7/7! +
19. Si(x) ~ x – x3/(3*3!) + x5/(5*5!) – x7/(7 *7!)+
20. Ci(x) ~ 1 – x2/(2*2! + x4/(4*4! – x6/(6*6! +
Дата добавления: 2014-12-27; Просмотров: 506; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |