K i&ddlmZmZddlmZdZy))SingularityFunction DiracDelta) integratec|jtsyt|trR|j\}}}|js |j rt|||dz|dzz S|dvrt|||dzS|j s |jr6|jt}t||}|jtSy)aI This function handles the indefinite integrations of Singularity functions. The ``integrate`` function calls this function internally whenever an instance of SingularityFunction is passed as argument. Explanation =========== The idea for integration is the following: - If we are dealing with a SingularityFunction expression, i.e. ``SingularityFunction(x, a, n)``, we just return ``SingularityFunction(x, a, n + 1)/(n + 1)`` if ``n >= 0`` and ``SingularityFunction(x, a, n + 1)`` if ``n < 0``. - If the node is a multiplication or power node having a SingularityFunction term we rewrite the whole expression in terms of Heaviside and DiracDelta and then integrate the output. Lastly, we rewrite the output of integration back in terms of SingularityFunction. - If none of the above case arises, we return None. Examples ======== >>> from sympy.integrals.singularityfunctions import singularityintegrate >>> from sympy import SingularityFunction, symbols, Function >>> x, a, n, y = symbols('x a n y') >>> f = Function('f') >>> singularityintegrate(SingularityFunction(x, a, 3), x) SingularityFunction(x, a, 4)/4 >>> singularityintegrate(5*SingularityFunction(x, 5, -2), x) 5*SingularityFunction(x, 5, -1) >>> singularityintegrate(6*SingularityFunction(x, 5, -1), x) 6*SingularityFunction(x, 5, 0) >>> singularityintegrate(x*SingularityFunction(x, 0, -1), x) 0 >>> singularityintegrate(SingularityFunction(x, 1, -1) * f(x), x) f(1)*SingularityFunction(x, 1, 0) N)) hasr isinstanceargs is_positiveis_zerois_Mulis_Powrewriterr)fxanexprs j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/integrals/singularityfunctions.pysingularityintegratersV 55$ %!()&&1a ==AII&q!QU3QU; ; " "&q!QU3 3xx188yy$q!||/00 N)sympy.functionsrrsympy.integralsrrrrrs;%:r