sympyで7通りになりました。
3点A(8,5),B(1,-2),C(9,2)を通る円....
オリジナル
wolframAlphaで
作図が見れます。
sympyで(ますいしい様の手順で)
(勉強中)
“三元連立一次方程式”
“二元連立一次方程式”
“一元一次方程式”
sympyで(解4がいいですね。)
(解1)“円の方程式の一般形“
from sympy import *
var('x y a b c')
A=Point(8, 5)
B=Point(1,-2)
C=Point(9, 2)
eq=x**2+y**2+a*x+b*y+c
ans=solve([eq.subs({x:A.x,y:A.y}),
eq.subs({x:B.x,y:B.y}),
eq.subs({x:C.x,y:C.y})
],[a,b,c])
print("#", eq.subs({a:ans[a],b:ans[b],c:ans[c]}) )
print("#",Circle(eq.subs({a:ans[a],b:ans[b],c:ans[c]})))
# x**2 - 8*x + y**2 - 4*y - 5
# Circle(Point2D(4, 2), 5)
(解2)“円の中心は弦の垂直二等分線上にある”
from sympy import *
var('x y a b c')
A=Point(8, 5)
B=Point(1,-2)
C=Point(9, 2)
O= Line(A,B).perpendicular_line((A+B)/2) \
.intersection(Line(B,C).perpendicular_line((B+C)/2))[0]
print("#",Circle(O,O.distance(A)))
print("#",Circle(O,O.distance(A)).equation().expand())
# Circle(Point2D(4, 2), 5)
# x**2 - 8*x + y**2 - 4*y - 5
(解3)“円束” ??????(えんそく、英: pencil of circles)
from sympy import *
x,y,k=symbols("x,y,k",real=True)
A=Point(8, 5)
B=Point(1,-2)
C=Point(9, 2)
P=Point(x,y)
eq1=(P-B).dot(P-C)
eq2=Line(B,C).equation()
eq2=eq2/eq2.coeff(x)
eq3=eq1+k*eq2
eq4=eq3.subs({k:solve(eq3,k)[0].subs({x:A.x,y:A.y})}).expand()
print("#", eq4 )
print("#",Circle(eq4))
# x**2 - 8*x + y**2 - 4*y - 5
# Circle(Point2D(4, 2), 5)
(解4) “sympyのCircleで”
from sympy import *
print("#",Circle(Point(8, 5),Point(1,-2),Point(9, 2)))
print("#",Circle(Point(8, 5),Point(1,-2),Point(9, 2)).equation().expand())
# Circle(Point2D(4, 2), 5)
# x**2 - 8*x + y**2 - 4*y - 5
全部確かめていませんが,
インストール不要で、以下のweb上で実行できます。
(解4)は、実行できました。貼り付けて、evaluateです。
(解5) 後から値を代入が、最もsympyらしいと思います。“sympyのCircleで”
計算時間。私のパソコンだと、2分かかりますが、答えがでました。
from sympy import *
Ax,Ay,Bx,By,Cx,Cy=symbols("Ax,Ay,Bx,By,Cx,Cy",real=True)
A=Point(Ax,Ay)
B=Point(Bx,By)
C=Point(Cx,Cy)
print("#",Circle(A,B,C))
print("#",Circle(A,B,C).equation().expand())
mySubs={
Ax:8,Ay: 5,
Bx:1,By:-2,
Cx:9,Cy: 2,
}
print("#",Circle(A,B,C) .subs(mySubs))
print("#",Circle(A,B,C).equation().expand().subs(mySubs))
# Circle(Point2D(((Ax + Bx)*(Ax*By .... 250文字?以下省略
# Ax**3*By/(Ax*By - Ax*Cy - .... 250文字?以下省略
# Circle(Point2D(4, 2), 5)
# x**2 - 8*x + y**2 - 4*y - 5
他の解答方法
以下,値は異なりますが,(0,3)(-1,0)(-3,4)
他にもエクセルVBAソルバーあります。解は、小数点表示です。ルート(√)表示できません。
(解6)
(解7)
これも、後から値を代入。
Tuple
入試問題
今回、以下を書き換えました。
参考
円束(えんそく、英: pencil of circles)
英語版が見当たりませんでした。