9 votos

La evaluación numérica de los polinomios de Chebyshev en base

He de orden superior (15 y más) polinomios definidos en la base de Chebyshev y la necesidad de evaluar (para imprimir) en algunos intervalos en el interior de la canónica intervalo de $[1,\,-1]$. Una buena precisión de cerca de 1 y -1, donde los polinomios de Chebyshev cambiar rápidamente, también es necesario.

Sé que existe Clenshaw algoritmo para la evaluación de polinomios de Chebyshev, que es algo similar a el esquema de Horner.

Y esto es todo lo que sé...

Yo también vi la pregunta acerca de similar problemática. La solución propuesta es el uso de una mayor precisión.

Me pregunto si hay algunos otros métodos para la evaluación precisa de polinomios (en particular en la base de Chebyshev) en los intervalos que no dependen en gran medida de precisión extendida de cálculos? Es posible que, al menos, a mejorar el problema tanto como sea posible, de modo que la precisión extendida es necesario sólo de muy alta polinomio órdenes?

Yo también pensaba acerca de la interpolación de un alto orden de polinomio por orden inferior, en los intervalos de interés. Sin embargo, no sé si hay algún procedimiento sistemático para este enfoque.

4voto

Phil Karn Puntos 31

La evaluación de polinomios de la forma arbitraria en gran medida en una base de Chebyshev es práctico, y seguramente numéricamente estable, el uso de un baricéntrico fórmula de interpolación. En este caso, la precisión extendida de que no es necesario, incluso para el fin de 1.000.000 de polinomios. Véase la primera sección de este documento y las referencias, o aquí (Mito #2) para más detalles. Voy a resumir brevemente. Digamos que usted tiene un polinomio $f$ en una base de Chebyshev, y usted sabe que sus valores en los nodos de Chebyshev $$ f_j = f(x_j) $$ $$ x_j = \cos\left(\frac{\pi j}{N}\right)\;\; 0\leq j\leq N $$

Entonces para cualquier $x$ que no es uno de los nodos de Chebyshev $x_j$, tenemos $$ f(x) = \frac{\displaystyle \sum_{j=0}^N \frac{w_j}{x-x_j}f_j}{\displaystyle \sum_{j=0}^N \frac{w_j}{x-x_j}}, $$ donde $$ w_j = \left\{ \begin{array}{cc} (-1)^j/2, & j=0\text{ or }j=N,\\ (-1)^j, & \text{otherwise} \end{array} \right. $$

Yo creo que un ingenuo implementación de la anterior para los distintos valores de $x$ proporciona un algoritmo estable que no sufren el numéricos dificultades encontradas al intentar sumar los polinomios de Chebyshev directamente. La clave es trabajar con la representación de la función de sus valores, no por sus coeficientes en una base de Chebyshev.

1voto

dgnorton Puntos 1459

Puede utilizar código Java para la realización de cálculos arbitrarios en Chebyshev (también en la de Legendre, Laguerre, Hermite), consulte el Apéndice a de un papel http://arxiv.org/abs/1510.05510 el código fuente está disponible a partir de Ref [31] enlace en el papel. Existe poca documentación disponible, pero la clase Chebyshev.java cuenta con una unidad de prueba, de que el uso debe ser más o menos clara.

Chebyshev B=new Chebyshev();

final double [] c=new double []{coef_T0,coef_T1,...}; // chebyshev base coefs

para(double x=-1;x<1.0001;x+=0.1) { Sistema..println("x="+x+" F="+B. calculateSumD0 c.longitud-1,c,x)); }

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