
    \hl                     n    S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SS	 jrg
)zX
This module implements a method to find
Euler-Lagrange Equations for given Lagrangian.
    )combinations_with_replacement)
DerivativeFunctiondiff)Eq)S)Symbolsympify)iterablec                    [        U5      (       a  [        U5      OU4nU(       d  [        U R                  [        5      5      nO,U H&  n[	        U[        5      (       a  M  [        SU-  5      e   [        U5      (       a  [        U5      OU4nU(       d  US   R                  nO[        S U 5       5      n[        S U 5       5      (       d  [        SU-  5      eU H%  nX#R                  :X  a  M  [        SU< SU< 35      e   [        U R                  [        5       Vs/ s H*  nUR                  U;   d  M  [        UR                  5      PM,     snS/-   5      n/ nU H  n[        X5      n[        SUS-   5       HC  n[!        X(5       H1  n	U["        R$                  U-  [        U [        U/U	Q76 /U	Q76 -  -   nM3     ME     ['        US5      n
[	        U
[&        5      (       d  M  UR)                  U
5        M     U$ s  snf )	a  
Find the Euler-Lagrange equations [1]_ for a given Lagrangian.

Parameters
==========

L : Expr
    The Lagrangian that should be a function of the functions listed
    in the second argument and their derivatives.

    For example, in the case of two functions $f(x,y)$, $g(x,y)$ and
    two independent variables $x$, $y$ the Lagrangian has the form:

        .. math:: L\left(f(x,y),g(x,y),\frac{\partial f(x,y)}{\partial x},
                  \frac{\partial f(x,y)}{\partial y},
                  \frac{\partial g(x,y)}{\partial x},
                  \frac{\partial g(x,y)}{\partial y},x,y\right)

    In many cases it is not necessary to provide anything, except the
    Lagrangian, it will be auto-detected (and an error raised if this
    cannot be done).

funcs : Function or an iterable of Functions
    The functions that the Lagrangian depends on. The Euler equations
    are differential equations for each of these functions.

vars : Symbol or an iterable of Symbols
    The Symbols that are the independent variables of the functions.

Returns
=======

eqns : list of Eq
    The list of differential equations, one for each function.

Examples
========

>>> from sympy import euler_equations, Symbol, Function
>>> x = Function('x')
>>> t = Symbol('t')
>>> L = (x(t).diff(t))**2/2 - x(t)**2/2
>>> euler_equations(L, x(t), t)
[Eq(-x(t) - Derivative(x(t), (t, 2)), 0)]
>>> u = Function('u')
>>> x = Symbol('x')
>>> L = (u(t, x).diff(t))**2/2 - (u(t, x).diff(x))**2/2
>>> euler_equations(L, u(t, x), [t, x])
[Eq(-Derivative(u(t, x), (t, 2)) + Derivative(u(t, x), (x, 2)), 0)]

References
==========

.. [1] https://en.wikipedia.org/wiki/Euler%E2%80%93Lagrange_equation

zFunction expected, got: %sr   c              3   8   #    U  H  n[        U5      v   M     g 7fNr
   ).0vars     L/var/www/auris/envauris/lib/python3.13/site-packages/sympy/calculus/euler.py	<genexpr>"euler_equations.<locals>.<genexpr>V   s     2TcWS\\Ts   c              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )
isinstancer	   )r   vs     r   r   r   X   s     3dz!V$$ds   z!Variables are not symbols, got %sz
Variables z do not match args:    )r   tupleatomsr   r   	TypeErrorargsall
ValueErrormaxr   exprlen	variablesr   ranger   r   NegativeOner   append)Lfuncsvarsfdordereqnseqipnew_eqs              r   euler_equationsr1      s   t %UOOE%L%Eaggh'(Aa** <q @AA  #4..5;tgDQx}}2T223d333;dBCCvv~T1MNN  177:+> ,+>a66U? "Q[[!+> ,/0c2 3E D!Zq%!)$A24;!--*44;A;+C+CCC < % Bfb!!KK  K,s   $H<HN) r2   )__doc__	itertoolsr   sympy.core.functionr   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr	   sympy.core.sympifyr   sympy.utilities.iterablesr   r1   r2       r   <module>r<      s*    4 < < $ " $ & .^r;   