proofofconcept icon indicating copy to clipboard operation
proofofconcept copied to clipboard

break down the notation of "much greater than" automatically

Open bhpayne opened this issue 4 years ago • 1 comments

For example, "a + b = c" is replaced by "a = c" under the condition "b << a".

I like the explanation of ">>" provided in this StackOverflow answer, so there is some deeper meaning to the notation.

bhpayne avatar Aug 23 '20 15:08 bhpayne

Aaron Meurer provided the following explanation in https://groups.google.com/g/sympy/c/yQ1KAaz7Gus/m/yfN-LaW1BQAJ

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)

bhpayne avatar Aug 23 '20 15:08 bhpayne