はじめまして.
工学部の学生です.
球の中心座標と半径を求める最小二乗法について教えてください.お願いします.
私も,エクセルを使って式を立てて計算したのですが,中心がどうしてもずれてしまいます.
|Σ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}
で,計算したのですが,答えがうまく求まりません.
どなたか教えていただけないでしょうか.
No.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 …
No.1
- 回答日時:
円の方程式を
(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のデータをそれぞれ書き込んでおいて重回帰分析で
各係数を求めてみて同じ結果になるかを確かめる。
といったところでしょう。エクセルの式が間違っていなければ測定結果や測定精度
に対して考察してみるしかないと思います。
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になってしまいました.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学 文字式の「サイクリック順」は xy yz zx として使えますが xy^2 yz zx と次数 2 2023/01/21 12:14
- 数学 数学の問題がわかりません。(球の中心の座標を求める問題) 2 2023/02/14 15:52
- 数学 球面と接する直線の軌跡が表す領域 4 2023/07/30 12:37
- 数学 最小値を求める問題(大学数学) 3 2023/01/21 14:14
- 物理学 物理の問題 2 2022/12/22 22:11
- 数学 二次関数の難問です。 P=x^2+y^2+z^2-xy-yz-zx(0≦x≦1, 1≦y≦2, 2≦ 4 2022/12/19 18:36
- 計算機科学 記号と数字を使った複雑な式を教えて下さい 1 2022/12/18 20:51
- 統計学 統計学についての質問です 1 2022/10/29 08:36
- 計算機科学 この問題の3番だけ解けません。 公式はE(XY)=ΣxΣy xy×f(x.y)だと思うのですが計算方 1 2022/12/16 17:40
- 物理学 問題 xy面内を、加速度の大きさが一定値a0で運動する小球がある。また、この物体にかかる加速度の方向 7 2022/05/19 23:58
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報