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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2009, 17:44   #1
Арсенчик
Новичок
Джуниор
 
Регистрация: 16.05.2009
Сообщений: 15
По умолчанию Паскаль.Вычислить матрицу D

Даны произвольные матрицы A(4,4),B(4,4),C(4,4).Вычислить матрицу D=A(транспонированная)*В(транспонир ованная)+С(транспонированная)*A-2*C

Часть программы мной написана в необходимом мне виде(она выводит матрицы А,В,С и их транспонированный вариант):

uses crt;
const
n=4;m=4;
var a,b,c,at,bt,ct,d,e,f:array[1..n,1..m]of integer;
i,j,k:integer;
i1,i2,i3,i4 : integer;
j1,j2,j3,j4 : integer;
z:real;
begin
clrscr;

randomize;
Writeln('Matrica A:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(21)-10;
write(a[i,j]:4);
end;
writeln;
end;
readln;

writeln('Matrica At:');
for i1:=1 to n do
begin
for j1:=1 to m do
begin
at[j1,i1]:=a[i1,j1];
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
write(at[i,j]:4);
end;
writeln;
end;
readln;

randomize;
Writeln('Matrica B:');
for i:=1 to n do
begin
for j:=1 to m do
begin
b[i,j]:=random(21)-10;
write(b[i,j]:4);
end;
writeln;
end;
readln;

writeln('Matrica Bt:');
for i1:=1 to n do
begin
for j1:=1 to m do
begin
bt[j1,i1]:=b[i1,j1];
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
write(bt[i,j]:4);
end;
writeln;
end;
readln;

randomize;
Writeln('Matrica C:');
for i:=1 to n do
begin
for j:=1 to m do
begin
c[i,j]:=random(21)-10;
write(c[i,j]:4);
end;
writeln;
end;
readln;

writeln('Matrica Ct:');
for i1:=1 to n do
begin
for j1:=1 to m do
begin
ct[j1,i1]:=c[i1,j1];
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
begin
write(ct[i,j]:4);
end;
writeln;
end;
readln;
end.

Господа программисты,помогите выполнить действия на языке Паскаль по правилам математики и скомпановать программу..

http://ru.wikipedia.org/wiki/%D0%9F%...B0.D0.BC.D0.B8 - перемножение матриц и матрицы на число

для промежуточных действий необходимо создавать матрицу..

Буду очень благодарен и признателен!
Арсенчик вне форума Ответить с цитированием
Старый 16.05.2009, 20:12   #2
Арсенчик
Новичок
Джуниор
 
Регистрация: 16.05.2009
Сообщений: 15
По умолчанию

Господа программисты,как-то без оптимизма вы отнеслись к моей программе..точнее - вообще никак..Помогите пожалуйста!
Арсенчик вне форума Ответить с цитированием
Старый 18.05.2009, 21:22   #3
Арсенчик
Новичок
Джуниор
 
Регистрация: 16.05.2009
Сообщений: 15
Сообщение

http://www.cyberforum.ru/pascal/thread26862.html

и ещё:
program pr7;
uses crt;
const n=3; m=3; l=3;
var
a:array [1..n,1..m] of real;
b:array [1..m,1..l] of real;
c:array [1..n,1..l] of real;
i,j,k:integer;
s:real;
begin
clrscr;
{¬ ваЁж Ђ Ё¬ҐҐв а §¬Ґа*®бвм n*m}
{¬ ваЁж ‚ Ё¬ҐҐв а §¬Ґа*®бвм m*l}
{¬ ваЁж C Ё¬ҐҐв а §¬Ґа*®бвм n*l}
for i:=1 to n do
for j:=1 to m do
begin
write ('a[',i,',',j,']='); readln (a[i,j]);
writeln;
end;
for i:=1 to m do
for j:=1 to l do
begin
write ('b[',i,',',j,']='); readln (b[i,j]);
writeln;
end;
for i:=1 to n do
for j:=1 to l do
begin
s:=0;
for k:=1 to m do s:=s+a[i,k]*b[k,j];
c[i,j]:=s;
writeln('c[',i,',',j,']=',c[i,j]);
end;
writeln ('¬ ваЁж a');
for i:=1 to n do
for j:=1 to m do writeln('a[',i,',',j,']=', a[i,j]:7:3,' ');
writeln;
writeln ('¬ ваЁж b');
for i:=1 to m do
for j:=1 to l do writeln('b[',i,',',j,']=',b[i,j]:7:3,' ');
writeln;
writeln ('¬ ваЁж c=a*b');
for i:=1 to n do
for j:=1 to l do writeln('c[',i,',',j,']=',c[i,j]:7:3,' ');
writeln;
end.
Арсенчик вне форума Ответить с цитированием
Старый 19.05.2009, 14:34   #4
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Цитата:
Даны произвольные матрицы A(4,4),B(4,4),C(4,4).Вычислить матрицу D=A(транспонированная)*В(транспонир ованная)+С(транспонированная)*A-2*C
Где-то так:
Код:
uses crt;
const
n=4;m=4;
Type
TMatr = array[1..n,1..m]of integer;
var a,b,c,at,bt,ct,d,e,f:TMatr;
i,j,k:integer;

Procedure GenMatryc(var a : Tmatr);
begin
 for i:=1 to n do for j:=1 to m do a[i,j]:=random(21)-10;
end;

Procedure WriteMatric(a : Tmatr; Name: string);
begin
 writeln('Matrica ',Name);
 for i:=1 to n do
 begin
   for j:=1 to m do write(a[i,j]:4);
 writeln;
 end;
 writeln;
end;

Procedure TransponMatric(a : TMatr; var b: Tmatr);
begin
 for i:=1 to n do for j:=1 to m do b[i,j]:=a[j,i];
end;
Procedure SumMatic(a,b : TMatr; var c: Tmatr);
begin
 for i:=1 to n do for j:=1 to m do c[i,j]:=a[i,j]+b[i,j];
end;
Procedure MulMaticK(a : TMatr;k:integer; var c: Tmatr);
begin
 for i:=1 to n do for j:=1 to m do c[i,j]:=a[i,j]*k;
end;
Procedure MulMatic(a,b : TMatr; var c: Tmatr);
begin
 for i:=1 to n do
 for j:=1 to m do
 begin
 c[i,j]:=0;
 for k :=1 to  n do c[i,j]:=c[i,j]+a[i,k]*b[k,j];
 end;
end;


begin
clrscr;
randomize;
GenMatryc(a); GenMatryc(b);GenMatryc(c);
WriteMatric(a,'A'); WriteMatric(b,'B'); WriteMatric(c,'C');
TransponMatric(a,at); TransponMatric(b,bt); TransponMatric(c,ct);
WriteMatric(at,'At'); WriteMatric(bt,'Bt'); WriteMatric(ct,'Ct');
MulMatic(ct,a,e);
MulMatic(at,bt,f);
SumMatic(f,e,d);
MulMaticK(c,-2,e);
SumMatic(d,e,d);
WriteMatric(d,'D');
readln;
end.
протестируете сами
Всякое безобразие должно быть единообразным. Тогда это называется порядком.

Последний раз редактировалось Anatole; 19.05.2009 в 14:36.
Anatole вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложить матрицу... Zibiv Помощь студентам 7 19.05.2009 15:51
Объясните пожалуйста как можно считать значения в этом файле в вектор, 4 -ую матрицу, 6-ую матрицу ciaonataha Помощь студентам 1 30.03.2009 20:57
Задача на матрицу. Fest Помощь студентам 2 16.12.2007 05:54
Задачка на матрицу. Саня895 Помощь студентам 1 11.12.2007 08:45
Паскаль. Вычислить эквивалент. Nexx Помощь студентам 2 27.09.2007 19:21