• 締切済み

3次元空間中の直線同士の交点を最小2乗法で求めたい

3次元空間中の点aとbを通る直線、cとdを通る直線、eとfを通る直線がそれぞれあった場合それらの直線同士が最短となる点sを求めたいのですが考えがまとまりません。 各直線式は s = t1(b-a)+a s = t2(d-c)+c s = t3(f-e)+e となり、これを最小2乗法で解きたいのですが媒介変数tが混じっていてうまく考えがまとまりません。 アドバイスをお願いします。

みんなの回答

回答No.4

●vはベクトルを省略・・・SPv=SPベクトル,,等 点P;直線L1:s=t1(b-a)+a 上の点;a=(a1,a2,a3),b=(b1,b2,b3) 点Q;直線L2:s=t2(d-c)+c 上の点;c=(c1,c2,c3),d=(d1,d2,d3) 点R;直線L3:s=t3(f-e)+e 上の点 ;e=(e1,e2,e3),f=(f1,f2,f3) 点S;s=(s1,s2,s3)と置いて, 1)点Sと直線L1,L2L3との距離の定義を決める。 SPv=OPv-OSv={t1(b-a)+a}-s=t1(b-a)+(a-s) これはL1の方向ベクトル(b-a)と直交する=内積が0  {t1(b-a)+(a-s)}・(b-a)=0  これを解いて t1=(s-a)・(b-a)/(b-a)^2  SPv={(s-a)・(b-a)/(b-a)^2}(b-a)+(a-s)  従って、  SPvのx成分={(s-a)・(b-a)/(b-a)^2}(b1-a1)+(a1-s1)  SPvのy成分={(s-a)・(b-a)/(b-a)^2}(b2-a2)+(a2-s2)  SPvのz成分={(s-a)・(b-a)/(b-a)^2}(b3-a3)+(a3-s3)  ただし、次のものは内積なので  (s-a)・(b-a)=(s1-a1)×(b1-a1)+(s2-a2)×(b2-a2)+(s3-a3)×(b3-a3) (b-a)^2=(b1-a1)^2+(b2-a2)^2+(b3-a3)^2 です。  上の各成分の2乗和をつくり,  SP^2=SPvのx成分^2+SPvのy成分^2+SPvのz成分^2  同様にSQ^2、SR^2を作ります。  これはすべてs1,s2,s3の関数になっています。   ●誤差関数の定義;Iとします。  以上で求めたものから、誤差関数を次のように定めます。   誤差関数(I)=SP^2+SQ^2+SR^2  これはやはりs1,s2,s3の関数です。 ●最小2乗法  これが一番小さくなるときのs1,s2,s3を求めルことになりますが、  δI(s1,s2,s3)=(∂I/∂s1)・δs1+(∂I/∂s2)・δs2+(∂I/∂s3)・δs3  =0  そのためには,(∂I/∂s1)=(∂I/∂s2)=(∂I/∂s3)=0で有ればよいことになります。 (∂I/∂s1)=0 ,(∂I/∂s2)=0 ,(∂I/∂s3)=0  として,独立な3個の2次式が得られるので、これを連立させて解けばs1,s2,s3の値が求められることになります。変数が3個で、方程式が3個なので必ず解けますが、各方程式は3次方程式になるようですね。  答えが出ることはわかり求められなくは無いことがわかりましたが、具体的な計算は大変そうですね・・・流れは正しいと思うのですが,これ以上は示せそうに有りません。具体的な数値を入れて計算していったほうが簡単なのかも?

  • arrysthmia
  • ベストアンサー率38% (442/1154)
回答No.3

それだったら、 求めたい点Sの座標を (u,v) とでも置き、 誤差関数=SP^2+SQ^2+SR^2 を u, v, t1, t2, t3 の5変数関数と見て、 最小値を与える u, v, t1, t2, t3 を求めるだけです。

回答No.2

