Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2006, 00:12   #1
Zagran
Новичок
Джуниор
 
Аватар для Zagran
 
Регистрация: 22.12.2006
Сообщений: 2
По умолчанию help!!! работа с матрицами

Народ, не хочу наглеть, но нужна помощь. может кто-то решал такую задачу:"Даны матрицы А(m*m) и В(m*m) вычислить выражение (А-В)*В-5*А*В"
ЗАРАНЕЕ БЛАГОДАРЕН!!!
Zagran вне форума Ответить с цитированием
Старый 22.12.2006, 08:20   #2
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

две ооперации:
вычитание матриц
умножение матриц
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 04.01.2007, 19:34   #3
Zagran
Новичок
Джуниор
 
Аватар для Zagran
 
Регистрация: 22.12.2006
Сообщений: 2
По умолчанию мое решение

сам ее давно решил, забыл написать. вот листинг. мож кому пригодится
uses crt;
type t=array[1..10,1..10] of integer;
var
a,b,c,d:t;
i,j:byte;
n:integer;

procedure summa(a,b:t; var c:t; n:integer);
var i,j:integer;

begin

for i:=1 to n do
for j:=1 to n do
c[i,j]:=a[i,j]+b[i,j];
end;

procedure raznost(a,b:t; var c:t; n:integer);
var i,j:integer;

begin
for i:=1 to n do
for j:=1 to n do
c[i,j]:=a[i,j]-b[i,j];
end;

procedure umnog(a,b:t; var c:t; n:integer);
var i,j:integer;

begin
for i:=1 to n do
for j:=1 to n do
c[i,j]:=a[i,j]*b[i,j];
end;

procedure mnog(var c:t; n,k:integer);
var i,j:integer;

begin
for i:=1 to n do
for j:=1 to n do
c[i,j]:=n*c[i,j];
end;


begin
clrscr;
randomize;
writeln('Vvedite rang matric n=');
readln(n);
writeln('MATRICA A');
for i:=1 to n do
for j:=1 to n do
a[i,j]:=-5+random(30);
for i:=1 to n do
begin
for j:=1 to n do
write(' ',a[i,j]:3);
writeln;
end;

writeln('MATRICA B');
for i:=1 to n do
for j:=1 to n do
b[i,j]:=-5+random(30);
for i:=1 to n do
begin
for j:=1 to n do
write(' ',b[i,j]:3);
writeln;
end;

for i:=1 to n do
for j:=1 to n do
c[i,j]:=0;

raznost(a,b,c,n);
umnog(c,b,c,n);
umnog(a,b,d,n);
mnog(a,n,5);
summa(c,d,c,n);
writeln('MATRICA C');
for i:=1 to n do
begin
for j:=1 to n do
write(' ',c[i,j]:3);
writeln;
end;
readln;
end.

З.Ы. правильность не гарантирую.
Zagran вне форума Ответить с цитированием
Старый 04.01.2007, 20:08   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
З.Ы. правильность не гарантирую
Произведение матрицы на матрицу - совершенно другое (и конечно же намного сложнее.), а не c[i,j]=a[i,j]*b[i,j]!
Получается A*B=B*A? - это неверно!
zetrix вне форума Ответить с цитированием
Старый 08.01.2007, 15:54   #5
pinhead
Пользователь
 
Аватар для pinhead
 
Регистрация: 08.12.2006
Сообщений: 36
По умолчанию

Вот процедура перемножения двух матриц:
Код:
type
       matrix=array[1..MaxSize,1..MaxSize] of extended; 
{MaxSize размер матрици (максимальный)}
{ Умножение матриц }
procedure MultiMatr( N:byte; A,B: matrix; var C:matrix);
var i,j,k:byte;
begin
  FillChar(C,sizeof(C),0);
  for i:=1 to n do
    for j:=1 to n do
     for k:=1 to n do
        C[i,j]:=C[i,j]+ A[i,k]*B[k,j];
end;
К сожалению только для квадратных матриц
но легко переделать на матрици A[k, m]*B[m, l], где k,m,l-челые числа >0
Знание этого – Мудрость.
Умение этим пользоваться – Искусство.
pinhead вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами в паскале Andris Помощь студентам 7 29.05.2009 21:56
Работа с матрицами. Массивы. Xeon332 Помощь студентам 9 16.01.2008 21:03
Поблема с матрицами Ilius Помощь студентам 13 18.12.2007 19:27
Задачка с матрицами на С urgu_st Помощь студентам 4 02.11.2007 17:44