2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 01:05 
Здравствуйте.
Стоит следующая задача.
Изображение
Имеется два единичных вектора $\overline{k}$ и $\overline{m}$ с известными координатами, необходимо найти единичный вектор $\overline{l}$, при том, что известен угол $kl$ между векторами $\overline{k}$ и $\overline{l}$ и угол $ml$ между векторами $\overline{m}$ и $\overline{l}$.
Вроде все просто исходя из формулы скалярного произведения векторов можно записать следующую систему:
$$
\begin{cases}
 kxlx+kyly+kzlz=cos(kl)\\
 mxlx+myly+mzlz=cos(ml)\\
 lx^2+ly^2+lz^2=1
\end{cases}
$$
Решая данную систему можно получить следующие ответы (прошу меня простить, но в силу громоздкости помещаю ввиде картинок):
$lx$
Изображение
Изображение
$ly$
Изображение
Изображение
$lz$
Изображение
Изображение
Для проверки я построил вектора в CAD системе (первый рисунок) и подставил полученные значения коэффициентов в выражения, после чего к своему удивлению $lx$ оказались комплексными, а в $ly$ и $lz$ знаменатели обратились в 0.
Если посмотреть на полученные выражения, то можно заметить, что например для случая, когда $\overline{k}=\left\{1,0,0\right\}$, то есть совпадает с осью $X$ знаменатели выражений для $ly$ и $lz$ обращаются в 0, хотя построения показывают, что решение есть.
Еще кое-что интересное выяснилось, когда я предложил Mathematica решить систему с заранее известными коэффициентами. Она без проблем решила ее, дав ответы, которые полностью совпали с построением.
После этого я еще раз решил систему сам пошагово в общем виде, и получил тот же результат, что дает Mathematica в первом случае.
Помогите, пожалуйста, разобраться в чем дело.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 03:12 
Аватара пользователя
Ответ в таких задачах может быть представлен в разных видах, примерно эквивалентных друг другу, в смысле "школьных" упрощений и эквивалентных преобразований, но эта эквивалентность довольно запутанна и не видна на первый взгляд. При этом, какой вид у вас получится, зависит от того, каким путём вы шли к ответу, с каким подходом подходили к задаче. Поэтому с ней лучше обращаться максимально "по уму", а не пытаться чисто формально решить систему уравнений.

Далее. Вы решаете слишком общую задачу. В вашей системе уравнений никак не указан и не использован тот факт, что вектора $\bar{k}$ и $\bar{m}$ тоже единичные: $k_x^2+k_y^2+k_z^2=1,$ $m_x^2+m_y^2+m_z^2=1.$ Эти уравнения не содержат неизвестных, но они могли бы упростить итоговые выражения.

"По уму", мне представляется возможным три варианта.
1. Используя векторную алгебру и аналитическую геометрию, найти построением искомый вектор, а потом перевести его в координатный вид.
2. Повернуть систему координат в положение, когда $\bar{k}$ и $\bar{m}$ совпадут с ортами осей координат, найти искомый вектор, и повернуть систему координат в исходное положение. Здесь работа с матрицами.
3. Искать не вектор в пространстве, а точку на сфере, средствами сферической геометрии. Может быть, этот вариант - примерно то же, что первый.

Как интерпретировать ваш результат... Во-первых, если $l_x$ получается комплексным, то это может быть нормально, если $l_y$ и $l_z$ тоже будут комплексными: возможно, потом их всех трёх можно будет сократить на один и тот же комплексный коэффициент, и получится действительный вектор. Вот если они не будут сокращаться, надо будет бить тревогу и искать ошибку. Во-вторых, обращение знаменателя в нуль - это тоже так не страшно, если одновременно числитель обращается в нуль. Это значит, что вы попали в устранимую точку разрыва, и её надо устранить: или вручную сокращая числительно со знаменателем, или вычисляя предел и раскрывая неопределённость $\tfrac{0}{0},$ например, по правилу Лопиталя.

