There probably is a better way of doing this in your problem but I
just want to point out a way to "manually" extract parts of an
expression. Let's create an expression with a few parts:

In [1]: a, b, c, x = symbols('a b c x')

In [2]: p = a*x**2 + b*x + c

In [3]: r1, r2 = solve(p, x)

In [4]: r1
Out[4]:
        _____________
       ╱           2
-b + ╲╱  -4⋅a⋅c + b
─────────────────────
         2⋅a

Okay now suppose I want to get the discriminant out from inside the
square root and do something with it. I can use the .args attribute of
each sympy expression to drill down to the part I want like this:

In [5]: r1.args
Out[5]:
⎛                _____________⎞
⎜     1         ╱           2 ⎟
⎜1/2, ─, -b + ╲╱  -4⋅a⋅c + b  ⎟
⎝     a                       ⎠

In [6]: r1.args[2]
Out[6]:
        _____________
       ╱           2
-b + ╲╱  -4⋅a⋅c + b

In [7]: r1.args[2].args
Out[7]:
⎛   _____________    ⎞
⎜  ╱           2     ⎟
⎝╲╱  -4⋅a⋅c + b  , -b⎠

In [8]: r1.args[2].args[0]
Out[8]:
   _____________
  ╱           2
╲╱  -4⋅a⋅c + b

In [9]: r1.args[2].args[0].args
Out[9]:
⎛          2     ⎞
⎝-4⋅a⋅c + b , 1/2⎠

In [10]: r1.args[2].args[0].args[0]
Out[10]:
          2
-4⋅a⋅c + b


On Sun, 10 Mar 2019 at 16:01, Mark Juers <mpju...@gmail.com> wrote:
>
> In my real problem, d is an arbitrarily complex expression I'd rather not 
> type out in full, and the factored part is inside a subexpression, so I'm not 
> sure I could get this to work.
>
> --
> 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 post to this group, send email to sympy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sympy.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/1b8b1b7e-22ea-4ae9-9338-f0829e2341b2%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 post to this group, send email to sympy@googlegroups.com.
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAHVvXxQXVeRBKgStk_NcJdKujYRZgV_rXV-t3AC9gnrnJynohg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to