Type
vec=array[1..n] of real;
Var
f :text;
arr_S,arr_py :vec;
s,ds,H,HX,HY,HYX,Ik,Ck,V,T,Ic,Cn :real;
i,j :byte;
k :integer;
BEGIN
Assign(f,'d:\work20.txt');
Rewrite(f);
ClrScr;
T:=0.25E-3;
V:=1/T;
K:=1500;
Writeln(f,'Решение:');
Writeln(f);
{============ Определим энтропию источника информации ===============}
Textcolor(5);
Writeln('1.Энтропия источника информации равна:');
Writeln(f,'Энтропия источника информации равна:');
Writeln('Промежуточные суммы:'); Writeln(f,'Промежуточные суммы:');
Readkey;
TextColor(15);
s:=0;
For i:=1 to n do
Begin
ds:=arr_px[i]*ln(arr_px[i])/ln(2); s:=s+ds;
Write(ds:7:3);
Write(f,ds:7:3);
if i mod 8 =0 then
begin
writeln;
writeln(f);
end;
End;
Writeln;
Writeln('Результат:');
Writeln(f,'Результат:');
HX:=-s;
Writeln(f);
TextColor(15);
Writeln('H(X)=',HX:6:3,' бит/симв.');
Writeln(f,' H(X)= ',HX:6:3,' бит/симв.');
Writeln(f);
{== Определим вероятности появления символов на входе приемника информации ==}
For j:=1 to n do
Begin
s:=0;
For i:=1 to n do
s:=s+arr_px[i]*arr_x[j,i];
arr_py[j]:=s;
End;
Textcolor(5);
Writeln('2.Вероятности появления символов на входе приемника информации равны:');
Writeln(f,'Вероятности появления символов на входе приемника информации равны:');
Readkey;
For i:=1 to n do
Begin
Textcolor(15);
Write(arr_py[i]:7:4,' ':2);
Write(f,arr_py[i]:7:4,' ':2);
if i mod 8 =0 then
begin
writeln;
writeln(f);
end;
End;
For j:=1 to n do
Begin
write(f,'p(y',j,')=');
s:=0;
For i:=1 to n do
begin
s:=s+arr_px[i]*arr_x[j,i];
if arr_x[j,i]<>0 then
begin
write('+',arr_px[i]:2:2,'·',arr_x[j,i]:2:2);
write(f,'+',arr_px[i]:2:2,'·',arr_x[j,i]:2:2);
end;
end;
arr_py[j]:=s;
Writeln('=',s:5:4);
Writeln(f,'=',s:5:4);
End;
{=== Проверка ===}
s:=0;
Writeln(f);
Writeln(f,' Проверка:',' ':8);
Write(f,'S=');
Writeln;
Write(' Проверка:',' ':8);
For i:=1 to n do
begin
write(f,'+',arr_py[i]:2:4);
s:=s+arr_py[i];
end;
Writeln('s=',s:6:2);Writeln(f,'=',s:6:2,';');
Writeln(f);
{=============== Oпределим энтропию приемника информации ==============}
TextColor(5);
Writeln('Энтропия приемника информации равна:');
Writeln(f,'Энтропия приемника информации равна:');
Writeln('Промежуточные суммы:');
Writeln(f,'Промежуточные суммы:');
Readkey;
Textcolor(15);
write(f,'Entrop=');
for i:=1 to n do
write(f,'+',arr_py[i]:2:4,'·','log2(',arr_py[i]:2:4,')');
write(f,'= -(');
s:=0;
For i:=1 to n do
Begin
ds:=arr_py[i]*ln(arr_py[i])/ln(2);
Write(ds:7:3);Write(f,ds:7:3);
if i mod 8 =0 then writeln;
s:=s+ds;
End;
HY:=-s;
write(f,')=',HY:2:3);
Writeln;
Writeln(f);
Writeln('Результат:');
Writeln(f,'Результат:');
TextColor(15);
Writeln('H(Y)=',HY:6:3,' бит/симв.');
Writeln(f,' H(Y)=',HY:6:3,' бит/симв.');
Writeln(f);
{================ Определим общую условную энтропию ==================}
TextColor(5);
Writeln('3.Общая условная энтропия равна:');
Writeln(f,'Общая условная энтропия равна:');
Writeln('Промежуточные суммы:');
Writeln(f,'Промежуточные суммы:');
Readkey;
Textcolor(15);
H:=0;
write(f,'H(Y/X)=[');
For i:=1 to n do
Begin
s:=0;
write(f,'+',arr_px[i]:1:2,'·(');
For j:=1 to n do
IF arr_x[i,j]<>0 then
Begin
ds:=arr_px[i]*arr_x[i,j]*ln(arr_x[i,j])/ln(2);
Write(ds:7:3);Write(f,'+',arr_x[i,j]:1:2,'·log2(',arr_x[i,j]:1:2,')');
s:=s+ds;
End;
write(f,')');
Writeln;
H:=H+s;
End;
HYX:=-H;
write(f,']=',HYX:2:3);
Writeln;
Writeln(f);
Writeln('Результат:');
Writeln(f,'Результат:');
TextColor(15);
Writeln(' H(Y/X)=',HYX:6:3,' бит/симв.');
Writeln(f,' H(Y/X)=',HYX:6:3,' бит/симв.');
Writeln;
Writeln(f);
{============== Определим скорость передачи информации ==============}
TextColor(5);
Writeln('4.Скорость передачи инфoрмации равна:');
Writeln(f,'Скорость передачи информации равна:');
Writeln(f);
Readkey;
Ck:=V*(HY-HYX);
TextColor(15);
Writeln(' Ck=V[H(Y)-H(Y/X)]=V[H(X)-H(X/Y)]=',Ck:10,' бит/с');
Writeln(f,' Ck=V[H(Y)-H(Y/X)]=V[H(X)-H(X/Y)]=',Ck:10,' бит/с');
Writeln(f);
{== Определим потери в канале связи при передаче 500 символов алфавита ==}
TextColor(5);
Writeln('Потери в канале связи при передаче ',k,' символов алфавита равны:');
Writeln(f,'Потери в канале связи при передаче ',k,' символов алфавита равны:');
Writeln(f);
Readkey;
Ik:=k*HYX;
TextColor(15);
Writeln(' Ik=k*H(Y/X)=',Ik:10,' бит');
Writeln(f,' Ik=k*H(Y/X)=',Ik:10,' бит');
Writeln(f);
{========== Определим среднее количество принятой информации ==========}
TextColor(5);
Writeln('Среднее количество принятой информации равно:');
Writeln(f,'Среднее количество принятой информации равно:');
Writeln(f);
Readkey;
Ic:=k*(HY-HYX);
TextColor(15);
Writeln(' Ic=k*[H(Y)-H(Y/X)]=k*[H(X)-H(X/Y)]=',Ic:10,' бит');
Writeln(f,' Ic=k*[H(Y)-H(Y/X)]=k*[H(X)-H(X/Y)]=',Ic:10,' бит');
Writeln(f);
Readkey;
Close(f);
END.
Підсумок роботи програми
1.Энтропия источника информации равна:
Промежуточные суммы:
-0.524 -0.350 -0.113 -0.066 -0.152 -0.113 -0.216 -0.313
-0.269 -0.244 -0.269 -0.216 -0.152 -0.186 -0.066 -0.152
Результат:
H(X)= 3.399 бит/симв.
2.Вероятности появления символов на входе приемника информации равны:
0.3051 0.1102 0.0208 0.0117 0.0297 0.0210 0.0502 0.0888
0.0701 0.0604 0.0693 0.0498 0.0306 0.0392 0.0112 0.0299
Проверка: s= 1.00
Энтропия приемника информации равна:
Промежуточные суммы:
-0.523 -0.351 -0.116 -0.075 -0.151 -0.117 -0.217 -0.310
-0.269 -0.245 -0.267 -0.216 -0.154 -0.183 -0.073 -0.151
Результат:
H(Y)= 3.416 бит/симв.
3.Общая условная энтропия равна:
Промежуточные суммы:
-0.009 -0.021 -0.021
-0.007 -0.005 -0.012
-0.001 -0.001 -0.001
-0.001 -0.001 -0.001 -0.001 -0.001
-0.002 -0.001 -0.002
-0.001 -0.001 -0.001 -0.001 -0.001
-0.003 -0.006 -0.004 -0.006 -0.003
-0.010 -0.005 -0.010
-0.005 -0.002 -0.005
-0.004 -0.004 -0.003 -0.004 -0.004
-0.005 -0.005 -0.004 -0.005 -0.005
-0.003 -0.003 -0.004 -0.006 -0.003
-0.003 -0.002 -0.003
-0.003 -0.005 -0.003 -0.005 -0.003
-0.001 -0.001 -0.001 -0.001
-0.002 -0.002 -0.001Результат:
H(Y/X)= 0.248 бит/симв.
4. Скорость передачи инфoрмации равна:
Ck=V[H(Y)-H(Y/X)]=V[H(X)-H(X/Y)]= 1.267E+04 бит/с
5.Потери в канале связи при передаче 1500 символов алфавита равны:
Ik=k*H(Y/X)= 3.718E+02 бит
6.Среднее количество принятой информации равно:
Ic=k*[H(Y)-H(Y/X)]=k*[H(X)-H(X/Y)]= 4.752E+03 бит
Література
1 Гойфман Э.Ш., Лосев Ю.И. Передача информации в АСУ. – М.: Связь, 1976.
2 Колесник В.Д., Полтырев Г.Ш. Курс теории информации. –М.: Наука, 1982.
3 Цымбал В.П. Теория информации и кодирование. –М.: Высш. шк., 1986.
4 Гринченко А.Г. Теория информации и кодирование: Учебн. пособие. – Харьков: ХПУ, 2000.