И разумеется, надо проверить, существует ли решение при ваших предложенных конкретных данных. Не любые две окружности на сфере пересекаются. Но это вряд ли ваш случай, раз вы говорите, что построили вектора вручную (только надо проверить, правильно ли перенесли данные с рисунка в задачу).

 
 
 
 
Сообщение23.10.2012, 11:22 
Аватара пользователя
 i  Zaratustra_V, извольте не лениться: \vspace*{-\baselineskip}$
\begin{cases}
 k_x l_x+k_y l_y+k_z l_z=\cos(kl)\\
 m_xl_x+m_yl_y+m_z l_z=\cos(ml)\\
 l_x^2+l_y^2+l_z^2=1.
\end{cases}
$

Здесь рассказано, как набирать формулы (здесь подробнее).

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 15:12 
Ну если уж писать не по кусочкам, а одной формулой, то хоть осмысленной -- например, так: $$ \vec l=\dfrac1{|\vec k\times\vec m|^2} \left( \vec k \big( c_k-(\vec k\cdot\vec m)c_m \big) + \vec m \big( c_m-(\vec k\cdot\vec m)c_k \big) \pm \vec k\times\vec m \, \sqrt{|\vec k\times\vec m|^2 - |\vec k c_k-\vec m c_m|^2} \right) $$

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 15:34 
Аватара пользователя
О, взял и решил. Спасибо!

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 15:37 
Munin в сообщении #634569 писал(а):

"По уму", мне представляется возможным три варианта.
1. Используя векторную алгебру и аналитическую геометрию, найти построением искомый вектор, а потом перевести его в координатный вид.
2. Повернуть систему координат в положение, когда $\bar{k}$ и $\bar{m}$ совпадут с ортами осей координат, найти искомый вектор, и повернуть систему координат в исходное положение. Здесь работа с матрицами.
3. Искать не вектор в пространстве, а точку на сфере, средствами сферической геометрии. Может быть, этот вариант - примерно то же, что первый.

Я как раз начал с 1-го и 3-го метода, но потом решил через систему, может действительно стоит вернуться к ним.
Есть еще один способ, решить задачу о пересечении двух конусов один с осью $\bar{k}$ и образующей $\bar{l}$, второй с осью $\bar{m}$ и образующей $\bar{l}$, но что-то я пока не понял как записать уравнения этих конусов.

-- Вт окт 23, 2012 15:40:08 --

ewert в сообщении #634722 писал(а):
Ну если уж писать не по кусочкам, а одной формулой, то хоть осмысленной -- например, так: $$ \vec l=\dfrac1{|\vec k\times\vec m|^2} \left( \vec k \big( c_k-(\vec k\cdot\vec m)c_m \big) + \vec m \big( c_m-(\vec k\cdot\vec m)c_k \big) \pm \vec k\times\vec m \, \sqrt{|\vec k\times\vec m|^2 - |\vec k c_k-\vec m c_m|^2} \right) $$


Красиво. А не могли бы Вы пояснить решение, как оно получилось? Что такое коэффициенты $c_k$ и $c_m$?

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 15:42 
Кстати:

Munin в сообщении #634569 писал(а):
В вашей системе уравнений никак не указан и не использован тот факт, что вектора $\bar{k}$ и $\bar{m}$ тоже единичные:

Этот факт подразумевается в первых двух уравнениях, иначе они выглядели бы по-другому.

Munin в сообщении #634569 писал(а):
Во-первых, если $l_x$ получается комплексным, то это может быть нормально, если $l_y$ и $l_z$ тоже будут комплексными: возможно, потом их всех трёх можно будет сократить на один и тот же комплексный коэффициент, и получится действительный вектор.

Нет. Если результат получается комплексным, то это в точности означает, что задача не имеет решения. Геометрически это соответствует ситуации, когда прямая, задаваемая первыми двумя уравнениями, не пересекается с единичной сферой; такое вполне возможно, естественно.

-- Вт окт 23, 2012 17:15:09 --

Zaratustra_V в сообщении #634745 писал(а):
А не могли бы Вы пояснить решение, как оно получилось? Что такое коэффициенты $c_k$ и $c_m$?

