0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-08-25

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

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

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

オリジナル

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

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}]

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

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.lhsmy1.expand()→(eqA.lhsmy1).expand()
掛け算にカッコが必要でした。eqB=を直しました。

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を使っていません。おかしいですね。

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)

上と同じです。

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」に、コピー貼り付けでもできました。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。
??? タブレット環境で、コピー貼り付けが実行できませんでした。???

参考

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

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

0
0
2

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?