球面上にN個の点があります(N>2)。近似曲線と同じようなイメージで、そのN個の点にもっともフィットする小円を求め、最終的にその小円の軸が球面と交わる座標を求める方法を教えてください。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2009/09/15 16:06:42
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ita No.1

回答回数204ベストアンサー獲得回数48

ポイント60pt

球の中心と、その小円の中心を通る直線に全ての点からの垂線を下ろすと、全て1点にいきます。

実際は誤差のためばらけますが、このばらけを最小にする直線を求める、という方針で考えます。

垂線の足と中心との距離をLiとすると、Liの二乗平均-(Liの平均)の二乗、を最小にすればよいです。

まず、全ての点をX,Y,Z座標で表し、X座標の平均をSx,X座標の二乗の平均をSxx、X座標*Y座標の平均をSxyなどとおきます。

さらに分散・共分散行列の要素を以下のように計算します

Vxx = Sxx - Sx*Sx

Vyy = Syy - Sy*Sy

Vzz = Szz - Sz*Sz

Vxy = Sxy - Sx*Sy

Vyz = Syz - Sy*Sz

Vzx = Szx - Sz*Sx

ある方向(Nx,Ny,Nz)を向いた直線に垂線を下ろした場合のばらつきは、

Vxx*Nx*Nx + Vyy*Ny*Ny+ Vzz*Nz*Nz + 2*Vxy*Nx*Ny + 2*Vyz*Ny*Nz + 2*Vzx*Nz*Nx

となります。これを最小にする方向は、3x3行列

Vxx Vxy Vzx
Vxy Vyy Vyz
Vzx Vyz Vzz

の3つの固有値のうち絶対値が一番小さいものに対応した固有ベクトルになります。

3x3実対称行列の固有ベクトルを計算するコードを探したんですが手軽なものは見つかりませんでした。

WEBアプリとして実装するのか、論文で使うのか、など用途によって必要なコードが違ってきますが。


id:spin6536

「3x3行列」以降の部分を実際にどのようにすすめるのかが、わたしの能力不足のため理解できません。

1. まず、3x3行列のなかの9つの値の中で絶対値が一番小さいものを選ぶ、ということでしょうか。

2. そしてその一番小さい値を含む行が、中心Oから放射状に向かう固有ベクトルを示す座標になるのでしょうか。

3. その固有ベクトルをどのように用いて解を得たらよいのでしょうか。

せっかい回答いただいたのに理解不足で本当に申し訳ありません。

2009/09/12 10:17:40
  • id:spin6536
    同様の計算の解説を、あらたな質問でお願いしております。

    http://q.hatena.ne.jp/1252719578

    数学に強い皆さま、再びご援助いただけるでしょうか。
  • id:ita
    「行列の固有値と固有ベクトル」について調べてみてください。
    重要な概念で今後きっと役に立つでしょうから。よい解説ページはググればたくさんあると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません