LoginSignup
0
1

More than 1 year has passed since last update.

図形と方程式「14年 福島大 理工 3」をsympy でやってみた。

Last updated at Posted at 2022-07-16

オリジナル

sympyで

from sympy import *
var('x y')
def myLineEquation(P1,P2):
    return solve(sympify(str(Line(P1,P2).equation())),y)[0]
A=Point(-6, 0)
B=Point( 0,-8)
C=Point(15,28)
print("#(1)",myLineEquation(A,B),",",myLineEquation(A,C))
print("#(2)",Triangle(A,B,C).area)
print("#(3)",Point(A).distance(B),Point(B).distance(C),Point(C).distance(A))
print("#(4)",Triangle(A,B,C).inradius)
print("#(5)",Triangle(A,B,C).incenter)
print("#(6)",myLineEquation(B,Triangle(A,B,C).incenter))
#(1) -4*x/3 - 8 , 4*x/3 + 8
#(2) 168
#(3) 10 39 35
#(4) 4
#(5) Point2D(-1, 0)
#(6) -8*x - 8

sympyで(値を後から代入でもできました。)

from sympy import *
var('x y')
var('Ax Ay Bx By Cx Cy')
def myLineEquation(P1,P2):
    return solve(sympify(str(Line(P1,P2).equation())),y)[0]
A=Point(Ax,Ay)
B=Point(Bx,By)
C=Point(Cx,Cy)
print("#<1>",myLineEquation(A,B),",",myLineEquation(A,C))
print("#<2>",Triangle(A,B,C).area)
print("#<3>",Point(A).distance(B),Point(B).distance(C),Point(C).distance(A))
print("#<4>",Triangle(A,B,C).inradius)
print("#<5>",Triangle(A,B,C).incenter)
print("#<6>",myLineEquation(B,Triangle(A,B,C).incenter))
mySubs={Ax:-6,Ay:0,Bx:0,By:-8,Cx:15,Cy:28}
print("#(1)",myLineEquation(A,B).subs(mySubs),",",myLineEquation(A,C).subs(mySubs))
print("#(2)",Triangle(A,B,C).area.subs(mySubs))
print("#(3)",Point(A).distance(B).subs(mySubs),Point(B).distance(C).subs(mySubs),Point(C).distance(A).subs(mySubs))
print("#(4)",Triangle(A,B,C).inradius.subs(mySubs))
print("#(5)",Triangle(A,B,C).incenter.subs(mySubs))
print("#(6)",myLineEquation(B,Triangle(A,B,C).incenter).subs(mySubs))
#<1>~<6>出力省略
#(1) -4*x/3 - 8 , 4*x/3 + 8
#(2) 168
#(3) 10 39 35
#(4) 4
#(5) Point2D(-1, 0)
#(6) -8*x - 8

参考

myLineEquation関数作成のため

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1