(正三角形)「1995年お茶の水女子大付の数学入試問題」をsympyとwolframalphaとVBAソルバーでやってみたい。



問題には誘導があります。
＞途中から中学数学を大いに逸脱してします。申し訳ありません。　
# original link


youtube11分

https://m.youtube.com/watch?reload=9&v=UKsY9A7QT6o&feature=youtu.be

https://blog.goo.ne.jp/0424725533/e/9c24e2d2fd16a45bee45182b16952028

https://blog.goo.ne.jp/0424725533/e/29cf05bfe2289badaf245eedfa6e9d65

https://qiita.com/fred55/items/7bf2b2c81ec9b29b1b5f


# 「内部の点と各頂点までの長さが与えられた正三角形の面積」を参考にPycharmとSymPyで辺の長さを計算してみました。

wolframalphaで一行で、辺の長さを計算できそうです。

```python
from sympy import *
var('a b c t')
ABC=Rational(1,2)*(sqrt(3)/4*(a**2+b**2+c**2)+1/2*b*c*3)
t=solve(sqrt(3)/4*t**2-ABC,t)[1]
mySubs={a:5,b:4,c:3}
print("#面積" ,float(ABC.subs(mySubs)),ABC.subs(mySubs))
print("#長さ ",float(  t.subs(mySubs)),  t.subs(mySubs))
#面積 19.825317547305485 9.0 + 25*sqrt(3)/4
#長さ  6.766432567522306 6.76643256752231
```

# 「〃（つづき）」を参考にPycharmとSymPyで辺の長さを計算してみました。
＞ヘロンの公式、三平方の定理、三角関数、複素数平面、などを使う解法もありそうですが、計算が煩雑だったり、高校で勉強する数学だったりする。

以下、結果が出る方がおかしいかもしれません。subsを先にしないと、実行できませんでした。ポイントは、「内部の点？」とありますね。
アドバイスをお願いします。


```python
from sympy import *
var('a b c t x y')
eq1=(x-t/2)**2+(y-sqrt(3)*t/2)**2-ａ**2
eq2=x**2+y**2-b**2
eq3=(x-t)**2+y**2-c**2
mySubs={a:5,b:4,c:3}
eq1=eq1.subs(mySubs)
eq2=eq2.subs(mySubs)
eq3=eq3.subs(mySubs)
eq4=solve([eq1,eq2],[x,y])
eq5=solve([eq2,eq3],[x,y])
res=[]
eq7=solve(eq4[0][0]-eq5[0][0],t)
res = sorted(res + eq7)
eq7=solve(eq4[0][0]-eq5[0][1],t)
res = sorted(res + eq7)
eq7=solve(eq4[0][1]-eq5[0][0],t)
res = sorted(res + eq7)
eq7=solve(eq4[0][1]-eq5[0][1],t)
res = sorted(res + eq7)
eq7=solve(eq4[1][0]-eq5[1][0],t)
res = sorted(res + eq7)
eq7=solve(eq4[1][0]-eq5[1][1],t)
res = sorted(res + eq7)
eq7=solve(eq4[1][1]-eq5[1][0],t)
res = sorted(res + eq7)
eq7=solve(eq4[1][1]-eq5[1][1],t)
res = sorted(res + eq7)
for i in range(len(res)):
    print("#", float(res[i]), res[i])
# -6.766432567522307 -sqrt(12*sqrt(3) + 25)
# -6.211587000989647 -sqrt(-1/(-2*sqrt(2 - sqrt(3)) + sqrt(3)*sqrt(2 - sqrt(3))))*sqrt(-4*sqrt(3) - sqrt(3)*sqrt(2 - sqrt(3)) + 10*sqrt(2 - sqrt(3)) + 8)
# -4.809261882060331 -sqrt(-1/(-2*sqrt(2 - sqrt(3)) + sqrt(3)*sqrt(2 - sqrt(3))))*sqrt(-8 - sqrt(3)*sqrt(2 - sqrt(3)) + 10*sqrt(2 - sqrt(3)) + 4*sqrt(3))
# -4.081594891957151 -sqrt(4*sqrt(33)/3 + 9)
# -2.053141570660307 -sqrt(25 - 12*sqrt(3))
# -2.053141570660307 -sqrt(25 - 12*sqrt(3))
# -1.0358770094122254 -sqrt(-8*sqrt(3) - 4*sqrt(2 - sqrt(3)) + 17)
# 1.0358770094122254 sqrt(-8*sqrt(3) - 4*sqrt(2 - sqrt(3)) + 17)
# 2.053141570660307 sqrt(25 - 12*sqrt(3))
# 2.053141570660307 sqrt(25 - 12*sqrt(3))
# 4.081594891957151 sqrt(4*sqrt(33)/3 + 9)
# 4.809261882060331 sqrt(-1/(-2*sqrt(2 - sqrt(3)) + sqrt(3)*sqrt(2 - sqrt(3))))*sqrt(-8 - sqrt(3)*sqrt(2 - sqrt(3)) + 10*sqrt(2 - sqrt(3)) + 4*sqrt(3))
# 6.211587000989647 sqrt(-1/(-2*sqrt(2 - sqrt(3)) + sqrt(3)*sqrt(2 - sqrt(3))))*sqrt(-4*sqrt(3) - sqrt(3)*sqrt(2 - sqrt(3)) + 10*sqrt(2 - sqrt(3)) + 8)
# 6.766432567522307 sqrt(12*sqrt(3) + 25)
```


変数にpositiveとrealを追加しました。

```python
from sympy import *
a, b, c, t, x, y = symbols("a,b,c,t,x,y",positive=true,real=true)
mySubs={a:5,b:4,c:3}
eq1=(x-t/2)**2+(y-sqrt(3)*t/2)**2-ａ**2
eq2=x**2+y**2-b**2
eq3=(x-t)**2+y**2-c**2
eq1=eq1.subs(mySubs)
eq2=eq2.subs(mySubs)
eq3=eq3.subs(mySubs)
res=[]
eq4=solve([eq1,eq2],[x,y])
eq5=solve([eq2,eq3],[x,y])
eq7=solve(eq4[0][0]-eq5[0][0],t)
res = sorted(res + eq7)
eq7=solve(eq4[0][0]-eq5[0][1],t)
res = sorted(res + eq7)
eq7=solve(eq4[0][1]-eq5[0][0],t)
res = sorted(res + eq7)
eq7=solve(eq4[0][1]-eq5[0][1],t)
res = sorted(res + eq7)
print("#",float(res[0]),res[0])
print("#",float(res[1]),res[1])
print("#",float(res[2]),res[2])
# 2.053141570660307 sqrt(25 - 12*sqrt(3))
# 2.2834504374453033 sqrt(-8*sqrt(3) + 4*sqrt(2 - sqrt(3)) + 17)
# 6.766432567522307 sqrt(12*sqrt(3) + 25)
```

# 次頁

https://qiita.com/mrrclb48z/items/ae11d77528ea96d83e8b