(tan50°tan70°)/(tan60°tan80°)「2024年 防衛医科大　tanの計算」をChatGPTとWolframAlphaとsympyでやってみたい。

# wikipediaをサラサラと見るだけでもオススメします。

・[wikipedia＞Identities_without_variables(特定の角度に関する式)](https://qiita.com/mrrclb48z/items/f064c24a1bad77ec9757#wikipedia-%E6%AD%A3%E6%8E%A5%E8%8B%B1tan)
　**tan50°+tan60°+tan70°=tan50°・tan 60°・tan70°=tan 80°**

# 以下、長文です。
・私は今回、**余接cot（cotangent,コタンジェント）** のありがたみを感じました。
・[「三角関数表(正弦tan) 0°〜180°」をsympyで計算しました。](https://qiita.com/mrrclb48z/items/508c043e95a9e725d115)
・[tan 定義域(google検索結果)](https://www.google.com/search?q=tan+%E5%AE%9A%E7%BE%A9%E5%9F%9F&sca_esv=581685960&rlz=1CAUHAM_enJP1038JP1038&sxsrf=AM9HkKl3pfYv_l-HDWHlgNzPhnHimaC_Hg%3A1699787840042&ei=QLRQZbyNAoPn2roP79etmAE&ved=0ahUKEwi8rZiTq76CAxWDs1YBHe9rCxMQ4dUDCBA&uact=5&oq=tan+%E5%AE%9A%E7%BE%A9%E5%9F%9F&gs_lp=Egxnd3Mtd2l6LXNlcnAiDXRhbiDlrprnvqnln58yBRAAGIAESN5JUNwGWI9CcAR4AJABAJgBrQGgAfsNqgEEMC4xNbgBA8gBAPgBAcICChAAGEcY1gQYsAPCAgQQIxgnwgIHEAAYigUYQ8ICCRAAGAQYJRiABMICBxAjGIoFGCfCAg0QABgEGIAEGLEDGIMBwgIKEAAYBBiABBixA8ICBxAAGAQYgATCAggQABiABBixA8ICDRAAGIoFGLEDGIMBGEPCAgYQABgEGB7CAggQABgEGB4YD8ICChAAGAgYBBgeGA_iAwQYACBBiAYBkAYF&sclient=gws-wiz-serp#ip=1)

・解答のポイント
　①基本角度(基準角度)?10°づつだよね。今回有名角じゃないdeg=10°。t=tan10°と置く。
　②有名じゃないtanだけ集めて、tに紐付けて積を計算、有名角tanにならないかな。
　③有名角のtanをtに紐付ける。

・オリジナル youtube 3つです。
・sympyについて、私は、理解できない箇所について、不十分です。申し訳ありません。

# ➀sympyで(floatだけで)
後半で。

# ②③PASSLABO 様 (youtube 0:00〜10:34)
＞加法定理を使う時は、どっちかが有名角　　(02:34) 
＞偶数と奇数のバトル　　　　　　　　　　　(03:20)
＞**有名角に一番近いもの**　　　　　　　　　 　(04:46)
＞チャートとかFocusGoldに載っていない　　(07:50)

https://youtu.be/oCLW2Qjqljk

[＞裏技を使うパターン(6:25〜10:34)](https://youtu.be/oCLW2Qjqljk?t=385)

# ④⑤KATSUYA【東大数学9割】様 (youtu 0:00〜15:35)
　＞2013千葉大で、でている。　　　　　　　　　　(01:05)
　＞過去問。良問ばかりならんでいる訳ではない。　(14:23)
　＞捨てるべき問題を見極める。　　　　　　　　　(15:08)

https://youtu.be/lYLBDGwjrq8

# ⑥⑦合格舎 様  (youtube 0:00〜10:31)
　＞ひとつずれた...　　　　　(02:55)
　＞基準を揃えて...　　　　　(05:00)
　＞有名角に直すには...　　　(06:30)
  
https://youtu.be/90I8o4q6oBM

# ChatGPT-3.5先生へ(**???わかりませんでした。???**)
```
以下の計算をお願いします。
(tan(50°)*tan(70°))/(tan(60°)*tan(80°))
```
... の値は約 0.334 です。
```
無理数で
```
？？？申し訳ありませんが、...計算結果は少数として近似される必要があります。　　　？？？少数？？？
```
sympyで教えて下さい
```
ChatGPT-3.5先生の出力(省略)
on line sympy で
...print(result.evalf())  # 結果を評価して表示
...0.333333333333333

# WolframAlphaで(できました。)

https://www.wolframalpha.com/input?i=%28tan%2850%C2%B0%29*tan%2870%C2%B0%29%29%2F%28tan%2860%C2%B0%29*tan%2880%C2%B0%29%29&lang=ja

結果 1/3

# ➀sympyで(floatだけで)
・[50°,70°,80° で　　　 「1/ひとなみにおごれや」でした。](https://en.wikipedia.org/wiki/List_of_trigonometric_identities#Identities_without_variables)
・cot(60°)=1/tan(60°)で「1/ひとなみにおごれや」でした。
```python
from sympy import *
f=(tan(50*pi/180)*tan(70*pi/180 ))/(tan(60*pi/180)*tan(80*pi/180 ))
print("#",f)
print("#",1/float(f),float(f))
# sqrt(3)*tan(5*pi/18)*tan(7*pi/18)/(3*tan(4*pi/9))
# 3.0 0.3333333333333333

print()
g=f*tan(60*pi/180)
print("#",g)
print("#",g.expand(trig=true))   
print("#",g.rewrite(tan).expand(trig=true))   
print("#",1/float(g),float(g))

# tan(5*pi/18)*tan(7*pi/18)/tan(4*pi/9)
# tan(5*pi/18)*tan(7*pi/18)/tan(4*pi/9)
# tan(5*pi/18)*tan(7*pi/18)/tan(4*pi/9)
# 1.7320508075688774 0.5773502691896257
```
#### ~~できませんでした。5,6,7,8倍角は、無理ですか？~~
・[~~(私の三角関数表より)~~](https://qiita.com/mrrclb48z/items/508c043e95a9e725d115)　~~tan(10°)　→　tan(pi/18)~~                                   
コメントで、教えてもらいました。ありがとうございました。
apart() performs a partial fraction decomposition on a rational function.
https://docs.sympy.org/latest/tutorials/intro-tutorial/simplification.html#apart
```python
from sympy import *
var('θ',real=True)
f=(tan(5*θ)*tan(7*θ))/(tan(6*θ)*tan(8*θ))
g=f.expand(trig=True).simplify()
print("#",f)
print("#",g)
print("#",g.subs({θ:10*pi/180}).simplify())
# (結果省略)
```

# ②sympyで(PASSLABO 様を参考に)置き換えを使うパターン
```python
from sympy import *
var('a',real=True)
A=(tan( 5   *pi/18)*tan( 7   *pi/18))/ (tan(6*pi/18)*tan(8*pi/18) )       #;print("#A=",A)
A= tan( 5   *pi/18)*tan( 7   *pi/18) *  tan(6*pi/18)*tan(1*pi/18)         #;print("#A=",A)
A= tan((6-1)*pi/18)*tan((6+1)*pi/18) *  tan(6*pi/18)*tan(1*pi/18)          ;print("#A=",A)
# 
Aoiro= (tan(6*pi/18)-tan(1*pi/18))/(1+tan(6*pi/18)*tan(1*pi/18))  \
      *(tan(6*pi/18)+tan(1*pi/18))/(1-tan(6*pi/18)*tan(1*pi/18))  \
      * tan(1*pi/18)                                                      # ;print("#Aoiro=",Aoiro)
Aoiro=(sqrt(3)-a)/(1+sqrt(3)*a) * (sqrt(3)+a)/(1-sqrt(3)*a)*a             # ;print("#Aoiro=",Aoiro)
Aoiro=Aoiro.simplify()                                                      ;print("#Aoiro=",Aoiro)
# 
Sanbai= tan( 3   *pi/18)                                                  # ;print("#Sanbai=",Sanbai)
Sanbai= tan((2+1)*pi/18)                                                  # ;print("#Sanbai=",Sanbai)
Sanbai=(tan( 2   *pi/18)+tan(1*pi/18))/(1-tan(2*pi/18)*tan(1*pi/18))      # ;print("#Sanbai=",Sanbai)
Sanbai=((2*a)/(1-a**2)+a)/(1-2*a/(1-a**2)*a)                              # ;print("#Sanbai=",Sanbai)
Sanbai=Sanbai.simplify()                                                    ;print("#Sanbai=",Sanbai)
# 
print("#Aoiro-Sanbai=",(Aoiro-Sanbai).simplify())
# 
print("#Aoiro/tan(60°)=",tan(3*pi/18)*1/tan(6*pi/18))
#A= sqrt(3)*tan(pi/18)*tan(5*pi/18)*tan(7*pi/18)
#Aoiro= a*(a**2 - 3)/(3*a**2 - 1)
#Sanbai= a*(3 - a**2)/(1 - 3*a**2)
#Aoiro-Sanbai= 0
#Aoiro/tan(60°)= 1/3
```

# ③sympyで(PASSLABO 様を参考に)裏技を使うパターン
・両辺にsin20°を掛けます。(07:14)
・[和積の公式、積和の公式
　＜Julia（SymPy）で三角関数の加法定理、倍角の公式、和積の公式、合成を求める方法](https://math-fun.net/20211224/21139/#i-5) 
```python
from sympy import *
from sympy.simplify.fu import TR8

var('A,B,C'         ,real=True)
var('θ'             ,real=True)
var('θ2,θ4,θ6,θ8,θ10',real=True)
def myGousei(sinMcos):
     return (sinMcos.rewrite(sin)).simplify()
eqA=Eq(A                      ,       1/sqrt(3)*(cos(2*θ)  *cos(2*θ2)*cos(2*θ4) )  \
                                     /(sin(2*θ)* sin(2*θ2) *sin(2*θ4)))                   ;print("#eqA=",eqA)
print()
eqB=Eq(B                      ,                  cos(2*θ)  *cos(2*θ2)*cos(2*θ4) )         ;print("#eqB=",eqB)
eqB=Eq(sin(2*θ)*eqB.lhs       ,myGousei(sin(2*θ)*cos(2*θ ))*cos(2*θ2 )*cos(2*θ4)      ) # ;print("#eqB=",eqB)
eqB=Eq(         eqB.lhs       ,         myGousei(sin(2*θ2) *cos(2*θ2))*cos(2*θ4) /2   ) # ;print("#eqB=",eqB)
eqB=Eq(eqB.lhs.subs({θ:pi/18}),                    myGousei(sin(2*θ4) *cos(2*θ4))/4   ) # ;print("#eqB=",eqB)
eqB=Eq(eqB.lhs                ,                                       sin(16*pi/18)/8)  # ;print("#eqB=",eqB)
eqB=Eq(eqB.lhs/sin(pi/9)      ,eqB.rhs/sin(pi/9)                                     )    ;print("#eqB=",eqB)
print()
eqC=Eq(C,(sin(2*θ)* sin(4*θ) *sin(8*θ)))                                                  ;print("#eqC=",eqC)
eqC=Eq(C,TR8(sin(2*θ)* sin(4*θ))*sin(8*θ))                                               #;print("#eqC=",eqC)
rep={cos(2*θ):cos(θ2),cos(6*θ):cos(θ6),sin(8*θ):sin(θ8)}    
eqC=Eq(C,eqC.rhs.subs(rep).expand())                                                     #;print("#eqC=",eqC)
rep={θ6:6*pi/18}    
eqC=Eq(C,eqC.rhs.subs(rep).expand())                                                     #;print("#eqC=",eqC)
eqC=Eq(C,((sin(θ2 )+sin(θ8))/2).rewrite(sin).expand(trig=true))                          #;print("#eqC=",eqC)
eqC=Eq(C,((sin(θ10)+sin(θ6))/4)-sin(θ8)/4)                                               #;print("#eqC=",eqC)
eqC=Eq(C,((sin(θ8 )+sin(θ6))/4)-sin(θ8)/4)                                               #;print("#eqC=",eqC)
eqC=Eq(C,eqC.rhs).subs(rep)                                                              ;print("#eqC=",eqC)                                             
print()
BwC=eqB.rhs/eqC.rhs
print("#B/C= 1/",(denom(BwC)/numer(BwC)))
#eqA= Eq(A, sqrt(3)*cos(2*θ)*cos(2*θ2)*cos(2*θ4)/(3*sin(2*θ)*sin(2*θ2)*sin(2*θ4)))

#eqB= Eq(B, cos(2*θ)*cos(2*θ2)*cos(2*θ4))
#eqB= Eq(B, 1/8)

#eqC= Eq(C, sin(2*θ)*sin(4*θ)*sin(8*θ))
#eqC= Eq(C, sqrt(3)/8)

#B/C= 1/ sqrt(3)
```

# ④sympyで(KATSUYA【東大数学9割】様を参考に) 2013 千葉大を参考にするパターン
「tan10°=tan20°tan30°tan40° を示せ.」より
・print文の表示です。
```python
from sympy import *
f  =  (  tan(5*pi/18)  *tan(7*pi/18))/(tan(6*pi/18)*tan(8*pi/18))  # ;print("#",f)
eq1=Eq(  tan(1*pi/18),   tan(2*pi/18) *tan(3*pi/18)*tan(4*pi/18) ) # ;print("#",eq1)
eq2=Eq(1/tan(8*pi/18),1/(tan(7*pi/18) *tan(6*pi/18)*tan(5*pi/18))) # ;print("#",eq2)
f  =f.subs({eq2.lhs:eq2.rhs})                                        ;print("#",f)
# 1/3
```

# ⑤sympyで(KATSUYA【東大数学9割】様を参考に)置き換えを使うパターン
```python
# ver0.1
from sympy import *
var('α,β,θ,t',real=True)
eqTanαβ=Eq(tan(α+β),tan(α+β).expand(trig=True).factor()) #;print("#",eqTanαβ)
eqTan3θ=Eq(tan(3*θ),tan(3*θ).expand(trig=True).factor()) #;print("#",eqTan3θ)
t80=1/tan(pi/18)
t50=eqTanαβ.rhs.subs({α:6*pi/18,β:-pi/18})
t70=eqTanαβ.rhs.subs({α:6*pi/18,β: pi/18})
t30=(  eqTan3θ.rhs).subs({tan(θ):t})
f578=((t50*t70)/(t80)).simplify().subs({tan(pi/18):t})
print("#", t30)
print("#",f578)
print("#",f578-t30)
t30=1/sqrt(3)
t60=  sqrt(3)
print("#",t30/t60)
# t*(t**2 - 3)/(3*t**2 - 1)
# t*(t**2 - 3)/(3*t**2 - 1)
# 0
# 1/3
```

# ⑥sympyで(合格舎 様を参考に)
・次の⑦の一部を関数にしました。
・置き換えのパターンです。
```python
# ver0.2
from sympy import *
var('θ,α,β',real=True)
var('x,y' ,real=True)
def myEqRep(inEq,inRep):
     return Eq(inEq.lhs.subs(inRep),inEq.rhs.subs(inRep))
def myEqDic(inEq):
     return {inEq.lhs:inEq.rhs}
def myTan_50_70_80():
     eqTanαβ=Eq(tan(α+β),tan(α+β).expand(trig=True).factor())                                       ; print("#",eqTanαβ)
     eqtan50=Eq(tan(5*pi/18),eqTanαβ.rhs.subs({tan(α):tan(6*pi/18),tan(β):-tan(1*pi/18)}).factor()) ; print("#",eqtan50)
     eqtan70=Eq(tan(7*pi/18),eqTanαβ.rhs.subs({tan(α):tan(6*pi/18),tan(β): tan(1*pi/18)}).factor()) ; print("#",eqtan70)
     eqtan80=Eq(tan(8*pi/18),1/tan(1*pi/18))                                                       ; print("#",eqtan80);print()
     return myEqDic(eqtan50) | myEqDic(eqtan70) | myEqDic(eqtan80)
def myTan_30():
     eqTan3θ=Eq(tan(3*θ),tan(3*θ).expand(trig=True).factor())                                       ; print("#",eqTan3θ)
     eqtan30=myEqRep(eqTan3θ,({θ:1*pi/18}))  
     eqtan30=Eq(eqtan30.rhs,eqtan30.lhs)                                                           ; print("#",eqtan30);print()
     return myEqDic(eqtan30)                                                                     
rep  =myTan_50_70_80()
rep30=myTan_30()
rep60={tan(6*pi/18):sqrt(3)}
# 
t5="tan(5*pi/18)"
t7="tan(7*pi/18)"
t6="tan(6*pi/18)"
t8="tan(8*pi/18)"
print("#",t5,"*",t7,"/",t6,"",t8)
print("#", ((((sympify(t5)* sympify(t7)).subs(rep).simplify())*tan(pi/18)).subs(rep30)/tan(pi/18)) / \
              (sympify(t6)*(sympify(t8)).subs(rep)) )
# 
# Eq(tan(α + β), -(tan(α) + tan(β))/(tan(α)*tan(β) - 1))
# Eq(tan(5*pi/18), (-tan(pi/18) + sqrt(3))/(sqrt(3)*tan(pi/18) + 1))
# Eq(tan(7*pi/18), -(tan(pi/18) + sqrt(3))/(-1 + sqrt(3)*tan(pi/18)))
# Eq(tan(4*pi/9), 1/tan(pi/18))

# Eq(tan(3*θ), (tan(θ)**2 - 3)*tan(θ)/(3*tan(θ)**2 - 1))
# Eq((-3 + tan(pi/18)**2)*tan(pi/18)/(-1 + 3*tan(pi/18)**2), sqrt(3)/3)

# tan(5*pi/18) * tan(7*pi/18) / tan(6*pi/18)  tan(8*pi/18)
# 1/3
```
# ⑦sympyで(合格舎 様を参考に)
・最初に作成です。
```python
# ver0.1
from sympy import *
var('α,β,a,θ'            ,real=True)
var('Tn3,Tn5,Tn6,Tn7,Tn8',real=True)
p1=1*pi/18
p5=5*pi/18
p6=6*pi/18
p7=7*pi/18
p8=8*pi/18
rep={tan(pi/18):a}
eqTanαβ=Eq(tan(α+β),tan(α+β).expand(trig=True).factor())            #;print("#",eqTanαβ)
eqTn5  =Eq(Tn5,eqTanαβ.rhs.subs({α:p6,β:-p1}).subs(rep).simplify()) #;print("#",eqTn5)
eqTn7  =Eq(Tn7,eqTanαβ.rhs.subs({α:p6,β: p1}).subs(rep).simplify()) #;print("#",eqTn7)
eqTn6  =Eq(Tn6,tan(p6))                                             #;print("#",eqTn6)
eqTn8  =Eq(Tn8,(1/tan(p1)).subs(rep))                               #;print("#",eqTn8)
f=((eqTn5.rhs*eqTn7.rhs)/(eqTn6.rhs*eqTn8.rhs)).simplify()           ;print("#",f)
# 
eqTan3θ=Eq(tan(3*θ),tan(3*θ).expand(trig=True).factor())            #;print("#",eqTan3θ)
eqTn3  =Eq(eqTan3θ.lhs.subs({θ:p1}) ,
           eqTan3θ.rhs.subs({θ:p1}).subs(rep).simplify())            ;print("#"," "*7,numer(eqTn3.rhs),"/ (",denom(eqTn3.rhs),")")
print()
g="(tan(5*pi/18) * tan(7*pi/18) ) / (tan(6*pi/18)*tan(8*pi/18))"     ;print("#",g)
f=(f*3).subs({eqTn3.rhs:eqTn3.lhs})/3                                ;print("#",f)
# sqrt(3)*a*(a**2 - 3)/(3*(3*a**2 - 1))
#         a*(a**2 - 3) / ( 3*a**2 - 1 )

# (tan(5*pi/18) * tan(7*pi/18) ) / (tan(6*pi/18)*tan(8*pi/18))
# 1/3
```

# ⑧だめでした。TR13 sympyで
・できると思ったんですけど。
Change products of tan or cot.
https://docs.sympy.org/latest/modules/simplify/fu.html#sympy.simplify.fu.TR13
```python
#　だめでした。TR13
# ver0.1
from sympy import *
from sympy.simplify.fu import TR13
t5="tan(5*pi/18)"
t7="tan(7*pi/18)"
t6="tan(6*pi/18)"
t8="tan(8*pi/18)"
f ="("+t5+"*"+t7+")/("+t6+"*"+t8+")"
print("#",f,float(1/sympify(f)))
print("#",    (sympify(t5)*sympify(t7))/(sympify(t6)*sympify(t8)))
print("#",TR13(sympify(t5)*sympify(t7)))
print("#",TR13(sympify(t6)*sympify(t8)))
g=TR13( sympify(t5)*sympify(t7) )/TR13( sympify(t6)*sympify(t8) ).simplify()
print("#",g,1/float(g))
# sqrt(3)*(sqrt(3)*tan(5*pi/18)/3 + 1 + sqrt(3)*tan(7*pi/18)/3)/(3*tan(4*pi/9)) 3.0
```

# いつもと違うおすすめです。

https://qiita.com/mrrclb48z/items/5b1f1946f20ecbca3628#sympy%E3%81%A7

・過去問勉強中 
　2013千葉大を含む。

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



# いつもの? sympyの実行環境と 参考のおすすめです。
(テンプレート)

https://qiita.com/mrrclb48z/items/00dd08b0317069be9342

# 未整理

https://www.google.com/search?q=tan20%C2%B0tan40%C2%B0tan60%C2%B0tan80%C2%B0&rlz=1CAUHAM_enJP1038JP1038&oq=tan20%C2%B0tan40%C2%B0tan60%C2%B0tan80%C2%B0&gs_lcrp=EgZjaHJvbWUyCwgAEEUYExg5GIAEMgkIARAAGBMYgATSAQg5MTAzajBqN6gCALACAA&sourceid=chrome&ie=UTF-8

＞前期理科【６】＜KATSUYA【東大数学9割】様

https://mathexamtest.web.fc2.com/2023/202310261/2023102610100mj.html#top-0106