2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Не могу разобратся с программкой(Pascal)
Сообщение05.01.2010, 21:49 
Аватара пользователя
Каким образом можно отобразить в Paskal перемножение матриц или квадрат матрицы?Мое задача заключается в том, что мне дано матрицу А n*n. Мне надо вычислить квадрат матрицы А и вывести ее на экран.Вроде задача не сложная, но что-то запутался именно как записать квадрат матрицы...Вот я начал делать, но тут именно с этим и не могу разобраться...:


Program Massiv_2;
uses crt;
var a,b : array [1..50, 1..50] of real;
i,j,f,h,n : integer;
begin
clrscr;
Writeln('Vvedite chislo "n" dlya rozryadnosti matricu:');
readln(n);
Writeln('Vvedite elementu matrucu A:');
For i:=1 to n do
For j:=1 to n do
Begin
Write('A[',i,',',j,']=');
readln(a[i,j]);
end;
For i:=1 to n do
For j:=1 to n do
begin
f:=f+1;
h:=h+1;
b[f,h]:=a[i,j]*a[i,j]+a[i,1+j]*a[i+1,j];
end;
Writeln('Matruca A v kvadrate = matricu B :');
For f:=1 to n do
For h:=1 to n do
begin
Write('B[',f,',',h,']=', b[f,h]:8:1);
readln;
end;
end.

 
 
 
 Re: Не могу разобратся с программкой(Pascal)
Сообщение05.01.2010, 23:09 
Вы, похоже, не знаете, что такое произведение матриц.
Если есть две матрицы с размерами $A: m \times n$ и $B: n \times s$, то их произведение будет иметь размеры $P: m \times s$, и элемент $P[i,j]$ произведение равен сумме $\sum\limits_{k=1}^{n}{A[i,k]*B[k,j]$. Порядок индексов важен. Для вычисления всей матрицы произведения нужен тройной цикл.

А то, что считает ваша программа - совершенно неправильно.

 
 
 
 Re: Не могу разобратся с программкой(Pascal)
Сообщение06.01.2010, 00:45 
Аватара пользователя
Я обратил внимание на ваши замечания.Не знаю правильно ли я понял, но программу я исправил таким образом:

Program Massiv_2;
uses crt;
var a,b : array [1..50, 1..50] of real;
i,j,k,n : integer;
begin
clrscr;
Writeln('Vvedit chislo "n" dlya rozryadnosti matruci:');
readln(n);
Writeln('Vvedit elementu matruci A:');
For i:=1 to n do
For j:=1 to n do
Begin
Write('A[',i,',',j,']=');
readln(a[i,j]);
end;
For i:=1 to n do
For j:=1 to n do
begin
b[i,j]:=0;
For k:=1 to n do
b[i,j]:=b[i,j]+a[i,k]*a[k,j];
end;
Writeln('Matrucya A y kvadrati = matruci B :');
For i:=1 to n do
For j:=1 to n do
begin
Write('B[',i,',',j,']=', b[i,j]:8:1);
readln;
end;
end.


Я думаю, что это правильно.Программа работает.

 
 
 
 Re: Не могу разобратся с программкой(Pascal)
Сообщение07.01.2010, 00:25 
2Igor
Цитата:
Я думаю, что это правильно

Так и есть, но написано ужасно. :)

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group