Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Погрешность входного параметра



Вычисление тригонометрической функции синус происходит на интервале значений аргумента (-π/2, π/2). При этом ошибка датчиков равна 0.005, ошибка АЦП должна быть хотя бы на порядок меньше ошибки датчиков, поэтому возьмем равной 0.0005.

Ошибка входного параметра складывается из ошибки датчика и ошибки АЦП:

 ;  , тогда:

Найдем величину максимальной неустранимой ошибки по следующей    формуле:

Возьмем производную от общего ряда (3):

 

Максимальный аргумент равен , подставив который в предыдущее выражение получим:

 

 

Вычислим необходимую разрядность АЦП – :

Отсюда .

Погрешность метода

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

Ряд Тейлора имеет бесконечное количество членов, поэтому, отбросив несколько членов общего ряда (3) по очереди, мы внесем ошибку ограничения. Для всякого знакопеременного сходящегося ряда эта ошибка ограничения по модулю меньше первого отброшенного члена.

Таким образом, ищем наименьшую ошибку, удовлетворяющую условию:

 учитывая, что максимально возможный аргумент:

·

·

·

·

·

·

·

 

Заметим, что после шестой степени условие  начинает выполняться постоянно, поэтому первым отбрасываемым членом будет

Тогда  можно ограничиться первыми пятью членами общего ряда (3):

(5)

 

с погрешностью разложения:

 

 

Аналогично определяется количество используемых членов для общего ряда (4), учитывая, что максимально возможный аргумент: :

 

(6)



Общая ошибка для ряда

Положим, что:

 погрешность представления аргумента,

 погрешность представления коэффициентов,

 ошибка округления.

Исходные величины a1, a2, a3, a4, a5 имеют абсолютные ошибки округления , где n - разрядность сетки. При выполнении операций перемножения появляются ошибки округления (округление происходит путем занесения в n+1 разряд 1). При выполнении операций сложения и вычитания ошибок округления не возникает, т.к. мы используем машину с фиксированной запятой.

Тогда:

 

Конечный ряд для вычисления функции синуса (5) может быть записан в общем виде как

 

,

где a1…a5 – определенные ранее константы.

Общую ошибку для ряда запишем следующим образом:

Запишем ошибки для отдельных операций:

Тогда конечное уравнение относительно с подставленными a1…a5 примет вид:

Решив его при , найдем разрядность сетки .

Теперь, зная разрядную сетку, уточним абсолютную ошибку округления коэффициентов:

Зная n, вычислим абсолютные ошибки в вычислениях:

= 0.0007440600245

 =

Вычисление суммарной ошибки машины

Суммарная ошибка нашей машины:

0.00000185537834

0.004635002636

 


 


Архитектура машины

 Наша машина может вычислять значения синуса в диапазоне .

К такому решению мы прибегли в связи с тем, что наша машина с фиксированной запятой, и она работает только со значениями аргументов, лежащими в диапазоне   [-1;1] (так же данное решение позволяет снизить ошибку, связанную с разложением в ряд при большом значении аргумента). Но и при таком решении при углах больше  аргумент будет больше единицы, поэтому на вход машины мы подаем не сам x, а x/2.

Для того чтобы избежать переполнений в вычислениях при x >  , вычисления производим по формуле:

·                                                  

для случая, когда аргумент лежит в интервале  

·                                                 

для случая, когда аргумент лежит в интервале .

Аргумент x поступает в машину с коэффициентом масштабирования .

Все константы преобразуем в двоичный 13-и разрядный код. Все данные в двоичном представлении (13 знаков после запятой).

В машине с инструкцией умножения используется 4 регистра, а в машине с заменой инструкции умножения, сдвигом и сложением - 7.

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

 

Регистры r3, Res, x, y – рабочие регистры. В них находится один из операндов команды, либо источник, либо адресат.

Регистры r1, r2, r4 – регистры данных. Эти регистры выполняют две функции:

· Хранят содержимое адресованного регистра данных, если ЦПУ осуществляет цикл чтения;

· Хранят данные, которые ЦПУ собирается записать в адресованный регистр данных (цикл записи).



Система команд

Для случая, когда в машине реализована функция умножения:

Input x -  ввод параметров в машину
Mul r1,r2(C) - умножить значение регистра r1 на значение регистра r2 (константу) и поместить результат в регистр r1.
Add r1, r2(C) - сложить значение регистра r1 и значение регистра r2 (константу) и поместить результат в регистр r1
Sub r1, r2 - вычесть из значения в регистре r1 значение регистра r2, поместить результат в регистр r1
In r1,[a] -  чтение данных из ячейки памяти в регистр r1
Out [a],r1 -  запись из регистра r1 в ячейку памяти
Mov r1 [a], [a](C, r2) - взять значение из ячейки памяти с адресом [a] (константу, значение регистра r2) и поместить результат в регистр r1 (в ячейку памяти с адресом [a]).
IfbZero r1 - если значение регистра r1 меньше нуля, то пропустить следующую команду
Call Label -  перейти к метке label.
Return   -  возврат к следующей строке после команды Call
Begin   - начало программы
End   - конец программы

 


 

Для случая, когда в машине функция умножения не реализована:

Input x - ввод параметров в машину
Mul r1,r2(C)  - умножить значение регистра r1 на значение регистра r2 (константу) и поместить результат в регистр r1.
Add r1, r2(C) - сложить значение регистра r1 и значение регистра r2 (константу) и поместить результат в регистр r1
Sub r1, r2 - вычесть из значения в регистре r1 значение регистра r2, поместить результат в регистр r1
In r1,[a] -  чтение данных из ячейки памяти в регистр r1
Out [a],r1 -  запись из регистра r1 в ячейку памяти
Mov r1 [a], [a](C, r2)  -  взять значение из ячейки памяти с адресом [a] (константу, значение регистра r2) и поместить результат в регистр r1 (в ячейку памяти с адресом [a]).
Shr r, C  -  сдвинуть значение регистра r на С бит вправо.
IfbZero r1  -  если значение регистра r1 меньше нуля, то пропустить следующую команду
Skp r, s -  проверяет s – й бит регистра r, если он равен 1, то переходим на следующую строчку, иначе – следующую строчку пропускаем
Dec r  -  вычесть из значения регистра r единицу и поместить в регистр r.
Call Label  -  перейти к метке label.
Return   -  возврат к следующей строке после команды Call
Begin   - начало программы
End   - конец программы

 


 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 164; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.032 с.)
Главная | Случайная страница | Обратная связь