3.Анализ матричного выражения
Заданное матричное выражение :
Матрица A имеет три строчки и два столбца, т.е. размер матрицы можно записать в виде 2*3 , где первое число в выражении указывает на число строк , а второе на число столбцов. Матрица B состоит из двух строк и трех столбцов , т.е. ее размер 2*3. Матрица C представлена двумя строками и четырьмя столбцами, т.е. размер этой матрицы 2*4.
Первой операцией является разность двух матриц . В данном примере матрицы A и B имеют разные размеры, поэтому матрицу B следует транспонировать и получится матрица равная матрице D1 , тогда первую операцию возможно выполнить. Получится матрица размерностью 3*2.
Следующим действием является умножение матрицы D2 получившейся из разницы матриц и,на матрицу D3. Т.к. число столбцов матрицы D3 равно числу строк матрицы C, то произведение D3* C возможно.
Таким образом, матричное выражение можно вычислить. В результате получится матрица с тремя строками и четырьмя столбцами, т.е. размер этой матрицы 3*4.
4.Контрольный тест.
Для проверки правильности результатов берутся расчеты заданного матричного выражения из Excel.
5.Программа с процедурами.
Program RGZ;
uses crt;
type
mas=array[1..10,1..10] of real;
var
ma,mb,mc,na,nb,nc,i,k:integer;
z:real;
a,b,c,bt,atb,d:mas;
f:text;
Procedure mout(p:mas;m,n:integer);
{подпрограмма процедура mout для вывода на экран матрицы}
var {описание переменных процедуры}
i,j:integer;
begin {начало раздела операторов процедуры}
for i:=1 to m do
begin
for j:=1 to n do write(p[i,j]:5:2,' ');
writeln;
end;
end; {конец процедуры mout}
Procedure tr(p:mas; m,n:integer; var q:mas);
{подпрограмма процедура tr для транспонирования матрицы}
var {описание переменных процедуры}
i,j:integer;
begin {начало раздела операторов процедуры}
for i:=1 to m do
for j:=1 to n do q[j,i]:=p[i,j]
end; {конец процедуры tr}
Procedure mult(p,q:mas; m,n,l:integer; var r:mas);
{подпрограмма процедура mult для перемножения матриц}
var {описание переменных процедуры}
i,j,k:integer;
sum:real;
begin {начало раздела операторов процедуры}
for i:=1 to m do
for j:=1 to n do
begin
sum:=0;
for k:=1 to l do sum:=sum+p[i,k]*q[k,j];
r[i,j]:=sum; {присваивание суммы элементу матрицы В}
end
end; {конец процедуры mult}
Procedure minus(p,q:mas;m,n:integer;var r:mas);
var
i,k:integer;
begin
for i:=1 to m do
for k:=1 to n do r[i,k]:=p[i,k]-q[i,k];
end;
begin
assign(f,'eist.rgz');
reset(f);
read(f,ma,na);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.