§
    PŠtjµ  ã                   ó¸   — d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZ d d
lmZ  G d„ de¦  «        Zd„ ZdS )é    )ÚBasicÚdiff)ÚS)Údefault_sort_key)ÚMatrix)ÚIntegralÚ	integrate)ÚGeometryEntity)Úsimplify)Útopological_sort)Ú
CoordSys3DÚVectorÚParametricRegionÚparametric_region_listÚImplicitRegion)Ú_get_coord_systemsc                   ód   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ˆ xZ
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

    c                 óð  •‡— t          |¦  «        }t          |¦  «        dk    rt          d¦  «        }n6t          |¦  «        dk    rt          ‚t	          t          |¦  «        ¦  «        }‰j        dk    rt          j        S | 	                    ¦   «         }| 
                    ¦   «         }|}t          j        }t          t          ‰j        ¦  «        ¦  «        D ]}	|||	         ‰j        |	         z  z  }Œt          |¦  «        dk    rKt          t          ‰j        ¦  «        ¦  «        D ])}	|                     ||	         ‰j        |	         ¦  «        }Œ*‰j        dk    r´‰j        d         }
t#          ||
¦  «        }‰j        |
         d         ‰j        |
         d         }}t'          |t          ¦  «        r#t)          |                     |¦  «        ¦  «        }n$t)          |                     ¦   «         |z  ¦  «        }t/          ||
||f¦  «        }�n¬‰j        dk    �r|                      ‰j        ‰j        ¦  «        \  }}t#          ||¦  «        }t#          ||¦  «        }t)          |                     |¦  «        ¦  «        }t'          |t          ¦  «        r|                     |¦  «        }n||                     ¦   «         z  }t)          |¦  «        }‰j        |         d         ‰j        |         d         }}‰j        |         d         ‰j        |         d         }}t/          ||||f|||f¦  «        }n†|                      ‰j        ‰j        ¦  «        }t5          ‰j        ¦  «                             |¦  «                             ¦   «         }t)          ||z  ¦  «        }ˆfd„|D ¦   «         }t/          |g|¢R Ž }t'          |t:          ¦  «        s|S t=          ¦   «                              | |‰¦  «        S )Nr   ÚCé   é   c                 ó^   •— g | ])}|‰j         |         d          ‰j         |         d         f‘Œ*S )r   r   )Úlimits)Ú.0ÚvarÚparametricregions     €úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/vector/integrals.pyú
<listcomp>z.ParametricIntegral.__new__.<locals>.<listcomp>k   s?   ø€ ÐnÐnÐnÐ]`�#Ð'Ô.¨sÔ3°AÔ6Ð8HÔ8OÐPSÔ8TÐUVÔ8WÐXÐnÐnÐnó    ) r   Úlenr   Ú
ValueErrorÚnextÚiterÚ
dimensionsr   ÚZeroÚbase_vectorsÚbase_scalarsr   ÚzeroÚrangeÚ
definitionÚsubsÚ
parametersr   r   Ú
isinstancer   ÚdotÚ	magnituder	   Ú_bounds_caseÚcrossr   ÚjacobianÚdetr   ÚsuperÚ__new__)ÚclsÚfieldr   Ú	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ÚlÚ	__class__s     `                         €r   r6   zParametricIntegral.__new__+   sÄ  øø€ å& uÑ-Ô-ˆ	åˆy‰>Œ>˜QÒÐÝ" 3™œˆIˆIÝ�‰^Œ^˜aÒÐÝÐå�T )™_œ_Ñ-Ô-ˆIàÔ&¨!Ò+Ð+Ý”6ˆMà ×-Ò-Ñ/Ô/ˆØ ×-Ò-Ñ/Ô/ˆàˆåŒKˆÝ•sÐ+Ô6Ñ7Ô7Ñ8Ô8ð 	@ð 	@ˆAØ�˜a”Ð!1Ô!<¸QÔ!?Ñ?Ñ?ˆAˆAåˆy‰>Œ>˜QÒÐÝ�3Ð/Ô:Ñ;Ô;Ñ<Ô<ð hð h�Ø"1×"6Ò"6°|ÀA´ÐHXÔHcÐdeÔHfÑ"gÔ"g��àÔ&¨!Ò+Ð+Ø(Ô3°AÔ6ˆIå˜!˜YÑ'Ô'ˆFØ+Ô2°9Ô=¸aÔ@ÐBRÔBYÐZcÔBdÐefÔBg�5ˆEå˜/­6Ñ2Ô2ð IÝ$ V§Z¢Z°Ñ%@Ô%@ÑAÔA�	�	å$ V×%5Ò%5Ñ%7Ô%7¸Ñ%GÑHÔH�	å˜y¨9°e¸UÐ*CÑDÔDˆF‰FàÔ(¨AÒ-Ñ-Ø×#Ò#Ð$4Ô$?ÐAQÔAXÑYÔY‰DˆAˆqå�q˜!‘*”*ˆCÝ�q˜!‘*”*ˆCÝ$ S§Y¢Y¨s¡^¤^Ñ4Ô4ˆMå˜/­6Ñ2Ô2ð FØ+×/Ò/°Ñ>Ô>�	�	à+¨M×,CÒ,CÑ,EÔ,EÑE�	å  Ñ+Ô+ˆIà/Ô6°qÔ9¸!Ô<Ð>NÔ>UÐVWÔ>XÐYZÔ>[�WˆGØ/Ô6°qÔ9¸!Ô<Ð>NÔ>UÐVWÔ>XÐYZÔ>[�WˆGå˜y¨1¨g°wÐ*?À!ÀWÈgÐAVÑWÔWˆFˆFð ×(Ò(Ð)9Ô)DÐFVÔF]Ñ^Ô^ˆIÝÐ+Ô6Ñ7Ô7×@Ò@ÀÑKÔK×OÒOÑQÔQˆEÝ  °Ñ!6Ñ7Ô7ˆIànÐnÐnÐnÐdmÐnÑnÔnˆAÝ˜yÐ-¨1Ð-Ð-Ð-ˆFå˜&¥(Ñ+Ô+ð 	AØˆMå‘7”7—?’? 3¨Ð/?Ñ@Ô@Ð@r    c                 ó^  ‡‡‡— t          |                     ¦   «         ¦  «        }g }|D ]iŠ|‰         d         Š|‰         d         Š‰                     ¦   «         Š‰                     ¦   «         Š|                     ˆˆˆfd„|D ¦   «         ¦  «         Œj|s|S t	          ||ft
          ¬¦  «        S )Nr   r   c              3   ó„   •K  — | ]:}‰|k    ¯‰                      |h¦  «        s‰                      |h¦  «        ¯4‰|fV — Œ;d S )N)Ú
