0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 16
1

Найти угол между векторами

03.02.2016, 07:51. Показов 4565. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны координаты двух n-мерных векторов. A(a[1]; a[2]; ...; a[n]), B(b[1]; b[2]; ...; b[n]). Найти угол между векторами: cos(A ^ B)=(A * B)/( |A| * |B| ).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2016, 07:51
Ответы с готовыми решениями:

найти угол между векторами
Объясните как написать программу... Задача Заданы два вектора с координатами a(х1,y1,z1) и...

Определить угол a между векторами x и y по формуле
Заданы два вектора х = (x1, x2, x3, x4), y = (y1, y2, y3, y4). Определить угол a между векторами x...

Найти синус угла между векторами.
а = {1,5; 3; 6.7; -8}, B = 4; 6; -7.2; -9} Найти синус угла между векторами. применить...

Найти синус угла между векторами.
. А = {1,5; 3; 6.7; -8}, B = 4; 6; -7.2; -9} Найти синус угла между векторами. для вычисления...

7
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
03.02.2016, 08:07 2

Не по теме:

T-MAX, вопрос пишите в теме, а в заголовке темы пишите осмысленное название темы, кратко отражающее суть вопроса темы.



Добавлено через 3 минуты
Так что же всё-таки найти: угол между векторами или косинус угла между векторами?
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 16
03.02.2016, 08:09  [ТС] 3
Как я понял найти угол с помощью формулы нахождения косинуса угла.
0
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
03.02.2016, 09:09 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Не понимаю, какие сложности... Чего сами до сих пор не решили?

Замечу, что, если истинный угол между векторами больше π радиан (то есть, тупой), по приведённой формуле он будет определён с ошибкой, истинное значение угла будет α=2π-β, где α - истинный угол, β - угол, полученный с применением приведённой формулы.

Программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const m = 100;
 
type vec = array [1..m] of double;
 
procedure read_v(s: string; var x: vec; k: integer);
var i: integer;
begin
  writeln('Введите координаты вектора ', s);
  for i := 1 to k do
    begin
      write(s, '[', i, '] = ');
      readln(x[i])
    end
end;
 
procedure prn_v(s: string; var x: vec; k: integer);
var i: integer;
begin
  writeln('Вектор ', s);
  for i := 1 to k do write(' ', x[i]:19);
  writeln
end;
 
function p(var x, y: vec; k, mode: integer): double;
var i: integer;
    z: double;
begin
  z := 0;
  for i := 1 to k do z := z + x[i] * y[i];
  if mode = 1 then z := sqrt(z);
  p := z
end;
 
function arccos(a: double): double;
begin
  if a = -1
    then arccos := pi
    else if a = 0
      then arccos := pi / 2
      else if a = 1
        then arccos := 0
        else arccos := arctan(sqrt(1 - a * a) / a)
end;
 
var n: integer;
    a, b: vec;
 
begin
  repeat
    write('Введтите размерность пространства ( не менее 1 ): ');
    readln(n)
  until n > 1;
  read_v('A', a, n);
  read_v('B', b, n);
  writeln('Исходные векторы:');
  prn_v('A', a, n);
  prn_v('B', b, n);
  writeln;
  write('Угол между векторами: ',
         arccos(p(a, b, n, 0) / p(a, a, n, 1) / p(b, b, n, 1)):0:11,
         ' радиан.');
  readln
end.
1
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 16
03.02.2016, 10:49  [ТС] 5
Программа вводит только вершины вектора или координаты вершин векторов тоже? Пробую вывести косинус 90 градусов на экране выводится NaN
0
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
03.02.2016, 14:47 6
Цитата Сообщение от T-MAX Посмотреть сообщение
вершины вектора
Простите? Такого термина не существует.
Цитата Сообщение от T-MAX Посмотреть сообщение
Пробую вывести косинус 90 градусов
Интересно, это каким образом Вы пытаетесь вывести косинус угла в градусах, когда по умолчанию угол считается в радианах? Ох, нет... Есть у меня подозрение одно... Подставили это число в формулу для арккосинуса, да? Если так, то Вы уверены, что знаете тригонометрические и обратные тригонометрические функции?

Добавлено через 3 часа 18 минут
Вводится сначала количество измерений пространства, затем - координаты каждого вектора в данном пространстве. Так как измерений может быть более 3, координаты называются не x, y, z, а по-другому: a[1], a[2], a[3]... и так далее для вектора "a" и b[1], b[2], b[3]... и так далее для вектора "b". После ввода координат векторов программа просто вычисляет по Вашей формуле угол между векторами в радианах. При тестировании ошибок не выявлено. Изменять программу нет необходимости, разве что меру угла переделать на градусы, но это уже дело вкуса:
Pascal
60
         arccos(p(a, b, n, 0) / p(a, a, n, 1) / p(b, b, n, 1)) / pi * 180:0:11,
Что у Вас пошло не так? Откуда взялось NaN?
1
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 16
30.03.2016, 15:10  [ТС] 7
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Pascal
24
25
26
27
28
29
30
31
32
function p(var x, y: vec; k, mode: integer): double;
var i: integer;
    z: double;
begin
  z := 0;
  for i := 1 to k do z := z + x[i] * y[i];
  if mode = 1 then z := sqrt(z);
  p := z
end;
Что делает эта функция?(подробно)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7539 / 4399 / 2785
Регистрация: 22.11.2013
Сообщений: 12,605
Записей в блоге: 1
30.03.2016, 15:33 8
Считает сумму произведений соответствующих координат векторов или ее кв.корень, когда mode=1, там же написано.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2016, 15:33
Помогаю со студенческими работами здесь

В параллелограмме известны 2 стороны и тупой угол между ними. Найти P. S, и длины диагонали
1. В параллерограмме известно 2 стороны и тупой угол между ними. Найти P. S, и длины диагонали ...

Найти площадь треуголльника,две стороны которого равны a и b , а угол между ними y.
плизз помогите люди!!!!!! 1задача. найти площадь треуголльника,две стороны которого равны a и...

Вычислить угол между векторами
По задаваемым с помощью процедуры ввода вектора двум векторам x и y размерности n вычислить угол фи...

Заданы 2 вектора. Определить угол между векторами x и y. Вычисление скалярного произведения оформить в виде процедуры
Нуждаюсь в помощи т.к. совсем не разбираюсь в Pascal Заданы 2 вектора. Определить угол между...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru