Файл: Смолов, В. Б. Аналого-цифровые и цифро-аналоговые нелинейные вычислительные устройства.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.10.2024

Просмотров: 101

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

 

 

else t

[i]

+

v

[t ] — v

lk ]

 

 

 

 

 

 

 

end;

 

0 step

1

until n—1

do

 

 

 

 

 

 

 

for

i : =

 

 

 

 

 

 

 

begin

p : =

0;

sigma : =

i;

 

 

 

 

 

 

 

 

 

 

for

k : — 1

step

1

until m do

 

 

sigmav

[k]

 

 

begin

sigma : =

if

sigma Д 0

then

 

 

 

else sigma +

v

[k— 1 ] — v

[k]\

p ф

1

 

 

 

if

sigma > 0

Д t

[k] > 0

then

p : =

 

 

end;

 

 

if

(рч-2) X

2 = p then

1 else — 1;

 

 

walsh : =

 

 

sum : =

sum ф walsh X

/

[i ]

 

 

 

 

 

 

end;

 

: =

sumln; ap

[s,

1 ] : =

s

 

 

 

 

 

ap

[s, 2]

 

 

 

 

end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/ == 0;

 

2];

/

: =

/;

 

 

 

 

 

 

 

 

 

 

ml ! q : = ap [/,

 

n— 1 do

 

 

 

 

 

for s : =

j +

1

step

1

until

 

 

 

 

 

if

abs

(ap [s,

2 ])>abs

(q) then

 

 

 

 

 

 

begin q : = ap

[s,

21;

l : = ap

ts,

1 ]

end;

 

 

ap

[/,1 1 : =

ap

Ij,

1 У, ap [l, 2 ] : =

ap

[j, 21;

 

 

ap

[/,

1 ]: =

l; ap

[j, 2]

: =

q\

 

 

 

 

 

 

 

m2 i t

[0]

: =

/;

emax : =

 

0;

 

 

 

 

 

 

 

 

 

 

for

k : =

1

step

1

until

m do

 

 

 

 

 

 

 

begin

/ : =

k—1;

[j] >

0 then

i

[/] — v

[k ]

 

 

 

t [k]

: =

if t

 

 

 

else t

[/1 +

v

 

[/] — v

[k\

 

 

 

 

 

 

 

end;

 

 

 

 

1

 

until n— 1

do

 

 

 

 

 

 

 

for i : = 0 step

 

 

 

 

 

 

 

 

begin p : = 0; sigma : =

i;

 

 

 

 

 

 

 

 

 

 

for

k : =

1 step 1 until m do

 

sigma v

[k]

 

 

begin sigma : =

if sigmaф 0

then

 

 

 

else sigma +

v

 

[k—1 ] — v [k]\

 

 

1

 

 

 

if

sigma > 0

Д t [k] > 0

then

p : — p +

 

 

end;

 

if (p-r-2)

 

2 =

p

then

1

 

else—1;

 

 

 

walsh : =

X

 

 

 

 

f [i ] : =

f

[t ] — walsh X q\

 

 

abs (f [t ])

 

 

 

if abs (f

[t ])>emax then

emax : =

 

 

end;

3]

: =

emaxlfmax;

/ : =

/

+

1;

 

 

 

 

 

ap

[/,

 

 

 

 

 

if emax^>epsa then go to ml;|

 

 

 

 

 

 

 

 

begin

array

prap

[0 :

 

1,

1 : 3 ] ;

 

 

 

 

 

 

 

Ip

3 (ap,

prap);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

print

(prap);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sv [14] : = j;

svl);

 

 

 

 

 

 

 

 

 

 

 

 

write

tape

(sv,

 

 

 

 

 

 

 

 

 

 

 

 

write

tape (prap, prapl)

 

 

 

 

 

 

 

 

 

250


end end

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

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

ряда вычисляются по формулам (4-20) — (4-22), приведенным в четвертой главе.

В программе приняты следующие условные обозначения: sp — сумма значений функции fs (х), входящая в формулу (4-22) со знаком плюс; sn — сумма значений функции f, (х), входящая в формулу (4-22) со знаком минус; s — текущий номер коэффициента ряда Хаара (строка массива ар); I — число точек на полуинтервале задания функции Хаара с номером i; t — число, функций Хаара в группе с номером г; pH и phi — соответственно номер пер­

вой и последующей точек первого подмножества точек аргумента, на котором функции Хаара принимает значение + 1; р/2 и ph2 — соответственно номер

первой и последней точек второго подмножества точек аргумента, на котором функция Хаара принимает значение — 1; q наибольший по модулю ко­ эффициент с порядковым номером /, принадлежащий группе с номером й

begin real eps, ерш, emax, fmax, sum, sn, sp, q;

pl2,

ph2;

 

 

integer i, j, k, l, m, n,

i1,

t,

s,

p,

pl\, phi,

 

 

array

sv

[1

: 14];

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

read (eps);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

read tape (svl, sv);

 

 

fmax : = sv [7];

 

 

 

 

 

 

m : sv

[1 ];

n : =

sv

[2]

 

 

 

 

 

 

begin

array

f

 

[0 : n— 1 ], ap

[0 : n—1,

1 : 4 ] ;

 

 

 

 

 

read tape

(ft,

f);

 

 

sum : =

0;

 

 

 

 

 

 

 

 

ерш : — eps X fmax;

 

 

 

 

/ [k];

 

 

mO : for

k: =

0 step

1 until

n—1

do sum : = sum +

 

 

ар

[0,

1 ] : =

ap

[0,

2] : = 0; ap [0,

3]

: = sumln;

 

 

ml : for

i : =

1

step

1

until

 

m

do

 

 

 

 

 

 

 

 

begin

/ : 2

 

t

(m—i);

t : =

2

t

(i— 1);

 

 

 

 

 

 

 

for

/

: =

1

step

1

until t

do

t -f

/—1;

 

 

 

 

 

 

begin

sn : = sp : = 0; s : =

 

 

 

 

 

 

 

pll : = 2 X l

X (/— 1); phi ;

=

pll

+ /— 1;

 

 

 

 

 

pl2 : = phi +

1; ph2 : = pl2 -f

/— 1;

 

 

 

[k ];

 

 

for

 

k := pll

step

1

 

until phi

do

sp : = sp -f

/

 

 

for

 

k := pl2

step

1

 

until ph2

do

sn : = sn +

f

\k);

 

 

ap

 

[s, 1 ] : =

i; ap

 

[s, 2] : = /; ap [s,

3]

: =

0.5 X

 

 

(spsn)/l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end;

0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s ;

=

 

 

 

ap

[s,

 

 

 

 

ap [s, 2]; q : =

ap

Is, 3];

 

m2: p : = s; i : =

1 ];

/

: =

 

for k : =

s -f 1 step

1

until

n— 1 do

 

 

 

 

 

 

if

abs

(ap

 

[k, 3 ])>afcs

(q)

then

 

 

 

 

 

 

 

b *

251


begin p : =

k] i : =

ap Ik, 1 ];/ : =

ap [k, 2); q : =

 

3]

end;

 

 

 

 

 

 

 

do ap [p,

il ] := ap

[s, il ];

for

/1

: =

 

1 step 1 until 3

ap

[s,

1 ] : =

/;

ap

[s, 2]

: =

/; ap

[s,

3] : =

q;

 

 

 

m3 : if p =

0

then

 

 

 

 

 

 

 

 

 

 

 

 

begin

for

k : = 0 step 1 until

n— l

do f

 

[k] : =

f

[k] q;

 

go

to m4

 

 

 

 

 

 

 

 

 

 

 

 

 

end;

 

 

(m—/); pH : =

2 X l X (/— 1);

phi

 

 

 

 

/ : =

2 1

: =

p/1

+

p/2 :

=

phi

+

1; ph2 : =

pl2+ l — 1;

 

 

 

 

 

 

 

for

k

: =

p/1

step 1

until

p/il

do / [&] : =

/

[yfe] —

<7;

 

for

k

: =

p/2

step 1

until

ph2

do / (£ ];

=

/

[yfe] +

q■

 

mA : emax : = 0;

 

 

1 until n— 1

 

 

 

 

 

 

 

 

 

for

й : =

0 step

do

 

 

(f

 

 

 

 

 

if abs

(f [k])i>emax then emax : = abs

 

[&]);

 

 

 

ap

[s,

41 :.=

emax/fmax; s : =

s +

1;

 

 

 

 

 

 

 

if emax'p-epsa then go to m2;

 

 

 

 

 

 

 

 

 

begin

array

prap [0 : s—1, 1: 4 ] ;

 

 

 

 

 

 

 

 

 

lp3

{ap,

prap)]

 

 

 

 

 

 

 

 

 

 

 

 

print

{prap)\

 

 

 

 

 

 

 

 

 

 

 

 

 

sv

[14]

: = s— 1;

 

 

 

 

 

 

 

 

 

 

 

 

write

tape

{sv, svl);

 

 

 

 

 

 

 

 

 

 

end

write

tape

{prap,

prapl)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программа расчета цепных сеток. Программа предназначена для опре­

