22 views

Skip to first unread message

Aug 15, 2020, 4:07:27 PM8/15/20

to sympy

Hello,

I'm attempting to translate Latex into SymPy and am seeking guidance on how to handle the notation of "much greater than."

For example, "a + b = c" is replaced by "a = c" under the condition "b << a". How would that be represented in Sympy?

I like the explanation of ">>" provided in this StackOverflow answer, so there is some deeper meaning to the notation. However, that doesn't indicate what the appropriate representation in SymPy would be.

For comparison with other Computer Algebra Systems, I'm not able to find the concept in Sage documentation. I did find this post on Mathematica.

Aug 18, 2020, 5:21:04 PM8/18/20

to sympy

If I understand the references correctly, you'd want to replace

instances of a and b in the expression with b/a, replace that with a

single variable like x, then do a series expansion and remove higher

order x terms. There isn't anything in SymPy that automates this in

one step but you can get a lot of it automatically with subs() and

series(). The hard part is that in some of the examples you may have

to perform this on subexpressions rather than the whole expression.

For example, one of the examples you linked to is 1/(b*(b + a)) =

1/(b*a) if a >> b.

>>> expr = 1/(b*(a + b))

>>> # Set x = b/a

>>> expr.subs(a, b/x).cancel()

x/(b**2*x + b**2)

>>> # Expand as a series up to O(x**2)

>>> expr.subs(a, b/x).cancel().series(x, n=2)

x/b**2 + O(x**2)

>>> # Remove the O() term and substitute back

>>> expr.subs(a, b/x).cancel().series(x, n=2).removeO().subs(x, b/a)

1/(a*b)

Aaron Meurer

> --

> 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/446b0334-0fc0-48ad-802a-3ac7e3225667n%40googlegroups.com.

instances of a and b in the expression with b/a, replace that with a

single variable like x, then do a series expansion and remove higher

order x terms. There isn't anything in SymPy that automates this in

one step but you can get a lot of it automatically with subs() and

series(). The hard part is that in some of the examples you may have

to perform this on subexpressions rather than the whole expression.

For example, one of the examples you linked to is 1/(b*(b + a)) =

1/(b*a) if a >> b.

>>> expr = 1/(b*(a + b))

>>> # Set x = b/a

>>> expr.subs(a, b/x).cancel()

x/(b**2*x + b**2)

>>> # Expand as a series up to O(x**2)

>>> expr.subs(a, b/x).cancel().series(x, n=2)

x/b**2 + O(x**2)

>>> # Remove the O() term and substitute back

>>> expr.subs(a, b/x).cancel().series(x, n=2).removeO().subs(x, b/a)

1/(a*b)

Aaron Meurer

> 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/446b0334-0fc0-48ad-802a-3ac7e3225667n%40googlegroups.com.

Aug 22, 2020, 6:53:25 PM8/22/20

to sympy

Thanks very much for the example. I wasn't aware of the removeO() method.

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu