-2

Javaで以下の方程式を解くための支援を探しています

(a-x1)^2 + (b-y1)^2 = r1^2 + r^2
(a-x2)^2 + (b-y2)^2 = r2^2 + r^2
(a-x3)^2 + (b-y3)^2 = r3^2 + r^2

x1y1r1x2、& y2、の値は既知です。、について解く必要がありますr2x3y3r3abr

Javaでこれを行うにはどうすればよいですか? Commons Maths ライブラリをチェックしましたが、これを達成する方法が見つかりませんでした。ただし、線形方程式には役立ちます。

4

2 に答える 2

3

ガウス消去法には線形方程式が必要だと思います。

a、b、r を解く必要がある場合、これらが非線形方程式であることは明らかです。

Newton-Raphson のような非線形ソルバーが必要です。

方程式を線形化する必要があります。微分 da、db、および dr のヤコビアンを計算します。

最初の推測から始めます

a = a(old)
b = b(old)
r = r(old)

方程式の線形化バージョンを使用して増分を計算する

2*(a(old)-x1)*da + 2*(b(old)-y1)*db = 2*r(old)*dr
2*(a(old)-x2)*da + 2*(b(old)-y2)*db = 2*r(old)*dr
2*(a(old)-x3)*da + 2*(b(old)-y3)*db = 2*r(old)*dr

推測を更新する

a(new) = a(old) + da
b(new) = b(old) + db
r(new) = r(old) + dr

収束するまで繰り返します(収束する場合)。

ガウスの消去法を使用して線形方程式を解いてはいけません。多くの問題があります。より良いアイデアは、LU 分解と前方後方置換を行うことです。

線形化された方程式が正しければ、次の形式になりA(dx) = 0ます。境界条件はどうあるべきか?

(a, b)円の中心の座標です。r半径です。

(x1, y1)(x2, y2)、 の3 点は本当にあり(x3, y3)ますか? それともポイントが多いですか?後者の場合は、最小二乗法が必要になります。

于 2012-09-12T11:31:12.880 に答える