Угол между двумя векторами
| |
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
| Спасибо. Подскажите пажалуйста, а как правильно решать систему из трёх строчек с тремя неизвестыми?
Сообщение отредактировал СНЕГУРОЧКА - Воскресенье, 27.01.2008, 23:55 |
|
| |
kmeaw | Дата: Понедельник, 28.01.2008, 09:00 | Сообщение # 13 |
 Рядовой
Группа: Проверенные
Сообщений: 35
Статус: Offline
| СНЕГУРОЧКА, проще всего методом Крамера
-- kmeaw aka bdd1
|
|
| |
|