Al evaluar los armónicos cilíndricos, uno debe evaluar las funciones trigonométricas y , potencialmente para enteros grandes y . ¿Cuál es la mejor manera de hacer esto en código C? Actualmente, solo evalúo en el ángulo , pero sospecharía que las bibliotecas estándar pierden precisión con argumentos grandes. Estaba considerando usar fórmulas de doble ángulo y similares para reducir recursivamente la magnitud de los argumentos, pero me pregunto si eso termina incurriendo en más errores.sin ( m θ ) m θ ∈ [ - π , π ] m θ
fuente
Me he encontrado con un problema similar antes, pero estaba más preocupado por la velocidad que por la precisión (ver el documento aquí ). Si su ángulo es el resultado de un , que suele ser el caso en los cálculos geométricos, puede usar polinomios de Chebyshev que se definen comoϑ arccos(⋅)
y puede evaluarse de forma rápida y estable utilizando la relación de recurrencia de tres términos
Por lo tanto, para su problema, puede evaluar en multiplicaciones y adiciones, siempre que tenga .m + 1 cos ( ϑ )cos(mϑ) m+1 cos(ϑ)
fuente
La recurrencia (efectivamente la misma que en el ejemplo 4 en Bulirsch / Stoer, vea que para un análisis detallado) continúa así:
donde tenemos las constantes precalculadas
fuente