●表現から次の3通り考えられて・・・どれでしょうか?補足をお願いできませんか? P;直線 s = t1(b-a)+a 上の点 Q;直線 s = t2(d-c)+c 上の点 R;直線 s = t3(f-e)+e 上の点 として,  1)誤差関数=PQ^2+PR^2+QR^2を最小にするt1、t2、t3を求める。 2)他の点Sがあり、  誤差関数=SP^2+SQ^2+SR^2が最小になる点Sを求める。 3)もう1つ可能なのは、「3次元空間中の直線同士」が交点を持つように最小2乗法で最適化した3つの直線を求め、その交点Sを求める。 この3つの場合が考えられると思うのですが・・・ あるいはこの3つとも的外れかもしれません・・・よろしく。

rance003
質問者

補足

問題を判断する材料が十分に明記されておらず申し訳ありません。 他の点Sがありの意味が判りませんが、2が私の求めたい解答です。 3次元空間中点Sと各直線の距離が最も短くなる位置に設定したいです。 よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

すみません, 何をしたいのかさっぱり分からないんですけど.... 「それらの直線同士が最短となる点 s」ってのは, 何を意味するんでしょうか? 「最小2乗法」と言っているということは, 「3直線までの距離の平方和が最小となる点 s を見つけたい」ってことかな? そうだとすると, s から 3直線までの距離の 2乗は簡単にわかるはずで, それらの和を s の関数とみて最小化するだけですよね. 実行するのは面倒な感じだけど, 書くのは簡単.

