// PascalABC.NET 3.2, сборка 1338 от 16.11.2016
type
matrix=array[1..3,1..3] of real;
vector=array[1..3] of real;
procedure MatPrint(a:matrix);
begin
for var i:=1 to 3 do begin
for var j:=1 to 3 do Write(a[i,j]:6:2);
Writeln
end
end;
procedure VecPrint(a:vector);
begin
for var i:=1 to 3 do Write(a[i]:6:2);
Writeln
end;
procedure MV(a:matrix; v:vector; var t:vector);
// Умножение матрицы на вектор
begin
for var i:=1 to 3 do begin
var s:=0.0;
for var j:=1 to 3 do
s+=a[i,j]*v[j];
t[i]:=s
end;
end;
procedure VS(a,b:vector; var t:vector);
// Вычитание векторов
begin
for var i:=1 to 3 do t[i]:=a[i]-b[i]
end;
function SP(a,b:vector):real;
// Скалярное произведение векторов
begin
Result:=0.0;
for var i:=1 to 3 do Result+=a[i]*b[i]
end;
begin
var A:matrix:=((1,2,3),(1,2,1),(3,2,0));
var B:matrix:=((3,1,2),(0,4,3),(1,1,1));
var p:vector:=(0.1,1.7,-1.5);
var q:vector:=(-1.6,0.8,1.1);
var r:vector:=(-0.7,1.3,0.2);
Writeln('Матрица А'); MatPrint(A);
Writeln('Матрица B'); MatPrint(B);
Writeln('Вектор p'); VecPrint(p);
Writeln('Вектор q'); VecPrint(q);
Writeln('Вектор r'); VecPrint(r);
var t1,t2,t3:vector;
MV(A,q,t1);
MV(B,p,t2);
VS(t1,t2,t3);
Writeln('Скалярное произведение равно ',SP(t3,r))
end.
Результаты
Матрица А
1.00 2.00 3.00
1.00 2.00 1.00
3.00 2.00 0.00
Матрица B
3.00 1.00 2.00
0.00 4.00 3.00
1.00 1.00 1.00
Вектор p
0.10 1.70 -1.50
Вектор q
-1.60 0.80 1.10
Вектор r
-0.70 1.30 0.20
Скалярное произведение равно -5.27