Jak sformułować punkt przecięcia równań nD, z których każde ma inny początek?

Aug 15 2020

Powiedzmy, że mamy $n$-wymiarowa linia / płaszczyzna / hiperpłaszczyzna $n$ reprezentowane przez $n$ilość równań. Zauważ, że każde z równań krzyżuje się z innym pochodzeniem$O\in\mathbb{R}^n$.

Jaki byłby najprostszy sposób:

  1. obliczać i opcjonalnie
  2. zweryfikować (rodzaj, istnienie) ich przecięcia $I\in\mathbb{R}^n$?

Najprostszy przykład mógłby wyglądać tak:

$$\begin{equation}\begin{aligned} x_1 + y_1 &= a_1\\ \end{aligned}\end{equation}\tag{1}\label{eq1}$$ $$\begin{equation}\begin{aligned} x_2 + y_2 &= a_2\\ \end{aligned}\end{equation}\tag{2}\label{eq2}$$

z \ eqref {eq1} ma początek $O_1$ a \ eqref {eq2} ma początek $O_2$.

Wykreślono w ten sposób:

2 linie o różnym początku w $\mathbb{R}^2$

Powiedzmy $I$jest graficznie udowodnione, że istnieje jak powyżej. Jakie rozwiązanie analityczne należy osiągnąć$I_{x}$ i $I_{y}$?

Plus, jeśli można go sformułować jako numerycznie stabilny problem algebraiczny.

Odpowiedzi

Gonbidatu Aug 15 2020 at 18:15

Jeśli używamy notacji wektorowej, wskaż $\vec{p}$ jest na hiperpłaszczyźnie $\vec{n}, d$ wtedy i tylko wtedy gdy $$\vec{p} \cdot \vec{n} = d \tag{1}\label{1}$$

Ale jeśli definicja hiperpłaszczyzny odnosi się do pochodzenia $\vec{o}$, to jest $$(\vec{p} - \vec{o}) \cdot \vec{n} = d \tag{2a}\label{2a}$$ co jest równoważne $$\vec{p} \cdot \vec{n} = d + \vec{o} \cdot \vec{n} \tag{2b}\label{2b}$$

Innymi słowy, zdefiniowanie hiperpłaszczyzny w odniesieniu do jakiegoś punktu, który nie jest początkiem, zmienia tylko składową skalarną (odległość ze znakiem) hiperpłaszczyzny. We współrzędnych bezwzględnych składnik skalarny jest zwiększany o iloczyn skalarny między normalną hiperpłaszczyzny a punktem używanym jako początek definicji hiperpłaszczyzny.

Jeśli używamy $\vec{p} = (p_1 , \dots , p_N)$ współrzędne punktu, który należy uwzględnić, $\vec{n} = (n_1 , \dots , p_N)$ dla normalnej hiperpłaszczyzny, i $\vec{o} = (o_1, \dots, o_N)$ dla punktu używanego jako początek definicji hiperpłaszczyzny możemy zapisać $\eqref{2a}$ tak jak $$(p_1 - o_1) n_1 + \dots + (p_N - o_N) n_N = d \tag{3a}\label{3a}$$ i $\eqref{2b}$ tak jak $$p_1 n_1 + \dots + p_N n_N = d + o_1 n_1 + \dots + o_N n_N \tag{3b}\label{3b}$$ lub, w formie sumarycznej, jak $$\sum_{i=1}^{N} p_i n_i = d + \sum_{i=1}^N o_i n_i \tag{3c}\label{3c}$$

Powiedzmy, że masz dwie hiperpłaszczyzny, $(n_1, \dots, n_N ; d)$ i $(u_1, \dots, u_N ; p)$, z „początkiem” $(o_1, \dots, o_N)$ i $(g_1, \dots, g_N)$: $$\left\lbrace ~ \begin{aligned} \sum_{i=1}^N p_i n_i &= d + \sum_{i=1}^N o_i n_i \\ \sum_{i=1}^N p_i u_i &= p + \sum_{i=1}^N g_i u_i \\ \end{aligned} \right . \tag{4} \label{4}$$ gdzie oba równania $\eqref{4}$ są prawdziwe tylko dla $(p_1, \dots, p_N)$ na przecięciu dwóch hiperpłaszczyzn.

Jedyną różnicą w stosunku do sytuacji standardowej jest dodatkowa stała suma dodawana do składowej skalarnej, zależna tylko od „początku” (względem którego została zdefiniowana hiperpłaszczyzna) oraz od normalnej hiperpłaszczyzny.


Mamy $N$hiperpłaszczyzny. Użyjmy notacji$\vec{n}_i = (n_{i, 1}, \dots, n_{i, N})$ dla ich normalnych wektorów i $d_i$ za ich podpisane odległości od absolutnego początku, tj. z uwzględnieniem stałej sumy po prawej stronie w $\eqref{3c}$ lub $\eqref{4}$.

Jeśli utworzymy macierz $\mathbf{M}$z każdym rzędem składającym się z normalnej hiperpłaszczyzny, $$\mathbf{M} = \left[ \begin{matrix} n_{1, 1} & n_{1, 2} & \dots & n_{1, N-1} & n_{1, N} \\ n_{2, 1} & n_{2, 2} & \dots & n_{2, N-1} & n_{2, N} \\ \vdots & \vdots & ~ & \vdots & \vdots \\ n_{N-1, 1} & n_{N-1, 2} & \dots & n_{N-1, N-1} & n_{N-1, N} \\ n_{N, 1} & n_{N, 2} & \dots & n_{N, N-1} & n_{N, N} \\ \end{matrix} \right ] \tag{5}\label{5}$$ i wektor kolumnowy $y$ z oznaczonych odległości, w tym stałych kwot kompensacji „pochodzenia”, $$y = \left[ \begin{matrix} d_1 \\ d_2 \\ \vdots \\ d_{N-1} \\ d_{N} \\ \end{matrix} \right ] \tag{6}\label{6}$$ z $x$ będąc wektorem kolumnowym dla punktu przecięcia, układ równań staje się $$\mathbf{M} x = y \tag{7a}\label{7a}$$ To ma rozwiązanie, jeśli $\mathbf{M}$ jest odwracalny, $$x = \mathbf{M}^{-1} y \tag{7b}\label{7b}$$

W programie komputerowym $\mathbf{M}$może być prawie osobliwy, jeśli niektóre z normalnych są prawie liniowo zależne (tj. iloczyn skalarny parami jest zbliżony do iloczynu ich norm euklidesowych; lub równoważnie, normalne są prawie równoległe lub prawie przeciwne). Oczywiście, jeśli dwa lub więcej normalnych jest równoległych lub przeciwnych, to przecięcie nie jest już punktem.

O ile nie masz nieokreślonych dodatkowych wymagań, w zasadzie każda biblioteka algebry liniowej powinna działać dobrze.