11 и 61 ГОУ МГИУ Вторник, 22.07.2025, 02:45
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
Угол между двумя векторами
TWIXДата: Воскресенье, 27.01.2008, 12:11 | Сообщение # 1
Рядовой
Группа: 61
Сообщений: 27
Статус: Offline
ПОскажите как найти угол между двумя векторами, есои можно попоробнее распишите.

 
Twilight_SummonerДата: Воскресенье, 27.01.2008, 12:52 | Сообщение # 2
Рядовой
Группа: Заблокированные
Сообщений: 37
Статус: Offline
Есть два способа нахождения угла между векторами. Оба связаны через скалярное произведение.
ИМХО проще, когда у тебя имеются координаты векторов, ибо тогда все сведется к формуле:
cos(a)=((x1*x2+y1*y2+z1*z2)/(sqrt(x1**2+y1**2+я1**2)*sqrt(ч2**2+н2**2+я2**2)), откуда угол находишь через арккосинус. Общий же вид формулы:
cos(a)=(a1*a2)/(|a1|*|a2|)

Добавлено (27.01.2008, 12:25)
---------------------------------------------
(ч, н, я - x,y,z). Надо Punto Switcher откалибровать, а то он порой такое выдает, что хоть стой хоть падай.

Добавлено (27.01.2008, 12:52)
---------------------------------------------
PS это элементарно, Ватсон! =)


Разгильдяй, пофигист по жизни, весельчак)
 
kmeawДата: Воскресенье, 27.01.2008, 13:09 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
Code

(%i9) x1:1; y1:0; x2:10; y2:5;
(%o9)                    1
(%o10)                    0
(%o11)                    10
(%o12)                    5
(%i13) solve(determinant(matrix([x1,y1],[x2,y2])) = sqrt((x1*x1+y1*y1)*(x2*x2+y2*y2)) * sin(a), a);

`solve' is using arc-trig functions to get a solution.
Some solutions will be lost.
(%o13)                        [a = asin(1/sqrt(5))]


--
kmeaw aka bdd1
 
Twilight_SummonerДата: Воскресенье, 27.01.2008, 13:16 | Сообщение # 4
Рядовой
Группа: Заблокированные
Сообщений: 37
Статус: Offline
kmeaw, ты как всегда, в своем репертуаре. Можешь прокомментировать, что это все значит, пожалуйста? А то даже мне интересно стало)))

Разгильдяй, пофигист по жизни, весельчак)
 
kmeawДата: Воскресенье, 27.01.2008, 14:00 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
Это пример вычисления угла между векторами на maxima. Я привёл его, потому что хотел показать, что скалярное произведение - далеко не единственный метод узнать угол, зная координаты, есть ещё и векторное произведение.

Если кто захочет попробовать выполнить это, строки (%i??) вводится пользователем, а (%o??) - ответы maxima. В (%i9) я задал переменные (макросы, на самом деле) x1,y1,x2 и y2, в (%i13) - попросил систему решить уравнение.


--
kmeaw aka bdd1
 
Twilight_SummonerДата: Воскресенье, 27.01.2008, 14:07 | Сообщение # 6
Рядовой
Группа: Заблокированные
Сообщений: 37
Статус: Offline
Quote (kmeaw)
далеко не единственный метод узнать угол, зная координаты, есть ещё и векторное произведение

Ну, это само собой разумеется.
А вообще твой метод тоже неплох, хотя я никогда не пробовал подобное делать в Максиме. Надо будет взять на заметку.


Разгильдяй, пофигист по жизни, весельчак)
 
kmeawДата: Воскресенье, 27.01.2008, 15:21 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
maxima и gnuplot очень помогают при решении типовых расчётов. Например, я недавно написал на связке lighttpd+ruby(erb)+gnuplot решение типового по мат.статистике. Ведь сам решать всё равно будешь, а приложить на 5-7% больше усилий, чтобы решить задачу в общем случае и помочь другим, не так сложно.

--
kmeaw aka bdd1
 
Twilight_SummonerДата: Воскресенье, 27.01.2008, 15:54 | Сообщение # 8
Рядовой
Группа: Заблокированные
Сообщений: 37
Статус: Offline
kmeaw, ясненько. Учту и попробую в будущем предпринять что-то похожее при решении. Спасибо.

Разгильдяй, пофигист по жизни, весельчак)
 
sma39Дата: Воскресенье, 27.01.2008, 22:18 | Сообщение # 9
Лейтенант
Группа: 61
Сообщений: 114
Статус: Offline
Во, спасиб. Тоже надо было.

И еще вопрос: как раскладывать вектор по векторам?
есть точки
а(1,4,-3)
б(4,-1,-2)
с(-1,0,-1)
д(0,8,0)
е(11,15,-1)

нужно вектор ае разложить по векторам аб,ац,ад.

Добавлено (27.01.2008, 22:18)
---------------------------------------------
Народ!!!! выручайте. Завтра контроша, мне это там надо будет написать!


 
kmeawДата: Воскресенье, 27.01.2008, 22:42 | Сообщение # 10
Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
sma39, это очень просто. Пусть вектор t надо разложить по векторам x, y и z. Фактически, надо найти координаты вектора t в базисе [x,y,z]. Т.е. найти такие числа a,b,c, что a*x+b*y+c*z = t. Решаем систему (расписываем векторное уравнение на 3 скалярных) любым методом (например, методом Крамера), получаем a,b,c. Искомое разложение: a*x+b*y+c*z.

--
kmeaw aka bdd1
 
winnerДата: Воскресенье, 27.01.2008, 22:51 | Сообщение # 11
Рядовой
Группа: 61
Сообщений: 4
Статус: Offline
записываешь вектора:
AB (3,-5,1)
AC (-2,-4,2)
AD (-1,4,3)
AE (10,11,2)

Получаешь систему:
3m - 2n - L = 10
-5m - 4n + 4L = 11
m +2n +3L = 2

Считаешь определитель ∆: 3 -2 -1
-5 -4 4 = -16 (вроде)
1 2 3
Потом считаешь определитель ∆m: (вместо всех коэффициентов при m подставляем координаты вектора AE
10 -2 -1
11 -4 4 = -52 (вроде)
2 2 3
Потом считаешь определитель ∆n: (вместо всех коэффициентов при n подставляем координаты вектора AE
3 10 -1
-5 11 4 = -94 (вроде)
1 2 3
Потом считаешь определитель ∆L: (вместо всех коэффициентов при L подставляем координаты вектора AE
3 -2 10
-5 -4 11 = -108 (вроде)
1 2 2

Вот, отсюда m=∆m/∆ n=∆n/∆ L=∆L/∆

 
TWIXДата: Воскресенье, 27.01.2008, 23:55 | Сообщение # 12
Рядовой
Группа: 61
Сообщений: 27
Статус: Offline
Спасибо.
Подскажите пажалуйста, а как правильно решать систему из трёх строчек с тремя неизвестыми? smile




Сообщение отредактировал СНЕГУРОЧКА - Воскресенье, 27.01.2008, 23:55
 
kmeawДата: Понедельник, 28.01.2008, 09:00 | Сообщение # 13
Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
СНЕГУРОЧКА, проще всего методом Крамера

--
kmeaw aka bdd1
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025