1 votos

¿Cuál es la forma más eficiente de calcular funciones simétricas elementales?

Ciertamente, la sustitución directa en $$ e_k(x_1,...,x_n)=\sum_{\substack{s\,\subseteq\,\{1,...,n\}\\\text{$ s $ has $ k $ elements}}}\prod_{i\in s}x_i $$ es una forma muy ineficiente de calcular los valores de las funciones simétricas sobre algunos números concretos $x_i$ el número $\binom nk$ de sumandos crece muy rápidamente.

Mucho más eficiente es calcular primero las sumas de potencia $$ p_j(x_1,...,x_n)=\sum_{i=1}^nx_i^j $$ y luego usar la fórmula $$ e_k(x_1,...,x_n) = (-1)^k \sum_{\substack{m_1 + 2m_2 + \cdots\, =\, k \\ m_1, m_2,\,\cdots\, \geqslant\, 0}} \frac{(-p_1)^{m_1}}{1^{m_1}m_1!}\frac{(-p_2)^{m_2}}{2^{m_2}m_2!}\cdots $$ Aún así hay tantos sumandos como particiones de $k$ .

Probablemente sean aún más eficientes las fórmulas recurrentes de Newton $$ e_k(x_1,...,x_n)=\frac1k(p_1e_{k-1}-p_2e_{k-2}+\cdots\pm p_{k-1}e_1\mp p_k), $$ pero como esto requiere el cómputo de todas las $e$ 's, aquí ya no estoy seguro de si esto es más eficiente que el anterior.

¿Lo es? ¿Y hay formas más eficientes?

1voto

bdeonovic Puntos 182

Existen dos algoritmos eficaces para calcular los FSE, el algoritmo de la suma y el de la diferencia. Para revisar ambos, véanse estos dos artículos:

@article{liou1994, Author = {Liou, Michelle}, Journal = {Applied Psychological Measurement}, Number = {1}, Pages = {53--62}, Publisher = {Sage Publications Sage CA: Thousand Oaks, CA}, Title = {More on the computation of higher-order derivatives of the elementary symmetric functions in the Rasch model}, Volume = {18}, Year = {1994}}

@article{baker1996, Author = {Baker, Frank B and Harwell, Michael R}, Journal = {Applied Psychological Measurement}, Number = {2}, Pages = {169--192}, Publisher = {Sage Publications Sage CA: Thousand Oaks, CA}, Title = {Computing elementary symmetric functions and their derivatives: A didactic}, Volume = {20}, Year = {1996}}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X