α>0,β>0,a>0,b>0,2*α+β=pi/4,tanα=1/a,tanβ=1/b   「2011熊本県立大学前期【3】」をChatGPTとWolframAlphaとsympyでやってみたい。

**パイソニスタの方へ
~~２点教えて下さい。~~ 1点教えて下さい。**

~~(1) 本文「sympyで(T氏の数学日記 様の方法を参考に)」内の、掛け算を実行しない。~~
(2023/08/29済) 私は、expand()の使い方を間違っていました。()の追加です。ページ中盤。

(2)　本文「sympyで(T氏の数学日記 様の方法を参考に)」内の、
　 　表現「0<2α<π/4」の表現方法について。
参考
＞不等式をやめて、以下の処理で区間に変換しています

https://teratail.com/questions/227429

# オリジナル

https://mathmathmass.exblog.jp/33404253/

上と同じです。大学入試数学問題集成 様＞【3】テキスト

https://mathexamtest.web.fc2.com/2011/201111901/2011119010100mj.html#top-0103

# xxxx ChatGPTで(できませんでした。) xxx
2通りでやってみました。
```
正の数α,β,a,bが2*α+β=pi/4,tan(α)=1/a,tan(β)=1/bを満たすとき,aを用いてbを表しなさい.
```
？？？？＞これで、aを用いてbを表す式が得られました。
```
Solve[{α>0,β>0,a>0,b>0,2*α+β=pi/4, tan(α)=1/a,tan(β)=1/b}, {α,β,b}]    
```
＞You can solve this system of equations using Mathematica or a similar computational software. Here's how you can do it in Mathematica:.......

＞（DepL翻訳)この連立方程式は，Mathematica または同様の計算ソフトを使って解くことができます．Mathematica での解き方は次のとおりです．

ChatGPT先生の言われるとおりでした。

# xxxx WolframAlphaで(できませんでした。) xxx

Solve[{α>0,β>0,a>0,b>0,2*α+β==pi/4, tan(α)==1/a,tan(β)==1/b}, {α,β,b}]    

https://www.wolframalpha.com/input?i=Solve%5B%7B%CE%B1%3E0%2C%CE%B2%3E0%2Ca%3E0%2Cb%3E0%2C2*%CE%B1%2B%CE%B2%3D%3Dpi%2F4%2C+tan%28%CE%B1%29%3D1%2Fa%2Ctan%28%CE%B2%29%3D1%2Fb%7D%2C+%7B%CE%B1%2C%CE%B2%2Cb%7D%5D++++&lang=ja

結果
(整数解はありません)

# xxx sympyで(T氏の数学日記 様の方法を参考に) xxx　できませんでした。
＞**αの範囲からaの範囲を厳密に調べ，最後の結論で分母が0にならないことを確かめる...**

sympy.simplify.fu.TR12(rv, first=True)
Separate sums in tan.
https://docs.sympy.org/latest/modules/simplify/fu.html#sympy.simplify.fu.TR12

**(2023/08/29済) 私は、expand()の使い方を間違っていました。**
eqA.lhs*my1.expand()→(eqA.lhs*my1).expand()
掛け算にカッコが必要でした。eqB=を直しました。

