You can also use refine() to select specific parts from a Piecewise. >>> refine(expr, Ne(w, 0)) 6*sin(w/2)/w**3 - 2*sin(3*w/2)/w**3
Aaron Meurer On Wed, Sep 7, 2022 at 9:36 AM Oscar <[email protected]> wrote: > > > > On Wednesday, 7 September 2022 at 15:38:44 UTC+1 brombo wrote: >> >> I calculated an integral g when printed grives: >> >> Piecewise((sin(w/2)/w - 2*cos(w/2)/w**2 + 4*sin(w/2)/w**3, Ne(w, 0)), (2/3, >> True)) + 2*Piecewise((-sin(w/2)/(2*w) + cos(w/2)/w**2 + sin(w/2)/w**3 - >> sin(3*w/2)/w**3, Ne(w, 0)), (1/6, True)) > > > So this is what we have: > > In [13]: w = symbols('w') > > In [14]: result = Piecewise((sin(w/2)/w - 2*cos(w/2)/w**2 + 4*sin(w/2)/w**3, > Ne(w, 0)), (2/3, True)) > ...: + 2*Piecewise((-sin(w/2)/(2*w) + cos(w/2)/w**2 + sin(w/2)/w**3 - > sin(3*w/2)/w**3, Ne(w, 0)), > ...: (1/6, True)) > > In [15]: result = nsimplify(result) > > In [16]: result > Out[16]: > ⎛⎧ ⎛w⎞ ⎛w⎞ ⎛w⎞ ⎞ ⎛⎧ ⎛w⎞ ⎛w⎞ ⎛w⎞ > ⎛3⋅w⎞ ⎞ > ⎜⎪sin⎜─⎟ 2⋅cos⎜─⎟ 4⋅sin⎜─⎟ ⎟ ⎜⎪ sin⎜─⎟ cos⎜─⎟ sin⎜─⎟ > sin⎜───⎟ ⎟ > ⎜⎪ ⎝2⎠ ⎝2⎠ ⎝2⎠ ⎟ ⎜⎪ ⎝2⎠ ⎝2⎠ ⎝2⎠ > ⎝ 2 ⎠ ⎟ > ⎜⎪────── - ──────── + ──────── for w ≠ 0⎟ ⎜⎪- ────── + ────── + ────── - > ──────── for w ≠ 0⎟ > ⎜⎨ w 2 3 ⎟ + 2⋅⎜⎨ 2⋅w 2 3 > 3 ⎟ > ⎜⎪ w w ⎟ ⎜⎪ w w > w ⎟ > ⎜⎪ ⎟ ⎜⎪ > ⎟ > ⎜⎪ 2/3 otherwise⎟ ⎜⎪ 1/6 > otherwise⎟ > ⎝⎩ ⎠ ⎝⎩ > ⎠ > >> >> >> First, how can I extract from g (without cutting and pasting the output) >> what I really want which is: >> >> (sin(w/2)/w - 2*cos(w/2)/w**2 + 4*sin(w/2)/w**3)+2*(-sin(w/2)/(2*w) + >> cos(w/2)/w**2 + sin(w/2)/w**3 - sin(3*w/2)/w**3) > > > In [23]: piecewise_fold(result) > Out[23]: > ⎧ ⎛w⎞ ⎛3⋅w⎞ > ⎪6⋅sin⎜─⎟ 2⋅sin⎜───⎟ > ⎪ ⎝2⎠ ⎝ 2 ⎠ > ⎪──────── - ────────── for w ≠ 0 > ⎨ 3 3 > ⎪ w w > ⎪ > ⎪ 1 otherwise > ⎩ > > In [24]: piecewise_fold(result).args[0][0] > Out[24]: > ⎛w⎞ ⎛3⋅w⎞ > 6⋅sin⎜─⎟ 2⋅sin⎜───⎟ > ⎝2⎠ ⎝ 2 ⎠ > ──────── - ────────── > 3 3 > w w > >> >> >> Secondly, I can substitute y = w/2. In the resulting expression force >> expansion of sin(3*y). trigsimp doesn't do that. I know the answer is >> supposed to be of the form (sin(y)/y)**3. > > > > In [26]: _.subs(w, 2*y) > Out[26]: > 3⋅sin(y) sin(3⋅y) > ──────── - ──────── > 3 3 > 4⋅y 4⋅y > > In [27]: _.expand(trig=True) > Out[27]: > 3 > sin (y) > ─────── > 3 > y > > -- > Oscar > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/32972cc3-85ca-4bca-abc4-f871295610e8n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6K39NgeJFvZV_YcGvtWLB%2B8uav1tR5XQ4dh1cgR%2BZC-kw%40mail.gmail.com.
