Модуль обслуговування матриці
Unit Service;
Interface
Uses Crt,Glob;
Procedure Vivod_mtr(st,sb:byte; Var s:Matrix);
Procedure Rezmernost(Var st,sb:byte);
implementation
Procedure Vivod_mtr(st,sb:byte; Var s:Matrix);
Var i,j:byte;
begin
for i:=1 to st do
begin
for j:=1 to sb do
write('a[',i,',',j,']=',s[i,j]:6:3,' ');
writeln;
end;
end;
Procedure Rezmernost(Var st,sb:byte);
begin
Writeln('Введите размерность матрицы [m x n] :');
Write('m = ');
readln(st);
write('n = ');
readln(sb);
ClrScr;
end;
End.
Головна програма
Program Kursovaya_rabota;
Uses
Crt,Glob,Service;
Label G;
Var m,n:byte;
i,j:byte;
b,c:real;
u:real;
z:byte;
k:byte;
q:real;
p:byte;
x:masiv;
a:matrix;
BEGIN
ClrScr;
Writeln('Введите значенние "c" и "b" : ');
Write('c = ');
readln(c);
Write('b = ');
readln(b);
ClrScr;
Writeln('Как вы желаете ввести элементы матрицы?');
Writeln('Если автоматически-введите "1" ,если с клавиатуры-введите "0": ');
readln(z);
ClrScr;
If z=1 then
begin
Rezmernost(m,n);
for i:=1 to m do
begin
for j:=1 to n do
a[i,j]:=(exp((j-1)*ln(2)))*(abs((j-3))-1.3)*((ln((ABS(j-5))+(ABS(6.5-j))))/(ln(3)));
end;
end
else
if z=0 then
begin
Rezmernost(m,n);
writeln(' Введите элементы матрицы "A" : ');
writeln;
for i:=1 to m do
begin
for j:=1 to n do
readln(a[i,j]);
end;
ClrScr;
end else goto G;
writeln(' Матрица "A" : ');
writeln;
Vivod_Mtr(m,n,a);
for i:=1 to m do
begin
k:=0;
for j:=1 to n do if a[i,j]<0 then
begin
k:=k+1;
q:=a[i,j];
for p:=j downto k+1 do
a[i,p]:=a[i,p-1];
a[i,k]:=q;
end;
end;
Writeln;
Writeln(' Матрица "А" (перестановка):');
Writeln;
Vivod_Mtr(m,n,a);
for j:=1 to n do
x[j]:=0;
for i:=1 to m do
begin
for j:=1 to n do
x[j]:=x[j]+a[i,j];
end;
writeln;
Writeln(' Вектор "Х" : ');
writeln;
for j:=1 to n do
begin
x[j]:=x[j]/m;
write('x[',j,']=',x[j]:5:3,' ');
end;
Writeln;
u:=0;
for i:=1 to n do
if (c>b) or (c=b) then
u:=u+(abs(x[i])-1) else u:=u+sqr(x[i]);
Writeln;
Write(' Функция U=f(x[i]) : ');
Writeln;
Writeln('u = ',u:3:3);
writeln;
G: Repeat Until KeyPressed;
END.
Результати роботи програми
при m=n=3 і при однаковому форматі виведення для всіх видів даних
a[i,j]:6:3; При с=6,b=3. Введення за формулою.
Вихідна матриця
a[1,1]=1.434 a[1,2]= -1.100 a[1,3]= -8.069
a[2,1]=1.434 a[2,2]= -1.100 a[2,3]= -8.069
a[3,1]=1.434 a[3,2]= -1.100 a[3,3]= -8.069
Матриця з перестановкою від’ємних елементів
a[1,1]= -1.100 a[1,2]= -8.069 a[1,3]= 1.434
a[2,1]= -1.100 a[2,2]= -8.069 a[2,3]= 1.434
a[3,1]= -1.100 a[3,2]= -8.069 a[3,3]= 1.434
Масив Х
x[1]= -1.100 x[2]= -8.069 x[3]= 1.434
Значення функції: U = 7.604
Результати ручних розрахунків співпадають з прогамними, що свідчить про правільність роботи програми.