```python
from sympy import *
from sympy.simplify.fu import TR12
var('α,β,a,b',real=True,nonnegative=True)
eq1=Eq(2*α+β ,pi/4)                                                                 ;print("#eq1",eq1)
eq2=Eq(tan(α), 1/a)                                                                 ;print("#eq2",eq2)
eq3=Eq(tan(β), 1/b)                                                                 ;print("#eq3",eq3)
mySubs={eq2.lhs:eq2.rhs,eq3.lhs:eq3.rhs}
# 
eq4=Eq(  tan(eq1.lhs)                      ,tan(eq1.rhs)                         )  ;print("#eq4",eq4)
eq5=Eq( TR12(eq4.lhs)                      ,eq4.rhs                              )  ;print("#eq5",eq5)
eq6=Eq(numer(eq5.lhs)                      ,eq5.rhs*denom(eq5.lhs)               )  ;print("#eq6",eq6)
eq7=Eq(eq6.lhs.expand(trig=True).simplify(),eq6.rhs.expand(trig=True).simplify() )  ;print("#eq7",eq7)
eq8=Eq(eq7.lhs*denom(eq7.lhs)              ,eq7.rhs*denom(eq7.lhs)               )  ;print("#eq8",eq8)
eq9=Eq(eq8.lhs.subs(mySubs)                ,eq8.rhs.subs(mySubs)                 )  ;print("#eq9",eq9)
eqA=Eq(eq9.lhs.expand()                    ,eq9.rhs.expand()                     )  ;print("#eqA",eqA)
my1=a**2*b
eqB  =Eq((eqA.lhs*my1).expand()            ,(eqA.rhs*my1).expand()               )  ;print("#eqA",eqA)
eqC  =Eq( eqB.lhs*(-1)                     , eqB.rhs*(-1)                        )  ;print("#eqC",eqC)
ans  =solve(eqC,b)[0]
eqD  =Eq( numer(ans)                       ,denom(ans)*b                         )  ;print("#eqD",eqD)              
# 2023/08/28
# この間は、勉強中です。Interval(0,2*α) and Interval(2*α,pi/4)
# ここで、~
# したがって、...
eqE  =Eq( b                                ,solve(eqD,b)[0]                      )  ;print("#eqE",eqE)              
eqF  =Eq( b                                ,-numer(eqE.rhs)/-denom(eqE.rhs)      )  ;print("#eqF",eqF)              
#eq1 Eq(2*α + β, pi/4)
#eq2 Eq(tan(α), 1/a)
#eq3 Eq(tan(β), 1/b)
#eq4 Eq(tan(2*α + β), 1)
#eq5 Eq((tan(2*α) + tan(β))/(-tan(2*α)*tan(β) + 1), 1)
#eq6 Eq(tan(2*α) + tan(β), -tan(2*α)*tan(β) + 1)
#eq7 Eq(((tan(α)**2 - 1)*tan(β) - 2*tan(α))/(tan(α)**2 - 1), (tan(α)**2 + 2*tan(α)*tan(β) - 1)/(tan(α)**2 - 1))
#eq8 Eq((tan(α)**2 - 1)*tan(β) - 2*tan(α), tan(α)**2 + 2*tan(α)*tan(β) - 1)
#eq9 Eq((-1 + a**(-2))/b - 2/a, -1 + 2/(a*b) + a**(-2))
#eqA Eq(-1/b - 2/a + 1/(a**2*b), -1 + 2/(a*b) + a**(-2))
#eqB Eq(-a**2 - 2*a*b + 1, -a**2*b + 2*a + b)
#eqC Eq(a**2 + 2*a*b - 1, a**2*b - 2*a - b)
#eqD Eq(-a**2 - 2*a + 1, b*(-a**2 + 2*a + 1))
#eqE Eq(b, (-a**2 - 2*a + 1)/(-a**2 + 2*a + 1))
#eqF Eq(b, (a**2 + 2*a - 1)/(a**2 - 2*a - 1))
```

# sympyで(α,β,bの3元連立方程式で) 
・がんばれば、3行で？できました。
・π/8を使っていません。おかしいですね。
```python
from sympy import *
var('α,β,a,b',real=True,nonnegative=True)
print("#",solve([Eq(2*α+β ,pi/4),
                 Eq(tan(α), 1/a),
                 Eq(tan(β), 1/b)],[α,β,b])[0][2].expand(trig=True).simplify())
# (a**2 + 2*a - 1)/(a**2 - 2*a - 1)
```
上と同じです。
```python
from sympy import *
var('α,β,a,b',real=True,nonnegative=True)
eq1=Eq(2*α+β ,pi/4)
eq2=Eq(tan(α), 1/a)
eq3=Eq(tan(β), 1/b)
ans=solve([eq1,eq2,eq3],[α,β,b])
print("# α=",ans[0][0])
print("# β=",ans[0][1])
print("# b=",ans[0][2])
print()
print("#",ans[0][2])
print("#",ans[0][2].simplify())
print("#",ans[0][2].expand(trig=True))
print("#",ans[0][2].expand(trig=True).simplify())
# α= atan(1/a)
# β= -2*atan(1/a) + pi/4
# b= tan(2*atan(1/a) + pi/4)

# tan(2*atan(1/a) + pi/4)
# tan(2*atan(1/a) + pi/4)
# 2/(a - 2*a/(a - 1/a) + 2/(a**2 - 1) - 1/a) + 1/(1 - 2/(a - 1/a))
# (a**2 + 2*a - 1)/(a**2 - 2*a - 1)
```

# sympyの実行環境
①私の環境は,pycharmです。
②よく聞くのは、Jupyterです。
③web上で、上記のソースを「SymPy Live shell」に、コピー貼り付けでもできました。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。
???　タブレット環境で、コピー貼り付けが実行できませんでした。???

https://live.sympy.org/

# 参考
＞expandは式の展開をしますが、そのときtrig=Trueと指定することにより、加算公式の計算をすることができます。

https://ictsr4.com/sw/sympy%E3%81%AB%E3%82%88%E3%82%8B%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0%E3%81%AE%E8%A8%88%E7%AE%97/

https://qiita.com/mrrclb48z/items/5b1f1946f20ecbca3628

以下、いつもの?おすすめです。

https://qiita.com/mrrclb48z/items/75904cdc6e84ecef4d03#%E5%8F%82%E8%80%83wolframalpha-%E9%96%8B%E7%99%BA%E7%89%A9%E8%AA%9E