Коэффициенты -- это, естественно, косинусы углов между векторами $\vec k,\vec l$ и $\vec m,\vec l$ соответственно.

Геометрически идея достаточно проста. Ваши первые два уравнения задают две плоскости, а в совокупности -- прямую, на которой должен лежать конец искомого вектора $\vec l$, выходящего из начала координат. Надо найти точки пересечения этой прямой с единичной сферой. Напрашивается такая естественная процедура. Возьмём для начала вектор $\vec u$, выходящий из начала координат, конец которого лежит на этой прямой и который перпендикулярен прямой. Тогда для получения нужного результата надо просто прибавить к этому вектору направляющий вектор прямой (а это $\vec k\times\vec m$), умноженный на подходящий коэффициент -- такой, чтобы длина суммы оказалась бы единичной.

Так вот. Если переписать ту формулу в чуть более громоздком виде:



$$ \vec l=\dfrac
{\vec k \big( c_k-(\vec k\cdot\vec m)c_m \big) + \vec m \big( c_m-(\vec k\cdot\vec m)c_k \big)}{1-(\vec k\cdot\vec m)^2} \pm \dfrac{\vec k\times\vec m}{|\vec k\times\vec m|} \; \sqrt{1 - \dfrac{|\vec k c_k-\vec m c_m|^2}{1-(\vec k\cdot\vec m)^2}} $$

(это одно и то же, т.к. $|\vec k\times\vec m|^2+(\vec k\cdot\vec m)^2\equiv1$), то первая дробь -- это и есть тот самый вектор $\vec u$, а дробь под корнем -- это квадрат его длины. Последнее можно получить тупым раскрытием скобок, а для первого надо просто искать его в виде $\vec u=t\vec k+s\vec m$, подставляя это разложение вместо вектора $\vec l$ в уравнения тех двух плоскостей: $\vec k\cdot\vec u=c_k$ и $\vec m\cdot\vec u=c_m$; коэффициенты разложения $t,\,s$ мгновенно находятся.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 18:16 
Аватара пользователя
ewert в сообщении #634750 писал(а):
Этот факт подразумевается в первых двух уравнениях, иначе они выглядели бы по-другому.

Не-а. Там просто уравнения вида $\bar{k}\bar{l}=c_k,$ и всё. Никаких уточнений о модуле векторов. То есть потом можно ввести туда координаты вектора любой ненулевой длины.

ewert в сообщении #634750 писал(а):
Нет. Если результат получается комплексным, то это в точности означает, что задача не имеет решения.

Думаете? Хм... Да, наверное. Я переусердствовал. Комплексное квадратное уравнение с действительными коэффициентами либо имеет два действительных корня, либо ни одного.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение23.10.2012, 23:37 
ewert в сообщении #634750 писал(а):

Геометрически идея достаточно проста. Ваши первые два уравнения задают две плоскости, а в совокупности -- прямую, на которой должен лежать конец искомого вектора $\vec l$, выходящего из начала координат. Надо найти точки пересечения этой прямой с единичной сферой. Напрашивается такая естественная процедура. Возьмём для начала вектор $\vec u$, выходящий из начала координат, конец которого лежит на этой прямой и который перпендикулярен прямой. Тогда для получения нужного результата надо просто прибавить к этому вектору направляющий вектор прямой (а это $\vec k\times\vec m$), умноженный на подходящий коэффициент -- такой, чтобы длина суммы оказалась бы единичной.

Геометрическую идею я понял, но, к сожалению, реализацию нет.
Вектор $\vec u$ выходит из начала координат и его конец лежит на прямой коллинеарной вектору $\vec l$ и есть еще один вектор, который перпендикулярен этой прямой? Правильно я понял?
Нужный результат это вектор $\vec l$? И "к этому вектору", это к коллинеарному или перпендикулярному.
Прошу прощения за настойчивость, но так как плаваю а ЛА и АГ не могу до конца разобраться.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение24.10.2012, 13:55 
Аватара пользователя
Zaratustra_V в сообщении #635070 писал(а):
Геометрическую идею я понял, но, к сожалению, реализацию нет.

