Помогите, пожалуйста, нужно написать текст программу в Паскаль Вычисление скалярного...

0 голосов
30 просмотров

Помогите, пожалуйста, нужно написать текст программу в Паскаль

Вычисление скалярного произведения
1)s=(Aq-Bp,r) - условие


Исходные данные:

A= 1 2 3
1 2 1
3 2 0

B= 4 1 2
0 4 3
1 1 1

P= 0.1
1.7
-1.5

q= -1.6
0.8
1.1

r= -0.7
1.3
0.2


image

Информатика (29 баллов) | 30 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// 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
(150k баллов)