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.

置換積分 Integralのtransform「2007 京都大学前期理系乙【1】問1」をChatGPTとWolframAlphaとsympyでやってみたい。

Last updated at Posted at 2023-10-03

・Integralのtransformでやってみました。
・WolframAlphaでグラフがでます。

オリジナル(youtube 12:02) PASSLABO 様より

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

ChatGPT-3.5先生へ(???間違っています。???)

やってて、だんだん自信?がなくなってきました。
入力文1

定積分integrate((2*x+1)/sqrt(x**2+4),x,0,2)を求めよ.

??? 返信抜粋

...
これで、積分は簡単に計算できます:
...
したがって、与えられた定積分の値は約2.644です。

入力文2(続けて)

sympyで教えて下さい

??? 返信抜粋

...
SymPyを使用して計算すると、結果は以下の通りです。
2*sqrt(5)*asinh(1)
...
したがって、SymPyを使用して計算した場合、定積分の値は約2.644です。

WolframAlphaで

グラフがでます。

定積分
integral_0^2 (2 x + 1)/sqrt(x^2 + 4) dx = -4 + 4 sqrt(2) + sinh^(-1)(1)≈2.5382

計算結果
簡約 | integral_0^2 (2 x + 1)/sqrt(x^2 + 4) dx = 簡約 | -4 + 4 sqrt(2) + sinh^(-1)(1)

別の形
log(1 + sqrt(2))

sympyで(PASSLABO 様の方法を参考に) できませんでした。

・私は、あと一歩のような気もしました。深掘りできませんでした。
・transformは、使っていません。

>困難だと思ったら分割する 部分分数展開,積を和に(01:34)
>I1:2xはx^2+4の微分した形・・・        (02:50)
>  あえて置換しない方法・・・        (03:59)
>I2:置換積分 この√が消えるから。         (06:07)
>三角関数だけの積分の時...              (08:22)
Converts ratios involving sin and cos as follows::
sin(x)/cos(x) -> tan(x) sin(x)/(cos(x) + 1) -> tan(x/2) if half=True
https://docs.sympy.org/latest/modules/simplify/fu.html#sympy.simplify.fu.TR2i
To apply identities 1 and 2 from right to left, use logcombine().
https://docs.sympy.org/latest/tutorials/intro-tutorial/simplification.html#logcombine

from sympy import *
from sympy.simplify.fu import TR2i
var('x'          ,real=True)
var('g1,I1,I2,g2',real=True)
var('θ,aθ,bθ,dxθ',real=True)
def myEqTanCos():
    eq01=Eq( sin(θ)**2+cos(θ)**2 ,1        )  #;print("#01 ",eq01) 
    eq02=Eq((eq01.lhs/cos(θ)**2).expand(), 
             eq01.rhs/cos(θ)**2            )  #;print("#02 ",eq02)
    eq03=Eq( TR2i(eq02.lhs),eq02.rhs       )  ;print("#00",eq03)
    return eq03 
print("#   (0:57)",50*"-")
eqTanCos=myEqTanCos()
(a,b)=(0,2)
f1=(2*x  )/sqrt(x**2+4)                 ;print("#I1",Integral(f1,(x,a,b)))
f2=(   +1)/sqrt(x**2+4)                 ;print("#I2",Integral(f2,(x,a,b)))
f =f1+f2                                ;print("#I ",Integral(f,(x,a,b)).simplify())
print("#    (2:20)",50*"-")
print("#11  Eq(g1,(",denom(f1),")' )" )
eq12=Eq(g1       ,diff(denom(f1))     ) ;print("#12 ",eq12)
eq13=Eq(eq12.lhs*2,eq12.rhs*2         ) ;print("#13 ",eq13)
eq14=Eq(I1, 2*denom(f1).subs({x:2})
           -2*denom(f1).subs({x:0})   ) ;print("#14 ",eq14)                  
print("#    (4:22)",50*"-")
eq21=Eq(x  ,2*tan(θ)                  ) ;print("#21 ",eq21)
eq22=Eq(dxθ,diff(eq21.rhs).factor()
  .subs({eqTanCos.lhs:eqTanCos.rhs } )) ;print("#22 ",eq22)
eq23=Eq(f2 ,f2.subs({x:2*tan(θ)}) )     ;print("#23 ",eq23)
eq24=Eq(eq23.lhs,eq23.rhs.factor()
  .subs({eqTanCos.lhs:eqTanCos.rhs }))  ;print("#24 ",eq24)
eq25=Eq(eq23.lhs,cos(θ)/2            )  ;print("#25 ",eq25)
print("#    (5:32)")
eq26=Eq(,solve(eq21.subs({x:a}))[0] ) ;print("#26 ",eq26)
eq27=Eq(,solve(eq21.subs({x:b}))[0] ) ;print("#27 ",eq27)
eq28=Eq(dxθ,diff(eq21.rhs)            ) ;print("#28 ",eq28)
eq29=Eq(eq28.lhs,eq28.rhs.factor()
  .subs({eqTanCos.lhs:eqTanCos.rhs }) ) ;print("#29 ",eq29)
