エクセル等の表計算ソフトの逆行列関数を使って3点を通る円を求める。(2次元平面内)
まず求める円の式を
x^2+y^2+l*x+m*y+n=0
とすると
l*x+m*y+n=-(x^2+y^2)
なので3点を
p1(x1,y1)、p2(x2,y2)、p3(x3,y3) (表のD4:E6)
とすると
l*x1+m*y1+n=-(x1^2+y1^2)
l*x2+m*y2+n=-(x2^2+y2^2)
l*x3+m*y3+n=-(x3^2+y3^2)
となる。行列の式で書けば (libreofficecalcでmathをオブジェクトとして使用)
となり、逆行列を使えば一発で答えが出る。
逆行列と配列定数を使用してl,m,nを求める。配列定数を使って前半は3行2列の行列の1列目と2列目を入れ替えて3列目を追加して3列目を1とした。後半は2乗して横方向の和。
D8:D10 =ArrayFormula(mmult(MINVERSE(mmult(D4:E6,{0,1,0;1,0,0})+{0,0,1;0,0,1;0,0,1}),-MMULT(D4:E6^2,{1;1})))
次に中心座標と半径を求める。
D12 =-D8/2
D13 =-D9/2
D14 =((D8^2/4+D9^2/4)-D10)^(1/2)
F36 =iferror((-D$9-(D$9^2-4*D36^2-4*D$8*D36-4*D$10)^(1/2))/2,"")
G36 =iferror((-D$9+(D$9^2-4*D36^2-4*D$8*D36-4*D$10)^(1/2))/2,"")
グラフ用データ行は以下略
2023.04.25 19:22公開 単純ミスなどは適宜修正済&修正予定
余談1
実際に3点を通る散布図も追加したい。
余談2
最初は円の中心のx座標=a、円の中心のy座標=b、円の半径=rとして
(x-a)^2+(y-b)^2=r^2
で考えて身動きが取れなくなったw
x^2+y^2+l*x+m*y+n=0
の式を見かけて「これならできる」と思った。l,m,nを求める段階ではx,yは変数じゃなくてただの定数であると思い至った。他の問題でも使えそうだ。
余談3
いつか3点を通る円(3次元空間内)をやってみたい。
以下テスト用
mathtypeを使った行列の式の残骸
htmlの表を使った行列の式の残骸w
[x1 | y1 | 1] | [l] | [x1^2+y1^2] | |
[x2 | y2 | 1] | [m] | =- | [x2^2+y2^2] |
[x3 | y3 | 1] | [n] | [x3^2+y3^2] |
[l] | [x1 | y2 | 1]^-1 | [x1^2+y1^2] | |
[m] | =- | [x2 | y2 | 1] | [x2^2+y2^2] |
[n] | [x3 | y3 | 1] | [x3^2+y3^2] |
0 件のコメント:
コメントを投稿