プロが教える店舗&オフィスのセキュリティ対策術

はじめまして.
工学部の学生です.

球の中心座標と半径を求める最小二乗法について教えてください.お願いします.

私も,エクセルを使って式を立てて計算したのですが,中心がどうしてもずれてしまいます.

|Σx^2 Σxy Σzx Σx | |a|  |-Σ(x^2+y^2+z^2)x|
|Σxy Σy^2 Σzy Σy | |b| = |-Σ(x^2+y^2+z^2)y|
|Σzx Σyz Σz^2 Σz | |c|  |-Σ(x^2+y^2+z^2)z|
|Σx  Σy  Σz   n | |d|  |-Σ(x^2+y^2+z^2)|
この式をクラーメルの公式を使って解いて
x=-a/2
y=-b/2
z=-c/2
r=√{(a^2+b^2+c^2)/4-d}

で,計算したのですが,答えがうまく求まりません.
どなたか教えていただけないでしょうか.

A 回答 (2件)

こちらで計算すると(50,50,0)、半径50になりましたのでやはりExcelの入力ミスです。


さすがに結果だけではどこで間違っているかは想像つきませんので私の計算例を
書いておきますので参考ください。

以下、A1-A200,B1-B200,C1-C200にデータが入っているとして(200まで埋まっている必要なし)
記入するセル番号 記入式あるいは操作 で書いておきます。
このまま書き込みをコピペでもいいです。

D1 =SUMSQ(A1:C1)
D2-D200 D1をコピーしてペースト
E1 =SUMPRODUCT($A1:$A200,A1:A200)
F1-G1 E1をコピペ
E2 =SUMPRODUCT($B1:$B200,A1:A200)
F2-G2 E2をコピペ
E3 =SUMPRODUCT($C1:$C200,A1:A200)
F3-G3 E3をコピペ
E4 =SUM(A1:A200)
F4-G4 E4をコピペ
H1 =E4
H2 =F4
H3 =G4
H4 =COUNT(A1:A200)
I1 =-SUMPRODUCT(A1:A200,$D1:$D200)
I2 =-SUMPRODUCT(B1:B200,$D1:$D200)
I3 =-SUMPRODUCT(C1:C200,$D1:$D200)
I4 =-SUM(D1:D200)
J1-J4 =MMULT(MINVERSE(E1:H4),I1:I4) ・・・・★
K1 =-J1/2
K2 =-J2/2
K3 =-J3/2
K4 =(SUMSQ(J1:J3)/4-J4)^0.5

これでK1-K4に中心の座標と半径が出てきます。
なお、★の部分はExcelに行列を入力する時に必要な操作として
J1-J4を選択して反転させておく。J1に上の式を記入する(確定はさせない)
Ctrl+Shiftを押しながらリターンキーを押す操作が必要です。(詳しくはURL)
これで書かれた数字をA1-C6に入れると上記の結果が得られました。
ついでに中心(2,5,11)、半径10の球の座標を乱数を交えて20個ばかり
発生させて計算しましたが、
2.004285734
5.147072292
11.03049431
9.812454843
になりました。

参考URL:http://www.nishitech.ac.jp/~zhou/text/Planing/No …
    • good
    • 0
この回答へのお礼

とても丁寧に回答していただき,ありがとうございます.

これからも何かありましたら,よろしくお願いいたします.

お礼日時:2007/01/15 02:09

円の方程式を



(x^2+y^2+z^2)+ax+by+cz+d=0

として計算するならその式で合っています。(x,y,zを独立変数、x^2+y^2+z^2を
従属変数と捉えるということですね)
どういうシチュエーションで中心がずれると言っておられるか分かりませんので
なんともアドバイスのしようがありませんが、何らかの測定データを解析した結果
考えられる球の中心の座標とずれているなら

1.誤差が歪んでいる、あるいは大きい。
誤差が正規分布していなかったり、定数に比べて大きい場合は定数がかなりずれて
計算されることもあると思います。

2.エクセルの式(入力)が間違っている。
これはw=ax+by+cz+dの線形の重回帰分析と同じですので例えば
w=3x+5y+7z+11
で数字を決めて(例えば1,1,1,26などの数字を5,6セット)同じ方法で分析した時に
それぞれの係数が正しく計算されるか確かめる。
あるいはエクセルの『アドイン』⇒『分析ツール』が使えるのなら
A,B,C,D列にx,y,z,x^2+y^2+z^2のデータをそれぞれ書き込んでおいて重回帰分析で
各係数を求めてみて同じ結果になるかを確かめる。

といったところでしょう。エクセルの式が間違っていなければ測定結果や測定精度
に対して考察してみるしかないと思います。
    • good
    • 0
この回答へのお礼

age_momoさん,回答していただいてありがとうございます。

>どういうシチュエーションで中心がずれると言っておられるか

答えが確認しやすいように,測定データを自分で考えてみて入れてみました.

*半径50の球の中心が座標(50,50)の位置にあるとした場合
測定データは
50  50  50
50  50  -50
100 50  0
0  50  0
50  100 0
50  0  0
この数値で計算してみたら,Xが68.750,Yが50,Zが0で半径が98.623になってしまいました.

お礼日時:2007/01/12 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!