Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Кафедра програмного забезпечення
Курсова робота
з курсу:
“Методи та засоби комп’ютерних
інформаційних технологій”
ЛЬВІВ – 2004
Зміст
Постановка задачі
3
Теоретичні відомості до завдання № 1
4
Розв’язання завдання № 1
5
Теоретичні відомості до завдання № 2
6
Розв’язання завдання № 2
7
Теоретичні відомості до завдання № 3
9
Розв’язання завдання № 3
11
Висновок
14
Постановка задачі (Варіант № 9)
Завдання №1
При передачі повідомлень по каналу зв’язку із шумами отримана наступна статистика: частота f1 із 100 раз була прийнята 97 раз, два рази була прийнята f2, один раз – f3. При передачі f2 98 раз прийнята f2, два рази f1. При передачі f3 96 раз прийнята f3, два рази f2, два рази f4. При передачі f4 99 раз прийнята f4, і один раз f3.
Скласти умовну канальну матрицю і визначити ентропію прийнятих повідомлень, якщо р(f1)=0,37, р(f2)=0,3, р(f3)=0,23, р(f4)=0,1
Завдання №2
Скласти програму для визначення еквівалентного опору та напругу Ucd приведеної схеми.
Дано:
U = 100 B; R1 = 80 Ом; R2 = 300 Ом; R3 = 160 Ом; R4 = 200 Ом; R5 = 20 Ом; R6 = 30 Ом. Дослідити залежність чутливості Ucd від R1, R2, R3. Побудувати залежності ΔUcd від ΔR1, ΔR2, ΔR3.
Завдання №3
Написати програму побудови коду Хемінга для передачі 11-ти розрядної комбінації 10110110110 реалізувати процедуру вправлення коду і продемонструвати її, якщо помилка має місце в 5-му розряді коректуючого коду.
Завдання №1
Теоретичні відомості
Термін умовної ентропії в теорії інформації використовується при визначення взаємозалежності між символами алфавіту який кодується, для визначення втрат при передачі інформації по каналах зв’язку, при обчисленні ентропії об’єднання.
У всіх випадках при обчисленні умовної ентропії в тому чи іншому вигляді використовуються умови ймовірності.
Якщо при передачі n повідомлень символ А з’явився m раз, символ В з’явився l раз, а символ А разом з символом В – k раз, то ймовірність появлення символу А р(А)=m/n, ймовірність появлення символу В р(В)=l/n, ймовірність появлення символів А і В р(АВ)=k/n, умовна ймовірність появлення символу А відносно символу В і умовна ймовірність появлення символу В відносно символу А
Якщо відома умовна ймовірність, то можна визначити і ймовірність одночасного появлення символів А і В, використовуючи формулу:
Від класичного визначення, формула умовної ентропії відрізняється тим, що в ній ймовірності – умовні:
де індекс і вибраний для характеристики довільного стану джерела повідомлень А, індекс j вибраний для характеристики довільного стану адресату В.
Розрізняють часткову і загальну умовну ентропю повідомлень.
Загальна умовна ентропія повідомлення В відносно повідомлення А характеризує кількість інформації, яка міститься в любому символі алфавіту, і визначається визначенням середнього по всіх символах, тобто по всіх станах з урахуванням ймовірності появлення символів алфавіту на невизначеність, яка залишається після того як адресат прийняв сигнал.
Часткова умовна ентропія визначається за формулою:
Поняття загальної і часткової умовної ентропії широко використовується при обчисленні інформаційних втрат в каналах зв’язку з шумами.
У випадку коли ми передаємо m сигналів А і очікуємо получити m сигналів В, дія перешкод в каналах звязку повністю описується з допомогою канальної матриці.
Розв’язок задачі.
Завдання:
При передачі повідомлень по каналу зв’язку із шумами отримана наступна статистика: частота f1 із 100 раз була прийнята 97 раз, два рази була прийнята f2, один раз – f3. При передачі f2 98 раз прийнята f2, два рази f1. При передачі f3 96 раз прийнята f3, два рази f2, два рази f4. При передачі f4 99 раз прийнята f4, і один раз f3.
Скласти умовну канальну матрицю і визначити ентропію прийнятих повідомлень, якщо р(f1)=0,37, р(f2)=0,3, р(f3)=0,23, р(f4)=0,1
Розв’язок:
1). Складаємо канальну матрицю:
2). Визначаємо ентропію прийнятих повідомлень.
Ентропія приймача буде рівна:
Завдання №2
Теоретичні відомості
Резистор - пасивний лінійний елемент, що володіє властивістю електричного опору. Струм і напруга електричного опору зв’язані законом Ома:
U = RI.
Величина, обернена до опору, називається електричною провідністю:
G = 1/R.
Активні лінійні елементи – це джерела електромагнітної енергії. Активні елементи поділяють на незалежні і залежні джерела.
Незалежні джерела можуть бути ідеальними чи реальними. Ідеальні джерела електрорушійної сили характеризуються напругою, яка не залежить від струму і характеризується електрорушійною силою Е. Внутрішній опір ідеального джерела ЕРС рівний нулю. Реальне джерело ЕРС має внутрішній опір і може бути відображене у вигляді послідовно з’єднаних ЕРС Е і опору R.
Ідеальне джерело струму: струм J джерела струму не залежить від напруги (внутрішня провідність джерела струму рівна нулю, опір джерела струму безмежно великий). Реальне джерело струму (з внутрішньою провідністю G = 1/R) може бути відображене у вигляді паралельної схеми, що містить джерело струму J , який чисельно дорівнює струму короткого замикання джерела струму і провідності G.
Перехід від схеми джерела ЕРС до еквівалентної схеми джерела струму за наступними співвідношеннями:
J = E/R, E = J/G, R = 1/G.
Закон Ома: на ділянці однорідного кола сила струму прямо пропорційна прикладеній напрузі та обернено пропорційна опору ділянки:
I = U/R
Закони Кіргофа. Для написання законів Кіргофа необхідно прийняти додатній напрям струму в кожній вітці.
Перший закон Кіргофа – алгебраїчна сума всіх струмів, що сходяться в будь-якому вузлі, дорівнює нулю.
Струми, направлені від вузла, умовно приймаються додатніми, а направлені до нього – від’ємними (або навпаки).
Другий закон Кіргофа – алгебраїчна сума ЕРС замкнутого контуру дорівнює алгебраїчній сумі спадів напруг в ньому.
Напрям обходу контура вибирається довільно.
Розв’язок задачі.
Спочатку визначаємо загальний опір електричного кола:
.
Використавши закони Ома і Кулона, запишемо:
; ; ; ;
.
Обчислення:
Rзаг = 200 Ом; I1 = 0,5 A; U2 = 60 B; I2 = 0,2 A; I3 = 0,3 A;
Ucd = 12 B.
Дослідимо тепер залежність Ucd від R1, R2, R3. Почергово фіксуємо два значення опорів і змінюємо третє.
R1, Ом
Ucd, В
10
18,46
24
16,67
38
15,19
52
13,95
66
12,9
80
12
94
11,21
108
10,53
122
9,92
136
9,38
150
8,89
R2, Ом
Ucd, В
230
11,44
244
11,57
258
11,7
272
11,8
286
11,9
300
12
314
12,09
328
12,17
342
12,24
356
12,31
370
12,37
R3, Ом
Ucd, В
80
16.35
100
15.24
120
14.28
143
13.43
153
12.67
160
12.00
184
11.39
200
10.85
207
10.35
213
9.89
232
9.48
Завдання №3
Теоретичні відомості
Код Хемінга - це код, який виявляє і виправляє в слові всі одиничні помилки і виявляє подвійні помилки. Код Хемінга відноситься до систематичних кодів.
Систематичні коди -- це коди, в яких інформаційні та надлишкові символи розташовані на певних наперед визначених місцях. Код Хемінга, як і будь-який (n,k)-код, містить k інформаційних і (n-k) надлишкових символів. Надлишкова частина коду будується таким чином, щоб при декодуванні можна було б встановити не лише факт наявності помилок в даній комбінації, Але й вказати номер позиції, в якій сталась помилка. Це досягається шляхом багатократної перевірки прийнятої комбінації на парність. Кількість перевірок рівна кількості надлишкових символів. При кожній перевірці отримують двійковий контрольний символ. Якщо результат перевірки дає парне число, то контрольному символу присвоюється ”0”, якщо непарне - то “1”. В результаті всіх перевірок утворюється (n-k)-розрядне двійкове число, що вказує на номер спотвореного символа. Для виправлення помилки достатньо змінити значення даного символа на протилежне.
Необхідна кількість перевірочних символів виводиться з формули
.
Значення перевірочних символів і номери їх позицій за методом Хемінга встановлюється одночасно з вибором контрольних груп кодової комбінації.
Алгоритм кодування методом Хемінга:
Маємо вхідний потік нулів і одиниць:
k1 k2 k3 k4 k5 k6 ... kn
Нехай кодова довжина (довжина відрізків, на які ділиться потік)рівна 7 біт.Для того,щоб їх закодувати, потрібно на певні визначені місцявнести надлишкові символи,які потім допоможуть декодувати цей потік.
В коді Хемінга надлишкові символи ставляться на місцях,що є степенями числа 2. Тобто, вихідною стрічкою буде потік
b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11
r1 r2 k1 r3 k2 k3 k4 r4 k5 k6 k7
де r[i] - надлишкові символи, k[i] - інформаційні символи
Методика побудови.
Символи r[i] знаходяться наступним чином :
порядковий номер в двійковій системі числення
00001 b1 r1=k1 xor k2 xor k4 xor k5
00010 b2 r2=k1 xor k3 xor k4
00011 b3 k1
00100 b4 r3=k2 xor k3 xor k4
00101 b5 k2
00110 b6 k3
00111 b7 k4
01000 b8 r4=k5 xor k6 xor k7
01001 b9 k5
01010 b10 k6
01011 b11 k7
r1-це сума по модулю 2 тих k[i], в яких в першому розряді порядкового
номера "1";
r2-це сума по модулю 2 тих k[i], в яких в другому розряді порядкового
номера "1";
r3- третьому;
r4- четвертому;
Алгоритм декодування методом Хемінга:
Для декодування записують систему рівнянь наступного вигляду
r1 xor k1 xor k2 xor k4 xor k5 xor k7 = 0
r2 xor k1 xor k3 xor k4 xor k6 xor k7 = 0
r3 xor k2 xor k3 xor k4 xor = 0
r4 xor k5 xor k6 xor k7 = 0
1 xor 1 = 0
0 xor 0 = 0
1 xor 0 = 1
0 xor 1 = 1
Якщо кодове слово правильне, то система рівнянь виконується. Якщо в кодовому слові є помилка, то права частина системи буде складатись не лише з нулів. Праву частину називають синдромом або розпізнавачем помилки. Щоб знайти помилку, необхідно прочитати синдром знизу вверх і перевести його в 10-ву систему числення. одержане число буде номером спотвореного символа.
Розв’язок задачі.
Текст програми
uses crt,dos;
var numpar:word;
s:string;
procedure code;
var i,r1,r2,r3,r4,r5,n,k:word;
a:array[1..20] of word;
label point1,point2;
begin
for i:=1 to 20 do
a[i]:=0;
n:=length(s);
k:=3;
if n>4 then inc(k);
if n>11 then inc(k);
for i:=1 to n do
a[i]:=word(s[i])-48;
writeln('information symbols: ',n);
writeln('excessive symbols: ',k);
r1:=a[1] xor a[2] xor a[4] xor a[5] xor a[7] xor a[9] xor a[11] xor a[12] xor a[14];
{ writeln('r1=',r1);}
r2:=a[1] xor a[3] xor a[4] xor a[6] xor a[7] xor a[10] xor a[11] xor a[13] xor a[14];
{ writeln('r2=',r2); }
r3:=a[2] xor a[3] xor a[4] xor a[8] xor a[9] xor a[10] xor a[11] xor a[15];
{ writeln('r3=',r3);}
if n<5 then goto point1;
r4:=a[5] xor a[6] xor a[7] xor a[8] xor a[9] xor a[10] xor a[11];
{ writeln('r4=',r4);}
if n<12 then goto point1;
r5:=a[12] xor a[13] xor a[14] xor a[15];
{ writeln('r5=',r5);}
point1:
insert (char(r1+48),s,1);
insert (char(r2+48),s,2);
insert (char(r3+48),s,4);
if n<5 then goto point2;
insert (char(r4+48),s,8);
if n<12 then goto point2;
insert (char(r5+48),s,16);
point2:
writeln('output flow: ',s);
end;
procedure decode;
var i,r1,r2,r3,r4,r5,c1,c2,c3,c4,c5,n,k:word;
a:array[1..30] of word;
label point1,point2;
begin
for i:=1 to 30 do
a[i]:=0;
n:=length(s);
k:=3;
for i:=1 to n do
a[i]:=word(s[i])-48;
r1:=a[1];
r2:=a[2];
r3:=a[4];
r4:=a[8];
r5:=a[16];
if n>7 then inc(k);
if n>15 then inc(k);
writeln('information symbols: ',n);
writeln('excessive symbols: ',k);
delete (s,1,1);
delete (s,1,1);
delete (s,2,1);
if n<8 then goto point2;
delete (s,5,1);
if n<16 then goto point2;
delete (s,12,1);
point2:
for i:=1 to n do
a[i]:=0;
for i:=1 to n-k do
a[i]:=word(s[i])-48;
c1:=r1 xor a[1] xor a[2] xor a[4] xor a[5] xor a[7] xor a[9] xor a[11] xor a[12] xor a[14];
{ writeln('c1=',c1);}
c2:=r2 xor a[1] xor a[3] xor a[4] xor a[6] xor a[7] xor a[10] xor a[11] xor a[13] xor a[14];
{ writeln('c2=',c2); }
c3:=r3 xor a[2] xor a[3] xor a[4] xor a[8] xor a[9] xor a[10] xor a[11] xor a[15];
{ writeln('c3=',c3);}
if n<8 then goto point1;
c4:=r4 xor a[5] xor a[6] xor a[7] xor a[8] xor a[9] xor a[10] xor a[11];
{ writeln('c4=',c4);}
if n<16 then goto point1;
c5:=r5 xor a[12] xor a[13] xor a[14] xor a[15]; gotoxy(10,10);
{ writeln('c5=',c5);}
point1:
writeln('output flow: ',s);
end;
begin
{clrscr;}
if ParamCount = 0 then
begin
Writeln('Zinchenko Vitaliy (KN-37) Lviv - 2004');
Writeln('-------------------------------------');
Writeln('Error: No parameters in command line');
writeln('Usage: heming.exe <command> <code>');
writeln(' command: c - to code');
writeln(' d - to decode');
end
else
begin
if ParamStr(1)='c' then begin
Writeln('Zinchenko Vitaliy (KN-37) Lviv - 2004');
Writeln('-------------Coding------------------');
s:=paramstr(2);
writeln('input flow: ',s);
code;
end
else
if ParamStr(1)='d' then begin
Writeln('Zinchenko Vitaliy (KN-37) Lviv - 2004');
Writeln('-------------Decoding----------------');
s:=paramstr(2);
writeln('input flow: ',s);
decode;
end
else
begin
Writeln('Zinchenko Vitaliy (KN-37) Lviv - 2004');
Writeln('-------------------------------------');
Writeln('Error in command line');
writeln('Usage: heming.exe <command> <code>');
writeln(' command: c - to code');
writeln(' d - to decode');
end
end;
end.
Висновок
В даній курсовій роботі розглянуті одні з основних розділів науки, яка вивчає інформаційні технології. Розв’язані задачі торкаються таких тем як кількісна оцінка інформації, основні закони і методи розрахунку лінійних електричних ланцюгів, виявлення і виправлення помилок в повідомленнях. Таким чином, очевидно, що для вирішення реальних проблем розробки, проектування, реалізації інформаційних технологій необхідні знання в багатьох розділах математики, електротехніки, програмування і суміжних науках.