
    \h                         S SK JrJr  S SKJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJr  S S	KJrJrJrJrJr  S S
KJr   " S S\5      rS rg)    )Basicdiff)S)default_sort_key)Matrix)Integral	integrate)GeometryEntity)simplify)topological_sort)
CoordSys3DVectorParametricRegionparametric_region_listImplicitRegion)_get_coord_systemsc                   \   ^  \ rS rSrSrU 4S jr\S 5       r\S 5       r	\S 5       r
SrU =r$ )ParametricIntegral   a  
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

c                 v  > [        U5      n[        U5      S:X  a  [        S5      nO)[        U5      S:  a  [        e[	        [        U5      5      nUR                  S:X  a  [        R                  $ UR                  5       nUR                  5       nUn[        R                  n[        [        UR                  5      5       H  n	XU	   UR                  U	   -  -  nM     [        U5      S:w  aF  [        [        UR                  5      5       H$  n	UR                  Xi   UR                  U	   5      nM&     UR                  S:X  a  UR                   S   n
[#        X5      nUR$                  U
   S   UR$                  U
   S   p['        U[        5      (       a  [)        UR+                  U5      5      nO[)        UR-                  5       U-  5      n[/        XX45      nGOUR                  S:X  a  U R1                  UR                   UR$                  5      u  nn[#        UU5      n[#        UU5      n[)        UR3                  U5      5      n['        U[        5      (       a  UR+                  U5      nOUUR-                  5       -  n[)        U5      nUR$                  U   S   UR$                  U   S   nnUR$                  U   S   UR$                  U   S   nn[/        UUUU4UUU45      nOU R1                  UR                   UR$                  5      n[5        UR                  5      R7                  U5      R9                  5       n[)        UU-  5      nU Vs/ s H(  nUUR$                  U   S   UR$                  U   S   4PM*     nn[/        U/UQ76 n['        U[:        5      (       d  U$ [<        TU ]}  XU5      $ s  snf )Nr   C      ) r   lenr   
ValueErrornextiter
dimensionsr   Zerobase_vectorsbase_scalarsr   zerorange
definitionsubs
parametersr   limits
isinstancer   dot	magnituder	   _bounds_casecrossr   jacobiandetr   super__new__)clsfieldparametricregion	coord_set	coord_sysr    r!   parametricfieldri	parameterr_difflowerupper	integrandresultuvr_ur_vnormal_vectorlower_uupper_ulower_vupper_v	variablescoeffvarl	__class__s                                N/var/www/auris/envauris/lib/python3.13/site-packages/sympy/vector/integrals.pyr0   ParametricIntegral.__new__+   sy   &u-	y>Q"3I^aT)_-I&&!+66M --/ --/KKs+6678Aa!1!<!<Q!???A 9 y>Q3/::;<"1"6"6|HXHcHcdeHf"g = &&!+(33A6I!'F+229=a@BRBYBYZcBdefBg5/622$VZZ%@A	$V%5%5%7%GH	ye*CDF((A-##$4$?$?AQAXAXYDAqq!*Cq!*C$SYYs^4M/622+//>	+M,C,C,EE	 +I/66q9!<>N>U>UVW>XYZ>[WG/66q9!<>N>U>UVW>XYZ>[WGy1gw*?!WgAVWF (()9)D)DFVF]F]^I+667@@KOOQE !67Idmndm]`#'..s3A68H8O8OPS8TUV8WXdmAny-1-F&(++M7?3/?@@ os   /N6c                   ^^^ [        UR                  5       5      n/ nU HP  mUT   S   mUT   S   mTR                  5       mTR                  5       mUR                  UUU4S jU 5       5        MR     U(       d  U$ [	        X44[
        S9$ )Nr   r   c              3      >#    U  HA  nTU:w  d  M  TR                  U15      (       d  TR                  U15      (       d  M;  TU4v   MC     g 7f)N)
issuperset).0qlower_ppupper_ps     rM   	<genexpr>2ParametricIntegral._bounds_case.<locals>.<genexpr>   sG      KQ!q&V((!--1C1CQC1H aVQs   
A,AA)key)listkeysatomsextendr   r   )r1   r&   r'   VErT   rU   rV   s        @@@rM   r+   ParametricIntegral._bounds_cases   s     AQilGQilGmmoGmmoGHH KQ K K  #QF0@AA    c                      U R                   S   $ )Nr   argsselfs    rM   r2   ParametricIntegral.field       yy|ra   c                      U R                   S   $ )Nr   rc   re   s    rM   r3   #ParametricIntegral.parametricregion   rh   ra    )__name__
__module____qualname____firstlineno____doc__r0   classmethodr+   propertyr2   r3   __static_attributes____classcell__)rL   s   @rM   r   r      sN    8FAP B B&    ra   r   c                 n   [        U5      S:X  a  [        US   [        5      (       a  [        XS   5      $ [        US   [        5      (       a  [        US   5      S   n[        X5      $ [        US   [        5      (       a)  [        US   5      nSnU H  nU[        X5      -  nM     U$ [        U /UQ76 $ )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

r   r   )	r   r(   r   r   r   r   vector_integrater
   r	   )r2   regionregions_listr>   regs        rM   rv   rv      s    \ 6{afQi!122%eAY77fQi00+F1I6q9F#E22fQi001&)<LF#*566 $MU$V$$ra   N)
sympy.corer   r   sympy.core.singletonr   sympy.core.sortingr   sympy.matricesr   sympy.integralsr   r	   sympy.geometry.entityr
   sympy.simplify.simplifyr   sympy.utilities.iterablesr   sympy.vectorr   r   r   r   r   sympy.vector.operatorsr   r   rv   rk   ra   rM   <module>r      s@    " " / ! / 0 , 6@ @ 5 D>%ra   