Отыскиваем единичный вектор $\vec l$ в виде
$\vec l=K\vec k + M\vec m + T\vec t,$ (*)
где $ \vec t =\vec k\times\vec m/|\vec k\times\vec m|$ - единичный вектор перпендикулярный $\vec k$ и $\vec m$

Умножая (*) на $\vec k$ и $\vec m$, получаем два уравнения, из которых находим $K$ и $M.$
Т.к. $\vec l$ - единичный, то $|K\vec k + M\vec m|^2 + T^2=1,$ откуда находим $T.$

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение24.10.2012, 23:58 
Тут опять не понятно, умножая (*) на $\vec k$ и $\vec m$ получим
\vspace*{-\baselineskip}$
\begin{cases}
 c_k=K\vec k\vec k+M\vec m\vec k \\
 c_m=K\vec k\vec m+M\vec m\vec m\\
\end{cases}
$
Выразим $K$ из первого уравнения $K=\dfrac{c_k-M\vec m\vec k}{\vec k^2}$
Подставив получившееся во второе выражение системы, коэффициенты естественно сокращаются.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение25.10.2012, 06:07 
Аватара пользователя
Zaratustra_V в сообщении #635422 писал(а):
Тут опять не понятно, умножая (*) на $\vec k$ и $\vec m$ получим
\vspace*{-\baselineskip}$
\begin{cases}
 c_k=K\vec k\vec k+M\vec m\vec k \\
 c_m=K\vec k\vec m+M\vec m\vec m\\
\end{cases}
$
Выразим $K$ из первого уравнения $K=\dfrac{c_k-M\vec m\vec k}{\vec k^2}$
Подставив получившееся во второе выражение системы, коэффициенты естественно сокращаются.

Продемонстрируйте здесь, как подставляете и как возникают проблемы.
Не забывайте, что на $\vec k$ и $\vec m$ умножаете скалярно.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение25.10.2012, 06:36 
Zaratustra_V в сообщении #635422 писал(а):
Подставив получившееся во второе выражение системы, коэффициенты естественно сокращаются.

Естественно, не сокращаются (если только векторы не параллельны, конечно); и вообще в выражении
$\dfrac {\vec k \big( c_k-(\vec k\cdot\vec m)c_m \big) + \vec m \big( c_m-(\vec k\cdot\vec m)c_k \big)}{1-(\vec k\cdot\vec m)^2}$ коэффициенты при $\vec k$ и $\vec m$ -- это просто формулы Крамера для этой системы.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение25.10.2012, 09:17 
Zaratustra_V в сообщении #635422 писал(а):
Тут опять не понятно, умножая (*) на $\vec k$ и $\vec m$ получим
\vspace*{-\baselineskip}$
\begin{cases}
 c_k=K\vec k\vec k+M\vec m\vec k \\
 c_m=K\vec k\vec m+M\vec m\vec m\\
\end{cases}
$
Выразим $K$ из первого уравнения $K=\dfrac{c_k-M\vec m\vec k}{\vec k^2}$
Подставив получившееся во второе выражение системы, коэффициенты естественно сокращаются.

Продолжаю, подставляю $K$ во второе уравнение:
c_m=\dfrac{c_k-M\vec m\vec k}{\vec k^2}\vec m\vec k+M\vec m\vec m\\$
c_m=\dfrac{c_k\vec m\vec k-M(\vec m\vec k)^2+M(\vec m\vec k)^2}{(\vec m\vec k)^2}$
Вот.

 
 
 
 Re: Нахождение вектора по углам к двум заданным векторам.
Сообщение25.10.2012, 10:01 
Аватара пользователя
Для векторов $(\vec{m})^2(\vec{k})^2\ne(\vec{m}\vec{k})^2.$ И нельзя ли не менять обозначений по ходу обсуждения? А то подстраиваться под них неудобно, то $\bar{k},$ то $\vec{k}.$

 
 
 [ Сообщений: 18 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group