2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Не могу разобратся с программкой(Pascal)
Сообщение05.01.2010, 21:49 
Аватара пользователя


14/12/09
10
Каким образом можно отобразить в 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 
Заслуженный участник


04/05/09
4584
Вы, похоже, не знаете, что такое произведение матриц.
Если есть две матрицы с размерами $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 
Аватара пользователя


14/12/09
10
Я обратил внимание на ваши замечания.Не знаю правильно ли я понял, но программу я исправил таким образом:

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 
Заслуженный участник


26/07/09
1559
Алматы
2Igor
Цитата:
Я думаю, что это правильно

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group