• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Вычислить скалярное произведение

  • Автор темы Автор темы Dima007
  • Дата начала Дата начала

Dima007

Ученик
Регистрация
1 Дек 2014
Сообщения
6
Реакции
0
Баллы
0
Вычислить скалярное произведение

Даны матрицы 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)

Помогите пожалуйста)
 
1. Скалярное.
2. Я.П.?
 
Извините, но я не понял, что вы имеете ввиду)
Да, скалярное)
 
Аналогичная задачка у нас весной уже разбиралась. Попробуйте, взяв ту программу за основу, адаптировать ее к своим данным:
http://www.tehnari.ru/f41/t94960/
 
Не могли бы Вы помочь мне с этим разобраться?)
 
Не могли бы Вы помочь мне с этим разобраться?)
Да куда я денусь...
Код:
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.
 
Спасибо огромное.

А можно переписать этот код без испльзования процедур?
 
Что Вы можете сказать об этом? Правильно ли?)))
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 := 0;
for i := 1 to 3 do
for j := 1 to 3 do
p := p + a[i, j] * y[j];

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

for i := 1 to 3 do
k := 0;
for i := 1 to 3 do k := k + q * p;
writeln('k = ', k:2:2);
readln
end.
 
Что Вы можете сказать об этом? Правильно ли?)))
Почти. Всё правильно, за исключением вот этого:
Код:
for i := 1 to 3 do
f or j := 1 to 3 do
q[i] := p[i] + z[i];
1. Пробел в служебном слове "for" НЕДОПУСТИМ.
2. Этот цикл по j тут вообще ни нафиг не нужен.
Вывод: вторую строку УДАЛИТЬ!
 
Назад
Сверху