関連するQ&A

  • 3次元空間での2直線の交点の求め方

    悩んでおります.御力添えを願います. 以下の条件下にて,2つの直線式を求め,その交点を求めようとしております. 1.点p(a0,b0,c0)と点q(a1,b1,c1)の座標は既知. 2.点s(d,e,f)は,座標は未知であるが,点p,点qへ向けて2つの直線を延ばしており,それぞれの直線の傾きが既知. 以上の条件をもとに,点s(d,e,f)の座標を求めようとしています. 私の考えた手法は,以下の物ですが上手くいきません. 1.点sから伸びる2つの直線の方向余弦を求める. 例)vx = r * cosα,vy = r * cosβ, vz = r * cosγ (上記の様に2点へと伸びる直線の方向余弦をそれぞれ求める) 2.求めた方向余弦と,点p,点qを用いて2つの直線式を表す. 例)x = a0 + vx0 * t, y = b0 + vy0 * t, z = c0 + vz0 * t x = a1 + vx1 * s, y = b1 + vy1 * s, z = c1 + vz1 * s    3.誤差を考慮し,2直線間の距離が1番小さくなる2点を求める. 例)(距離)^2 = {a0 + vx0 * t - a1 - vx1 * s}^2 = {b0 + vy0 * t - b1 - vy1 * s}^2 = {c0 + vz0 * t - c1 - vz1 * s}^2     上記の式をs,tに関して偏微分してやり,それぞれを0として連立 方程式を解き,s,tを求める.   求めたs,tを各直線式に代入してやり,2直線間の距離が最も短く なる2点を求める. 4.その2点の線分上の中点を求め,点s(d,e,f)とする. 上記手法で求めようとしましたが,どうも点sの座標が求まりません. 点sで方向余弦を求めるのが駄目なのでしょうか? 2直線間の距離が最も短くなる2点の求め方が駄目なのでしょうか? 幾何学初心者なため,混乱しております. 宜しくお願いいたします.

  • 4次元空間上での平面の式

    任意の点を(x,y,z,u)とした4次元空間で (1)3次元の立体を表す式は ax+by+cz+du=e でいいですか? (2)2次元の平面を表す式は一般にどのような形になりますか? 上記のことに疑問を持った理由。 2次元空間で1次元の直線を表す式は、一般にax+by=cとなる。 これは、2点(x,y),(xo,yo)を通り、方向ベクトルが(a',b')で媒介変数tとして x=a't+xo y=b't+yo と書くこともできる。 3次元空間で2次元の平面を表す式は、一般にax+by+cz=d となる。 これは、 平面上の2点(x,y,z)と(xo,yo,zo)を結ぶベクトルとこの平面に垂直な直線の方向ベクトル(a,b,c)の内積が0であるという条件より導かれる。 実際に計算すると a(x-xo)+b(y-yo)+c(z-zo)=0 ax+by+cz=axo+byo+czo になり、ax+by+cz=dという形と同値であることが確認できる。 【別な考え】 3次元空間内の平面は、異なる3つの点によって決定するので、異なる3点を P(xo,yo,zo)、Q(x1,y1,z1)、R(x2,y2,z2) とする。この平面上の任意の点X(x,y,z)は、媒介変数t,sを使って OX↑=OP↑+tPQ↑+sPR↑ と書ける。 成分表示にするために OP↑=(xo,yo,zo) PQ↑=(a,b,c) PR↑=(a',b'c') と方向ベクトルを定義すると、 x=xo+at+a's......(1) y=yo+bt+b's......(2) z=zo+ct+c's......(3) という書き方も平面を表す式である。 実際に(1)と(2)から未知数t,sについてx,yの式で表すことができるので、それを(3)式に代入すれば、(1)(2)(3)式は、一つの式 a"x+b"y+c"z=d'という形になる。 直線を表す式は、媒介変数tを使って x=at+xo y=bt+yo z=ct+zo または、 (x-xo)/a=(y-yo)/b=(z-zo)/c=t となる。 4次元空間で同じように、 直線や平面や立体を考えてみた。 2次元では、(1,0)と(0,1)が直交の基底ベクトル。 3次元では、(1,0,0)と(0,1,0)と(0,0,1)が直交の基底ベクトル。 したがって、 4次元では、(1,0,0,0)と(0,1,0,0)と(0,0,1,0)と(0,0,0,1)が直交の基底ベクトル。 4次元空間では、点は4つの成分で表される。 4次元空間での直線について。 直線は2点が与えられば書ける。 2点(x,y,z,u)と(xo,yo,zo,uo)を通り、その直線の方向ベクトルが(a,b,c,d)だとしたら、媒介変数tを使って、 x=at+xo y=bt+yo z=ct+zo u=dt+uo となって (x-xo)/a=(y-yo)/b=(z-zo)/c=(u-uo)/d=t 次に4次元空間での3次元立体について。 2次元空間では、それより一つ次数が低い1次元の直線は一つの式 ax+by=c で与えられた。 3次元空間では、それより一つ次数の低い2次元の平面は、一つ式 ax+by+cz=d で表さられた。 したがって、4次元空間では、それより一つ次数の低い3次元の立体は、 ax+by+cz+du=e で表されるだろう。 【別な考え】 4次元空間では、ある方向ベクトル(a,b,c,d)に直交する立体は一つしかない。なぜなら、4次元空間での基底ベクトルは4つで空間(立体)は3つの基底ベクトルで決定されて、残り一つが残っているからだ。 立体上の2点(x,y,z,u)と(xo,yo,zo,uo)を結ぶベクトルとこの立体に垂直な直線の方向ベクトル(a,b,c,d)の内積が0であるという条件で計算すると a(x-xo)+b(y-yo)+c(z-zo)+d(u-uo)= 0 ax+by+cz+du=axo+byo+czo+duo になり、ax+by+cz+du=eという形になる。 2次元の平面はどうだろうか? (ここからが本題) 4次元空間では、ある方向ベクトル(a,b,c,d)に直交する平面は、2つあるはずだ。 なぜなら、4次元空間での基底ベクトルは4つで平面は2つの基底ベクトルで決定されて、残り2つが残っていて、それはこの平面に直交するように選べるからだ。 平面は、異なる3つの点によって決定するので、異なる3点を P(xo,yo,zo,uo)、Q(x1,y1,z1,u1)、R(x2,y2,z2,u2)、 とする。この平面上の任意の点X(x,y,z,u)は、媒介変数t,sを使って OX↑=OP↑+tPQ↑+sPR↑ と書ける。 成分表示にするために OP↑=(xo,yo,zo,uo) PQ↑=(a,b,c,d) PR↑=(a',b',c',d') と方向ベクトルを定義すると、 x=xo+at+a's......(1) y=yo+bt+b's......(2) z=zo+ct+c's......(3) u=uo+dt+d's.....(4) という書き方も平面を表す式である。 (1)と(2)を連立して、未知数t,sについてx,yの式で表すことができるので、それを(3)式と(4)式代入すれば、(1)(2)(3)(4)式は、2つの式 a"x+b"y+c"z+d"u=e' a"'x+b"'y+c"'z+d"'u=e" になる。 この2つの式からuを消去すれば、結局、 Ax+By+Cz=D という形になる。 zを消去すれば、 Ax+By+Cu=D yを消去すれば、 Ax+Bu+Cz=D xを消去すれば、 Au+By+Cz=D

  • 3次元の最小二乗法

    A(x1,y1,z1)とB(x2,y2,z2)とC(x3,y3,z3)とD(x4,y4,z4)の点で 最小2乗法ほうを使い直線近似したいのですが、どのような式になりますかご存知の方教えていただけますか?

  • 4次元空間の超平面で、パラメータを消去するには?

    4次元のxyzw直交空間を考えます。 直線は、パラメータを用いて、 x=x[0]+a[1]s y=y[0]+b[1]s z=z[0]+c[1]s w=w[0]+d[1]s のように書けて、パラメータを消すと、 (x-x[0])/a[1]=(y-y[0])/b[1]=(z-z[0])/c[1]=(w-w[0])/d[1] のように書けます。 平面(?)は、パラメータを用いて、 x=x[0]+a[1]s+a[2]t y=y[0]+b[1]s+b[2]t z=z[0]+c[1]s+c[2]t w=w[0]+d[1]s+d[2]t のように書けますが、パラメータを消すとどうなるのでしょうか? 超平面は、パラメータを用いて、 x=x[0]+a[1]s+a[2]t+a[3]u y=y[0]+b[1]s+b[2]t+b[3]u z=z[0]+c[1]s+c[2]t+c[3]u w=w[0]+d[1]s+d[2]t+d[3]u のように書けますが、パラメータを消すとどうなるのでしょうか? おそらくAx+By+Cz+Dw+E=0のように書けるとは思いますが、それらの係数は具体的にはどのような形なのでしょうか? 3次元空間の平面の場合には、この最後の問いは、2つの3次元ベクトルの外積で表されると思うので、今回の設定を4次元にしてみました。

  • 4次元空間で点と直線・平面の距離の公式の一般化を考えたい

    4次元空間と書いたのは、一般化と単に記述の簡単さが目的です。 さらに記述の簡単さのために、4次元空間の中の点(p,q,r,s)と、n次元ベクトル空間との距離を考えたいと思います。 4次元空間の中の点(p,q,r,s)と、(a[1],a[2],a[3],a[4])で張られる1次元ベクトル空間(原点を通る直線)との距離の公式はどう書けるのでしょうか? 4次元空間の中の点(p,q,r,s)と、(a[1],a[2],a[3],a[4]),(b[1],b[2],b[3],b[4])で張られる2次元ベクトル空間との距離の公式はどう書けるのでしょうか? 4次元空間の中の点(p,q,r,s)と、(a[1],a[2],a[3],a[4]),(b[1],b[2],b[3],b[4]),(c[1],c[2],c[3],c[4])で張られる3次元ベクトル空間との距離の公式はどう書けるのでしょうか? また、垂線の足の座標はどうなるのでしょうか? n次元ベクトル空間上の点をいくつかのパラメータを用いて表し、距離の2乗を偏微分したものが0ということから公式を導こうとしたのですが、うまくいきません。 どうかきれいに計算できた方は教えてくださいませ。

  • 3次元ユークリッド空間内の直線

    3次元ユークリッド空間内の直線 連立1次方程式 y-2z=1 2x+2y+az=b 4x+3y=b 2x+y+z=c a,b,cは実数とします。 Q 方程式の解の全体が3次元ユークリッド空間内の直線になっているとき a,b,cの間に成り立つ関係を述べよ。 またその直線を表す方程式を求めよ 全然わかりません。 解の全体が3次元ユークリッド空間内の直線になるとは どのような状態のことなんでしょうか? よろしくお願いします

  • 3次元の近似直線

    こんにちは。2次元で実験データなどの点列から近似直線を求めるのは、最小二乗法の基本問題ですが、3次元の点群から直線の方程式(x-x0)/a=(y-y0)/b=(z-z0)/cを求めるにはどんなアルゴリズムを使いますか?スマートな方法があれば教えていただけたら幸いです。よろしくお願いします。

  • 最小二乗法の重みづけについて教えてください。

    簡単のため、説明変数tと、目的変数xが、共に実数(スカラー)とします。 また、フィッティング関数 F=F(t,a,b,c) も、簡単のため3変数または4変数のスカラー値関数とし、フィッティングパラメータa,b,cも実数(スカラー)とします。また、Fがフィッティングパラメータを2つしか持たない場合(Fが3変数の場合)には、 F(t,a,b)と読み替えて考えることにします。 また、データ、即ち説明変数と目的変数の実測値の組 (t_{i},y_{i})がn個あるとする。 また、以下の4種類の評価関数を考えます。 A:所謂2ノルム A(a,b,c)=Σ|{y}_{i}-F({t}_{i},a,b,c)|^2 B:n個の正数w_{i}を用いて、重みづけ B(a,b,c)=Σ(w_{i}|{y}_{i}-F({t}_{i},a,b,c)|^2) C:単調(非退化、つまり任意の点で微分がバニッシュしない)な関数φを用いて変換 C(a,b,c)=Σ|φ({y}_{i})-φ(F({t}_{i},a,b,c))|^2 D:所謂1ノルム D(a,b,c)=Σ|{y}_{i}-F({t}_{i},a,b,c)| (Q1)このとき、以下の命題のうち、同値な命題はどれとどれですか? P「(a,b,c)がAの極値点である」 Q「(a,b,c)がBの極値点ある」 R「(a,b,c)がCの極値点ある」 S「(a,b,c)がDの極値点である」 (Q2)重みづけの意味について: *実際、最急降下法のプログラムを作ってみると、 Dの場合で、直線に近い形状になるように変換した場合(たとえばシクモイドの場合logをφに取る)。 Cの場合で、変化が緩慢なiに重みをつけた場合。 Aの場合。 の順に速度が速く、いずれの場合もだいたいの場合には、まあまあ(10000回ぐらい再起計算すれば) まあ、見た目に近いグラフが出てきます。 だとしたとき、wやφというのは、何を意味しているのでしょうか? ここで、最急降下法は、以下の意味で考えている 最急降下法の初期パラメータを(a_0,b_0,c_0)とし、 k回目の計算値を({a}_{k},{b}_{k},c_{k})と記載する。 このとき、({a}_{k},{b}_{k},c_{k})は、以下の漸化式を再帰的に数値計算することで求める。 (a_{k+1},b_{k+1},{c}_{k+1})=(a_{k},b_{k},{c}_{k})-ε*grad(J(a,b,c)) 但し。Jは、A,B,Cいずれかの評価関数で、εは充分小さい正定数 (Q4)εのテンソル化: というほど大げさなものではありませんが、εを正値の対角行列にした場合 収束が早いことがあります。この場合εの異方性がフィッティングパラメータの収束性 どのように作用しているのでしょうか?また、こんなことをしてもいいのでしょうか?

  • n次元空間での直線・平面・立体....の式

    ベクトルについて勉強していて疑問に思ったことがあるので質問します。 n次空間で、点(x1,x2,x3,....xn)=xo↑の位置ベクトルを通り、方向がa↑=(a1,a2,a3....an)の直線の式は、tを媒介変数として、 v↑=a↑t+xo↑で表すことができます。 2次元だったら、 v1=a1•t+x1 v2=a2•t+x2 より、 (v1-x1)/a1=(v2-x2)/a2=t v1をx、v2をy、x1をa、x2をb、a2/a1をm と書き直すと見慣れた直線の式 y-b=m(x-a)になりますね。 3次元では、 (v1-x1)/a1=(v2-x2)/a2=(v3-x3)/a3=t となります。 これは、 (a,b,c)を通り、ベクトル方向が(l,m,n) である直線の式 (x-a)/l=(y-b)/m=(x-c)/n と同じ形です。 ということは、n次元の直線の式は、 (v1-x1)/a1=(v2-x2)/a2=(v3-x3)/a3=....(vn-xn)/an=t ですよね。 直線の式は、n次元に拡張できました。 次に平面の式を考えます。 3次元空間内における平面(2次元)とは、ある1つの直線に直交した面です。 その平面上の定点を(x1,x2,x3)=xo↑とします。 任意の位置ベクトルを(v1,v2,v3)=v↑として、ある1つの直線の方向ベクトルを (a1,a2,a3)=a↑とします。 平面上の任意のベクトルとa↑は、直交するので、 内積=0 すなわち、〈v↑-xo↑・a↑〉=0がなりますね。 成分で書くと、 a1(v1-x1)+a2(v2-x2)+a3(v3-x3)=0 ですね。 a↑に独立なベクトルは、3次元空間上に2本取れます。 すなわち、これは「面(2次元)」ですね。 a1をa、a2をb、a3をc、v1をx、v2をy、v3をzに書き直すと、 これは、平面の式 ax+by+cz=d になります。 このように、3次元空間では、2次元の面と1次元の直線が考えることができました。 そこで、これを4次元に拡張してみました。 4次元空間では、直線は、 (v1-x1)/a1=(v2-x2)/a2=(v3-x3)/a3=(v4-x4)/a4=t ですね。 この直線と直交する線は、3本あります。 〈v↑-xo↑・a↑〉=0 なので、成分で表すと、 a1(v1-x1)+a2(v2-x2)+a3(v3-x3)+a4(v4-x4)=0....(1) ですね。 ここで、質問ですが、(1)の式は、独立した3つのベクトルを含むので、「立体(3次元)」と言ってもいいのでしょうか? もし、その認識が正しかったら、 4次元空間上での立体(3次元)の式は、xyzuを変数として、 一般にax+by+cz+du=e という式で表すことができるという認識は正しいですか? 4次元空間での直線(1次元空間)の式は、先に示したように (v1-x1)/a1=(v2-x2)/a2=(v3-x3)/a3=(v4-x4)/a4 ですね。 3次元空間だったら、2次元空間の面と1次元空間の直線を式で書くことができました。 4次元空間だったら、3次元空間の立体と1次元空間の直線は、式として与えらると考えると、 4次元空間上での「面(2次元)」の式は、存在するのですか? n次元に拡張したら、 a1x1+a2x2+a3x3+.......anxn=kという式は、 は、(n-1)次元空間を表す式であると言っていいのでしょうか? また、その時、 (n-2)次元空間を表す式 (n-3)次元空間を表す式....は考えることができるのでしょうか? 多分、専門書などを解読すれば答えは見つかるかもしれませんが、自分でこのような疑問を思ったので投稿しました。

  • 最小二乗法について調べていたんですが、測定値と近似モデルの

    最小二乗法について調べていたんですが、測定値と近似モデルの 誤差eの二乗和がS=eTeという形になるのがわかりません。Tは転置行列です。 わかるかたがいましたらおしえてください。 ネットでは http://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%97%E6%B3%95 で調べました。