Thanks Oscar On Tuesday, May 21, 2024 at 4:32:56 PM UTC-4 Oscar wrote:
> You can pass factor as the third argument to collect like collect(rhs, > ρ, factor). Then the collected coefficients will be factored. > > On Tue, 21 May 2024 at 21:27, Don Burgess <debur...@gmail.com> wrote: > > > > Thank you very much for your helpful reply. > > > > Since I was using collect, I used the following code: > > > > ```python > > import sympy as sp > > from sympy import sin, cos, atan, integrate, diff > > t,μ,ρ,ψ = sp.symbols(['t','μ','ρ','ψ']) > > > > rhs = 2*μ*(1 - ρ*cos(ψ)**2)*ρ*sin(ψ)**2 > > > > from sympy.simplify.fu import TR8 > > rhs = TR8(rhs).expand() > > > > rhs = sp.collect(rhs, ρ) > > > > for i in range(3): > > rhs = rhs.replace(rhs.coeff(ρ,i), rhs.coeff(ρ,i).factor() ) > > ``` > > > > On Tuesday, May 21, 2024 at 11:32:11 AM UTC-4 smi...@gmail.com wrote: > >> > >> This is what your code looks like after prefixing with ‘’’python and > suffixing with ‘’’ (where back tics were used instead of single quotes): > >> > >> def factor_subexpressions(expr): """Factors all subexpressions of a > SymPy expression. Args: expr: A SymPy expression. Returns: A SymPy > expression with all subexpressions factored. """ if isinstance(expr, > sp.Add): return sp.Add(*[arg.factor() for arg in expr.args]) elif > isinstance(expr, sp.Mul): return sp.Mul(*[arg.factor() for arg in > expr.args]) else: return sp.factor(expr) > >> On Tuesday, May 21, 2024 at 10:30:18 AM UTC-5 Chris Smith wrote: > >>> > >>> I would use expr.factor(deep=True) and if that didn’t work, then > expr.replace(lambda x: x.is_Mul or x.is_Add, lambda x: x.factor()). > >>> > >>> Regarding formatting in Google groups, see here where the recommended > Markdown extension for Chrome was used to format this message. > >>> > >>> > >>> I typed the following and then hit the extension icon and got what you > see above > >>> > >>> > >>> I would use `expr.factor(deep=True)` and if that didn't work, then > `expr.replace(lambda x: x.is_Mul or x.is_Add, lambda x: x.factor())`. > >>> > >>> Regarding formatting in Google groups, see [here]( > https://webapps.stackexchange.com/questions/36030/insert-code-sample-into-a-google-groups-post) > > where the recommended Markdown extension for Chrome was used to format this > message. > >>> > >>> /c > >>> > >>> On Tuesday, May 21, 2024 at 6:06:15 AM UTC-5 debur...@gmail.com wrote: > >>>> > >>>> > >>>> Is this function a good way to apply factor to subexpressions? > >>>> > >>>> def factor_subexpressions(expr): > >>>> """Factors all subexpressions of a SymPy expression. > >>>> > >>>> Args: > >>>> expr: A SymPy expression. > >>>> > >>>> Returns: > >>>> A SymPy expression with all subexpressions factored. > >>>> """ > >>>> > >>>> if isinstance(expr, sp.Add): > >>>> return sp.Add(*[arg.factor() for arg in expr.args]) > >>>> elif isinstance(expr, sp.Mul): > >>>> return sp.Mul(*[arg.factor() for arg in expr.args]) > >>>> else: > >>>> return sp.factor(expr) > >>>> > >>>> How do I post code? > > > > -- > > 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 sympy+un...@googlegroups.com. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/eba5031f-4770-4fa1-a1b8-73e38787cfa3n%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 sympy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/49027981-6f46-45a4-8de9-c32563e53162n%40googlegroups.com.