print("#    (6:20)")
f =sqrt( 4*(1+tan(θ)**2) )             ;print("# f=",f)
f =sqrt( 4/cos(θ)**2)                  ;print("# f=",f)
print("#    (7:20)")
f =eq25.rhs*eq29.rhs                   ;print("# f =",f)
fn=numer(f);fd=denom(f)                ;print("# f =",fn,"/",fd)
fn=numer(f)*cos(θ);fd=denom(f)*cos(θ)  ;print("# f =",fn,",",fd)
fn=numer(f)*cos(θ);fd=1-sin(θ)**2      ;print("# f =",fn,",",fd)
f=apart(fn/fd,sin(θ))                  ;print("# f =",f )
I2=Integral( f,(θ,eq26.rhs,eq27.rhs))  ;print("#I2 =",I2)
I2=I2.doit()                           ;print("#I2 =",I2)
I2=logcombine(I2,force=True )          ;print("#I2 =",I2)
print("#    (10:20)")
#   (0:57) --------------------------------------------------
#00 Eq(tan(θ)**2 + 1, cos(θ)**(-2))
#I1 Integral(2*x/sqrt(x**2 + 4), (x, 0, 2))
#I2 Integral(1/sqrt(x**2 + 4), (x, 0, 2))
#I  Integral((2*x + 1)/sqrt(x**2 + 4), (x, 0, 2))
#    (2:20) --------------------------------------------------
#11  Eq(g1,( sqrt(x**2 + 4) )' )
#12  Eq(g1, x/sqrt(x**2 + 4))
#13  Eq(2*g1, 2*x/sqrt(x**2 + 4))
#14  Eq(I1, -4 + 4*sqrt(2))
#    (4:22) --------------------------------------------------
#21  Eq(x, 2*tan(θ))
#22  Eq(dxθ, 2/cos(θ)**2)
#23  Eq(1/sqrt(x**2 + 4), 1/sqrt(4*tan(θ)**2 + 4))
#24  Eq(1/sqrt(x**2 + 4), Abs(cos(θ))/2)
#25  Eq(1/sqrt(x**2 + 4), cos(θ)/2)
#    (5:32)
#26  Eq(aθ, 0)
#27  Eq(bθ, pi/4)
#28  Eq(dxθ, 2*tan(θ)**2 + 2)
#29  Eq(dxθ, 2/cos(θ)**2)
#    (6:20)
# f= sqrt(4*tan(θ)**2 + 4)
# f= 2/Abs(cos(θ))
#    (7:20)
# f = 1/cos(θ)
# f = 1 / cos(θ)
# f = cos(θ) , cos(θ)**2
# f = cos(θ) , 1 - sin(θ)**2
# f = cos(θ)/(2*(sin(θ) + 1)) - cos(θ)/(2*(sin(θ) - 1))
# 
#I2 = Integral(cos(θ)/(2*(sin(θ) + 1)) - cos(θ)/(2*(sin(θ) - 1)), (θ, 0, pi/4))
#I2 = log(sqrt(2)/2 + 1)/2 - log(1 - sqrt(2)/2)/2
#I2 = log(sqrt(sqrt(2)/2 + 1)/sqrt(1 - sqrt(2)/2))
#    (7:20)

sympyで(transformで)

>困難だと思ったら分割する 部分分数展開,積の和 (01:34)
・PASSLABO 様,transform 様のおかげです。
transform(x, u)
https://docs.sympy.org/latest/modules/integrals/integrals.html#sympy.integrals.integrals.Integral.transform

from sympy import *
var('x',real=True)
var('θ',real=True)
# 
(a,b)=(0,2)
f1=(2*x  )/sqrt(x**2+4)   
f2=(   +1)/sqrt(x**2+4)   
f =f1+f2                    ;print("#I  =",Integral(f,(x,a,b)))
print()
I1=Integral(f1,(x,a,b) )    ;print("#I1 =",I1)          
I1=I1.transform(x,2*tan(θ)) ;print("#I1 =",I1)         
I1=I1.doit()                ;print("#I1 =",I1)         
print()
I2=Integral(f2,(x,a,b) )    ;print("#I2 =",I2)         
I2=I2.doit()                ;print("#I2 =",I2)         
#I  = Integral(2*x/sqrt(x**2 + 4) + 1/sqrt(x**2 + 4), (x, 0, 2))

#I1 = Integral(2*x/sqrt(x**2 + 4), (x, 0, 2))
#I1 = Integral(4*(2*tan(θ)**2 + 2)*tan(θ)/sqrt(4*tan(θ)**2 + 4), (θ, 0, pi/4))
#I1 = -4 + 4*sqrt(2)

#I2 = Integral(1/sqrt(x**2 + 4), (x, 0, 2))
#I2 = log(1 + sqrt(2))

・以下はうごきません。私は、図々しいみたいです。分割が必要でした。

#これは、うごきません。
from sympy import *
var('x',real=True)
var('θ',real=True)
(a,b)=(0,2)
f=(2*x+1)/sqrt(x**2+4) 
I=Integral(f,(x,a,b) )    ;print("#I =",I)         
I=I.transform(x,2*tan(θ)) ;print("#I =",I)         
I=I.doit()                ;print("#I =",I)         
#I = Integral((2*x + 1)/sqrt(x**2 + 4), (x, 0, 2))
#I = Integral((4*tan(θ) + 1)*(2*tan(θ)**2 + 2)/sqrt(4*tan(θ)**2 + 4), (θ, 0, pi/4))
#I = Integral((4*tan(θ) + 1)*sqrt(tan(θ)**2 + 1), (θ, 0, pi/4))

sympyで(いつものスタイルで)

from sympy import *
var('x',real=True)
print("#", integrate((2*x+1)/sqrt(x**2+4),(x,0,2))  )
# -4 + log(1 + sqrt(2)) + 4*sqrt(2)

sympyの実行環境

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

参考

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

0
0
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
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?