issuperset)r   ÚqÚlower_pÚpÚupper_ps     €€€r   ú	<genexpr>z2ParametricIntegral._bounds_case.<locals>.<genexpr>   sg   øè è € ð Kð K ¨!¨qª&¨&Ø×(Ò(¨!¨Ñ-Ô-ð +1Ø18×1CÒ1CÀQÀCÑ1HÔ1Hð +1�a˜�V¨&¨&¨&¨&ð Kð Kr    )Úkey)ÚlistÚkeysÚatomsÚextendr   r   )r7   r-   r   ÚVÚErU   rV   rW   s        @@@r   r1   zParametricIntegral._bounds_cases   sæ   øøø€ õ �—’‘”ÑÔˆØˆàð 	Kð 	KˆAØ˜Q”i ”lˆGØ˜Q”i ”lˆGà—m’m‘o”oˆGØ—m’m‘o”oˆGØ�HŠHð Kð Kð Kð Kð Kð K Qð Kñ Kô Kñ Kô Kð Kð Kð ð 	BØÐå# Q¨ FÕ0@ÐAÑAÔAÐAr    c                 ó   — | j         d         S )Nr   ©Úargs©Úselfs    r   r8   zParametricIntegral.field‡   ó   € àŒy˜Œ|Ðr    c                 ó   — | j         d         S )Nr   ra   rc   s    r   r   z#ParametricIntegral.parametricregion‹   re   r    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   Úclassmethodr1   Úpropertyr8   r   Ú__classcell__)rP   s   @r   r   r      s¡   ø€ € € € € ðð ð8FAð FAð FAð FAð FAðP ðBð Bñ „[ðBð& ðð ñ „Xðð ðð ñ „Xðð ð ð ð r    r   c                 óÈ  — t          |¦  «        dk    rÃt          |d         t          ¦  «        rt          | |d         ¦  «        S t          |d         t          ¦  «        r+t          |d         ¦  «        d         }t          | |¦  «        S t          |d         t          ¦  «        r1t          |d         ¦  «        }d}|D ]}|t          | |¦  «        z  }Œ|S t          | g|¢R Ž 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

    r   r   )	r!   r.   r   r   r   r   Úvector_integrater
   r	   )r8   ÚregionÚregions_listrC   Úregs        r   ro   ro   �   sê   € õ\ ˆ6�{„{�aÒÐÝ�f˜Q”iÕ!1Ñ2Ô2ð 	8Ý% e¨V°A¬YÑ7Ô7Ð7å�f˜Q”i¥Ñ0Ô0ð 	3Ý+¨F°1¬IÑ6Ô6°qÔ9ˆFÝ# E¨6Ñ2Ô2Ð2å�f˜Q”i¥Ñ0Ô0ð 	Ý1°&¸´)Ñ<Ô<ˆLàˆFØ#ð 7ð 7�ØÕ*¨5°#Ñ6Ô6Ñ6��ØˆMå�UÐ$˜VÐ$Ð$Ð$Ð$r    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   ro   © r    r   ú<module>r~      sS  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø /Ð /Ð /Ð /Ð /Ð /Ø !Ð !Ð !Ð !Ð !Ð !Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð@ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @à 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ˜ñ ô ð ðD>%ð >%ð >%ð >%ð >%r    