Форум: "Основная";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
ВнизСпасите меня!!! Найти похожие ветки
← →
rastaman (2002-01-13 15:12) [0]Горю я вот((( мне нужно до завтра сделаь прогу которая суммирует умножает матрицы а я не умею че делать? может есть гдето готовая такая прога?
← →
Pat (2002-01-13 18:22) [1]А что не умеешь то?
Ну вот тебе алгоритмы...
Матрица C[m,l]=А[m,n]*B[n,l]
for i:=1 to m do
for x:=1 to l do
for j:=1 to n do
c[i,x]:=c[i,x] + a[i,j] * b[j,x];
Для суммы еще проще...
Матрица C[m,n]=А[m,n]+B[m,n]
for i:=1 to m do
for j:=1 to n do
c[i,j]:=a[i,j] + b[i,j];
← →
Adder (2002-01-13 18:29) [2]Вот... был у меня старый кривой unit на BP7...
к сожалению, без комментариев - а сейчас леньки комментить...
Придется разбираться самостоятельно :)
unit matrix_;
interface
const
Razm_CA=4;Razm_RA=4;
Razm_CB=1;Razm_RB=4;
Razm_CC=Razm_CB;Razm_RC=Razm_RA;
Razm_R=90;Razm_C=90;Razm=4;
type
PMatrixSq=^MatrixSq;
MatrixSq = array[1..Razm,1..Razm] of double;
PMatrixA=^MatrixA;
MatrixA = array[1..Razm_RA,1..Razm_CA] of double;
PMatrixB=^MatrixB;
MatrixB = array[1..Razm_RB,1..Razm_CB] of double;
PMatrixC=^MatrixC;
MatrixC = array[1..Razm_RA,1..Razm_CB] of double;
PLine=^Line;
Line = array[1..Razm{_C}] of double;
PVec=^Vec;
Vec = array[1..Razm{_R}] of double;
procedure M_Sum(A:PMatrixA;B:PMatrixA;C:PMatrixA);{A+B=C}
procedure M_Razn(A:PMatrixA;B:PMatrixA;C:PMatrixA);{A-B=C}
procedure M_On_Const(A:PMatrixA;C:double;B:PMatrixA);{A*C=B}
procedure M_Multiply(A:PMatrixA;B:PMatrixB;C:PMatrixC);{A*B=C;Razm_R=Razm_C=Razm}
procedure MV_Multiply(A:PMatrixA;B:PVec;C:PVec);{A*B=C;Razm_R=Razm_C=Razm}
procedure MSq_Multiply(A:PMatrixSq;B:PMatrixSq;C:PMatrixSq);{A*B=C;Razm_R=Razm_C=Razm}
procedure MSV_Multiply(A:PMatrixSq;B:PVec;C:PVec);{A*B=C;Razm_R=Razm_C=Razm}
implementation
procedure M_Sum(A:PMatrixA;B:PMatrixA;C:PMatrixA);{A+B=C}
var i,j:byte;
begin
for i:=1 to Razm_RA do
for j:=1 to Razm_CA do C^[i,j]:=A^[i,j]+B^[i,j];
end;
procedure M_Razn(A:PMatrixA;B:PMatrixA;C:PMatrixA);{A-B=C}
var i,j:byte;
begin
for i:=1 to Razm_RA do
for j:=1 to Razm_CA do C^[i,j]:=A^[i,j]-B^[i,j];
end;
procedure M_On_Const(A:PMatrixA;C:double;B:PMatrixA);{A*C=B}
var i,j:byte;
begin
for i:=1 to Razm_RA do
for j:=1 to Razm_CA do B^[i,j]:=A^[i,j]*C;
end;
procedure MSq_Multiply(A:PMatrixSq;B:PMatrixSq;C:PMatrixSq);{A*B=C;Razm_R=Razm_C=Razm}
var i,j,k:byte; sum:MatrixSq;
begin
for i:= 1 to Razm do
for j:= 1 to Razm do sum[i,j]:=0;
for i:= 1 to Razm do
for j:= 1 to Razm do
for k:=1 to Razm do sum[i,j]:=sum[i,j]+B^[i,k]*A^[k,j];
for i:= 1 to Razm do
for j:= 1 to Razm do c^[i,j]:=sum[i,j];
end;
procedure M_Multiply(A:PMatrixA;B:PMatrixB;C:PMatrixC);{A*B=C;Razm_R=Razm_C=Razm}
var i,j,k,m:byte; sum:MatrixC;
begin
if Razm_CA <> Razm_RB then exit;
for i:= 1 to Razm_RA do
for j:= 1 to Razm_CB do sum[i,j]:=0;
for i:= 1 to Razm_RA do
for j:= 1 to Razm_CB do
for k:=1 to Razm_RB do
sum[i,j]:=sum[i,j]+A^[i,k]*B^[k,j];
for i:= 1 to Razm_RA do
for j:= 1 to Razm_CB do c^[i,j]:=sum[i,j];
end;
procedure MV_Multiply(A:PMatrixA;B:PVec;C:PVec);{A*B=C;Razm_R=Razm_C=Razm}
var i,j,k,m:byte; sum:Vec;
begin
if Razm_CA <> Razm then exit;
for i:= 1 to Razm_RA do sum[i]:=0;
for i:= 1 to Razm_RA do
for k:=1 to Razm{_RB} do
sum[i]:=sum[i]+A^[i,k]*B^[k];
for i:= 1 to Razm_RA do c^[i]:=sum[i];
end;
procedure MSV_Multiply(A:PMatrixSq;B:PVec;C:PVec);{A*B=C;Razm_R=Razm_C=Razm}
var i,j,k,m:byte; sum:Vec;
begin
for i:= 1 to Razm do sum[i]:=0;
for i:= 1 to Razm do
for k:=1 to Razm do
sum[i]:=sum[i]+A^[i,k]*B^[k];
for i:= 1 to Razm do c^[i]:=sum[i];
end;
end.
← →
lamer2000 (2002-01-13 20:27) [3]Могу скинуть на мыло опер с комплексными матрицами.
← →
-=CrazyFish=- (2002-01-14 00:28) [4]можешь скачать у меня на страничке в программах
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c