Estou tentando calcular momentos Zernike de ordem superior (por exemplo m=0, n=46) para alguma imagem. No entanto, estou com um problema em relação ao polinômio radial (consulte a Wikipedia ). Este é um polinômio definido no intervalo [0 1]. Veja o código MATLAB abaixo
function R = radial_polynomial(m,n,RHO)
R = 0;
for k = 0:((n-m)/2)
R = R + (-1).^k.*factorial(n-k) ...
./ ( factorial(k).*factorial((n+m)./2-k) .* factorial((n-m)./2-k) ) ...
.*RHO.^(n-2.*k);
end
end
No entanto, isso obviamente tem problemas numéricos próximos RHO > 0.9.

Eu tentei refatorá-lo para polyval pensar que poderia ter alguns algoritmos melhores nos bastidores, mas isso não resolveu nada. Convertê-lo em um cálculo simbólico criou o gráfico desejado, mas foi incrivelmente lento mesmo para um gráfico simples como o mostrado.
Existe uma maneira numericamente estável de avaliar esses polinômios de alta ordem?