деления проводимостей резисторов связи цепной сетки.

 

 

число

узлов

Исходными данными

для

работы программы являются:

сетки п, выходная проводимость сетки уо, проводимость нагрузки ylo, коэф­

фициенты передачи

источников

напряжения U. на выход k*{

и внутренние

проводимости

этих

источников

Коэффициенты передачи

и внутренние

проводимости

представлены в программе в виде одного массива ky [1 : п,

1 : 2 ] . Первый элемент г-й строки этого массива соответствует коэффициенту

передачи, а

второй — внутренней проводимости.

 

В результате работы программы определяются проводимости связи цеп­

ной сетки у

которые сохраняются в массиве у [1

: п].

Программа осуществляет последовательное

вычисление по формулам

(3-28), (3-29) и проверяет условие (3-30), выполнение которого обеспечивает получение положительного значения проводимости связи. Если же эти ус­ ловия не выполняются, то программа печатает сообщение о том, что даль­ нейший расчет не имеет смысла.

В программе используются следующие обозначения: уго — правая про­ водимость i 1-го узла К(-_j, угп правая проводимость г-го узла Y{ ,

yin — левая проводимость г-го узла j/t-, k — коэффициент передачи из теку­ щего узла в предшествующий /С, - р — множитель коэффициента пере­

дачи, Q — коэффициент передачи первого источника на выход,

begin real уо, уго, ylo, угп, k, р, q, h] integer i, n]

252


read (yo, ylo, n);

begin array

ky

[1 : n,

1

: 2],

у

[1 : n];

 

 

 

 

 

read (ky);

 

 

 

 

 

n do ky [t,

1 ] : =

ky

[i, 1 ]lky

[1, 1 ];

for i : = 2 step 1 until

 

yro : =

yo ky

[1 ,2 ];

 

ky

 

 

p : =

11q;

 

q : =

ky

[1,

2 У(yro +

ylo +

[1 ,2 ]);

 

for i : = 2 step 1 until n do

yro + ylo)

X

 

ky [i,

1 ];

 

begin

h :v=

(ky

[/—1,

2]

+

 

 

if

yro X p -< h V

ky

[i,

2]

X p < / i

then

 

 

begin

print text (расчет невозможен);

 

 

 

 

 

go

to fin

 

 

 

 

 

 

 

 

 

 

 

 

end;

 

 

li,

2]

X

yro X

plky

U,

 

1 ]l(yro +

ylo -f-

yrn : = ky

 

ky

 

[i— 1,

2]) — ky

[i, 2];

 

 

 

 

2] X p

у

[i— 1] : =

ky

 

[i, 2]

X yro X pl(ky

[t,

ky

 

[i,

1 ]

X (yro +

ylo +

ky

Et— 1,

2]));

2]);

 

k : =

у

[t— 1 ]/(y

 

[t— 1 ] + ylo + ky

[/—1,

 

yin

: = k X (ylo -f

ky

[i— 1, 2]);

 

 

 

 

 

p: =

p

X

k;

yro : =

yrn;

ylo : = yin

 

 

 

 

end;

 

 

yrn;

 

 

 

 

 

 

 

 

 

 

 

 

у [n]

: =

 

 

 

 

 

 

 

 

 

 

 

 

print

(y);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fin : end , end

11-3. Моделирование цифро-аналоговых функциональных преобразователей

Проверка правильности работы разрабатываемой схемы связана с вы­ полнением большого объема работы, которая включает в себя изготовление макета схемы и исследование этого макета. В процессе такого исследования обычно выявляются ошибки, допущенные при проектировании и оформле­ нии схемы, анализируется 'точность работы схемы и влияние на точность работы изменений отдельных параметров и условий ее эксплуатации. Про­ верка точности работы схемы состоит, как правило, в измерении выходных величин для всех значений входного кода и в последующей обработке резуль­ татов измерений. Необходимость просмотра всех значений входного кода объясняется тем, что аналитические методы анализа точности работы схем, позволяют, как правило, определить либо приближенное значение макси­ мальной погрешности без учета знаков погрешностей параметров схемы, либо среднеквадратическое значение погрешности при условия, что отклонения параметров схемы являются случайными величинами и распределены по нор­ мальному закону |6, 21].

Моделирование схем преобразователя на ЦВМ не заменяет этапа маке­ тирования, однако оно позволяет сократить общее время, затрачиваемое на проверку правильности работы схемы, за счет следующего:

1)обнаружения ошибок, допущенных при расчете и оформлении схемы,

2)получения предварительных сведений о точности работы схемы,

3)исследования влияния погрешностей параметров схемы на точность

ееработы,

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

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

253