Студопедия

КАТЕГОРИИ:


Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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