Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Вычислить скалярное произведение (http://www.tehnari.ru/f41/t99864/)

Dima007 02.12.2014 00:34

Вычислить скалярное произведение
 
Даны матрицы A,z,y.
Код:

  2 4 6        -2        0.5
A= 3 5 2      z=  3      y= 3
  2 4 7          2        -2

k=(Ay+z,Ay)

Помогите пожалуйста)

Daniellos 02.12.2014 00:42

1. Скалярное.
2. Я.П.?

Dima007 02.12.2014 07:25

Извините, но я не понял, что вы имеете ввиду)
Да, скалярное)

Dima007 02.12.2014 07:28

Забыл, Pascal)))

Vladimir_S 02.12.2014 11:00

Аналогичная задачка у нас весной уже разбиралась. Попробуйте, взяв ту программу за основу, адаптировать ее к своим данным:
http://www.tehnari.ru/f41/t94960/

Dima007 02.12.2014 14:10

Не могли бы Вы помочь мне с этим разобраться?)

Vladimir_S 02.12.2014 14:51

Цитата:

Сообщение от Dima007 (Сообщение 1084917)
Не могли бы Вы помочь мне с этим разобраться?)

Да куда я денусь...
Код:

Type
 Vect=array[1..3] of real;
 Matr=Array[1..3,1..3] of real;

Const
 z:Vect=( -2,3, 2);
 y:Vect=(0.5,3,-2);
 a:Matr=((2,4,6),(3,5,2),(2,4,7));

Function Prod(PM:Matr;PV:Vect):Vect;
var
 i,k:Byte;
 M:Vect;
begin
 for i:=1 to 3 do M[i]:=0;
 for i:=1 to 3 do
  for k:=1 to 3 do
  M[i]:=M[i]+PM[i,k]*PV[k];
 Prod:=M;
end;

Function Sums(V1,V2:Vect):Vect;
var
 i:Byte;
begin
 for i:=1 to 3 do Sums[i]:=V1[i]+V2[i];
end;

Function Scal_Prod(V1,V2:Vect):Real;
var
 i:Byte;
 SP:Real;
begin
 SP:=0;
 for i:=1 to 3 do SP:=SP+V1[i]*V2[i];
 Scal_Prod:=SP;
end;

Var
 k:Real;

Begin
 k:=Scal_Prod(Sums(Prod(A,y),z),Prod(A,y));
 Writeln('k = ',k:0:3);
 Readln
End.


Dima007 03.12.2014 12:19

Спасибо огромное.

А можно переписать этот код без испльзования процедур?

Vladimir_S 03.12.2014 13:01

Цитата:

Сообщение от Dima007 (Сообщение 1085206)
А можно переписать этот код без использования процедур?

Можно. Но не нужно. А если нужно - то, пожалуйста, самостоятельно.

Dima007 07.12.2014 23:23

Что Вы можете сказать об этом? Правильно ли?)))
Цитата:

uses
crt;

type
Vect = array[1..3] of real;
Matr = Array[1..3, 1..3] of real;

const
y: Vect = (0.5, 3, -2);
z: Vect = (-2, 3, 2);
a: Matr = ((2, 4, 6), (3, 5, 2), (2, 4, 7));

var
p, q: vect;
i, j: byte;
k: real;

begin
clrscr;
for i := 1 to 3 do p[i] := 0;
for i := 1 to 3 do
for j := 1 to 3 do
p[i] := p[i] + a[i, j] * y[j];

for i := 1 to 3 do
f or j := 1 to 3 do
q[i] := p[i] + z[i];

for i := 1 to 3 do
k := 0;
for i := 1 to 3 do k := k + q[i] * p[i];
writeln('k = ', k:2:2);
readln
end.


Часовой пояс GMT +4, время: 20:34.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.