43580


(参考) 積分 - 読書ノート v1.4.0dev - プレハブ小屋  
<https://showa-yojyo.github.io/notebook/python-sympy/integrals.html>

[code]

    from sympy import *
    var('s,t,x')
    myLT1=laplace_transform(exp(-t), t, s)
    print(myLT1)
    myLT2=inverse_laplace_transform(myLT1[0], s, t)
    print(myLT2)
    #-------------------------------------------------------
    myLT3=integrate(exp(-s*t), (t, 0, 1))
    print(myLT3)
    print(myLT3[1])
    #-------------------------------------------------------
    #(1/(s + 1), 0, True)
    #exp(-t)*Heaviside(t)
    #Piecewise((1, Eq(s, 0)), (1/s - exp(-s)/s, True))
    #TypeError: 'Piecewise' object does not support indexing
    
[/code]

1/s - exp(-s)/sを取りだす方法を教えて下さい。  
よろしくお願いします。

* * *

20180501 追記  
full script :

[code]

    from sympy import *
    var('s,t')
    myLT3=integrate(exp(-s*t), (t, 0, 1))
    print(myLT3)
    u = symbols('u', positive=True)
    print(myLT3.subs(s, u).subs(u, s))
    #Piecewise((1, Eq(s, 0)), (1/s - exp(-s)/s, True))
    #1/s - exp(-s)/s
    
[/code]

(参考) Piecewise - Wolfram Language Documentation  
<http://reference.wolfram.com/language/ref/Piecewise.html>


CC BY-SA 4.0
2018-04-25T15:40:58.010
43555
2018-05-02T07:19:36.327
2018-05-02T07:19:36.327
3060
17199
question
python sympy
sympyのPiecewiseから式を取りだす方法を教えて下さい


質問の意味が「`Piecewise` オブジェクトの構成要素シーケンスにアクセスする方法を知りたい」ならば `Piecewise.args`
メンバーを参照するのがよいでしょう。このメンバーは `tuple`
オブジェクトであり、構成要素は式と条件のペアです。次のようにして「取り出す」ことができるでしょう：

[code]

    print(myLT3.args[1][0])
    
[/code]

ただし、添字の決め方は別途ご検討ください。いつでも `.args[1][0]` にお目当ての式があることは保証されないようです（後述）。

質問の意味が「この積分で値が 1 とならない場合の式を表示なり評価したい」ならば、`Piecewise.subs`
メソッドで適切な変数を代入して、所望の式表現を得るという方法もあります。例えば次のようにします：

[code]

    u = symbols('u', positive=True)
    print(myTL3.subs(s, u))
    
[/code]

ご参考までに、私の環境で解決策候補のコードを実行した画像をお見せします。おそらく使用した SymPy
のバージョンが違うためでしょうが、`Piecewise` オブジェクトの構成がそちらの結果と異なっています（したがって添字の決め打ちは危険ということです）。

[![How to access components of a
Piecewise](https://i.stack.imgur.com/t5FqW.png)](https://i.stack.imgur.com/t5FqW.png)

以上です。


CC BY-SA 3.0
2018-04-26T14:45:32.107
43580
2018-04-26T14:45:32.107
2020-06-17T08:14:45.997
-1
28328
43555
answer