K iddlmZmZddlmZddlmZddlmZddl m Z m Z ddl m Z ddlmZddlmZdd lmZmZmZmZmZdd lmZGd d eZd Zy))Basicdiff)S)default_sort_key)Matrix)Integral integrate)GeometryEntity)simplify)topological_sort) CoordSys3DVectorParametricRegionparametric_region_listImplicitRegion)_get_coord_systemscReZdZdZfdZedZedZedZ xZ S)ParametricIntegrala3 Represents integral of a scalar or vector field over a Parametric Region Examples ======== >>> from sympy import cos, sin, pi >>> from sympy.vector import CoordSys3D, ParametricRegion, ParametricIntegral >>> from sympy.abc import r, t, theta, phi >>> C = CoordSys3D('C') >>> curve = ParametricRegion((3*t - 2, t + 1), (t, 1, 2)) >>> ParametricIntegral(C.x, curve) 5*sqrt(10)/2 >>> length = ParametricIntegral(1, curve) >>> length sqrt(10) >>> semisphere = ParametricRegion((2*sin(phi)*cos(theta), 2*sin(phi)*sin(theta), 2*cos(phi)), (theta, 0, 2*pi), (phi, 0, pi/2)) >>> ParametricIntegral(C.z, semisphere) 8*pi >>> ParametricIntegral(C.j + C.k, ParametricRegion((r*cos(theta), r*sin(theta)), r, theta)) 0 cLt|}t|dk(r td}n(t|dkDrtt t |}|j dk(rtjS|j}|j}|}tj}tt|jD]} ||| |j| zz }t|dk7rEtt|jD]$} |j|| |j| }&|j dk(r|j d} t#|| } |j$| d|j$| d} } t'|trt)| j+|}nt)| j-|z}t/|| | | f}n|j dk(r|j1|j |j$\}}t#||}t#||}t)|j3|}t'|tr|j+|}n||j-z}t)|}|j$|d|j$|d}}|j$|d|j$|d}}t/||||f|||f}n|j1|j |j$}t5|jj7|j9}t)||z}|Dcgc]'}||j$|d|j$|df)}}t/|g|}t'|t:s|St<|}|||Scc}w)NrC) rlenr ValueErrornextiter dimensionsrZero base_vectors base_scalarsrzerorange definitionsubs parametersrlimits isinstancer dot magnituder _bounds_casecrossrjacobiandetrsuper__new__)clsfieldparametricregion coord_set coord_sysrr parametricfieldri parameterr_difflowerupper integrandresultuvr_ur_v normal_vectorlower_uupper_ulower_vupper_v variablescoeffvarl __class__s \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/vector/integrals.pyr/zParametricIntegral.__new__+s&u- y>Q "3I ^a  T)_-I  & &! +66M --/  --/  KKs+6678 @A a!1!Q 3/::;< h"1"6"6|AHXHcHcdeHf"g h  & &! +(33A6I!Y'F+229=a@BRBYBYZcBdefBg5E/62$VZZ%@A $V%5%5%7%GH y9eU*CDF  ( (A -##$4$?$?AQAXAXYDAqq!*Cq!*C$SYYs^4M/62+// > +M,C,C,EE  +I/66q9!<>N>U>UVW>XYZ>[WG/66q9!<>N>U>UVW>XYZ>[WGy1gw*?!WgAVWF(()9)D)DFVF]F]^I+667@@KOOQE !67Idmn]`#'..s3A68H8O8OPS8TUV8WXnAny-1-F&(+M7?3/?@ @ os,N!ct|j}g}|D]N|d|djj|jfd|DP|s|St ||ft S)Nrrc3zK|]2}|k7s j|hsj|hr|f4yw)N) issuperset).0qlower_ppupper_ps rL z2ParametricIntegral._bounds_case..sCK!q&((!-1C1CQC1HVKs ;-;)key)listkeysatomsextendr r)r0r%r&VErRrSrTs @@@rLr*zParametricIntegral._bounds_casess    KAQilGQilGmmoGmmoG HHKQK K  K #QF0@A Ac |jdS)Nrargsselfs rLr1zParametricIntegral.fieldyy|r]c |jdS)Nrr_ras rLr2z#ParametricIntegral.parametricregionrcr]) __name__ __module__ __qualname____doc__r/ classmethodr*propertyr1r2 __classcell__)rKs@rLrrsN8FAPBB&r]rcPt|dk(rt|dtrt||dSt|dtrt |dd}t ||St|dtr(t |d}d}|D]}|t ||z }|St|g|S)a Compute the integral of a vector/scalar field over a a region or a set of parameters. Examples ======== >>> from sympy.vector import CoordSys3D, ParametricRegion, vector_integrate >>> from sympy.abc import x, y, t >>> C = CoordSys3D('C') >>> region = ParametricRegion((t, t**2), (t, 1, 5)) >>> vector_integrate(C.x*C.i, region) 12 Integrals over some objects of geometry module can also be calculated. >>> from sympy.geometry import Point, Circle, Triangle >>> c = Circle(Point(0, 2), 5) >>> vector_integrate(C.x**2 + C.y**2, c) 290*pi >>> triangle = Triangle(Point(-2, 3), Point(2, 3), Point(0, 5)) >>> vector_integrate(3*C.x**2*C.y*C.i + C.j, triangle) -8 Integrals over some simple implicit regions can be computed. But in most cases, it takes too long to compute over them. This is due to the expressions of parametric representation becoming large. >>> from sympy.vector import ImplicitRegion >>> c2 = ImplicitRegion((x, y), (x - 2)**2 + (y - 1)**2 - 9) >>> vector_integrate(1, c2) 6*pi Integral of fields with respect to base scalars: >>> vector_integrate(12*C.y**3, (C.y, 1, 3)) 240 >>> vector_integrate(C.x**2*C.z, C.x) C.x**3*C.z/3 >>> vector_integrate(C.x*C.i - C.y*C.k, C.x) (Integral(C.x, C.x))*C.i + (Integral(-C.y, C.x))*C.k >>> _.doit() C.x**2/2*C.i + (-C.x*C.y)*C.k rr) rr'rrrrvector_integrater r )r1region regions_listr=regs rLrmrms\ 6{a fQi!1 2%eVAY7 7 fQi 0+F1I6q9F#E62 2 fQi 01&)r|s@""/!/0,6@@5D>%r]