Tôi đang cố gắng để tính toán bậc cao (ví dụ m=0
, n=46
) những khoảnh khắc Zernike đối với một số hình ảnh. Tuy nhiên, tôi đang gặp phải một vấn đề liên quan đến đa thức xuyên tâm (xem wikipedia ). Đây là một đa thức được xác định trong khoảng [0 1]. Xem mã MATLAB bên dưới
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
Tuy nhiên, điều này rõ ràng chạy vào các vấn đề số gần RHO > 0.9
.
Tôi đã thử tái cấu trúc nó để polyval
nghĩ rằng nó có thể có một số thuật toán hậu trường tốt hơn nhưng điều đó không giải quyết được gì. Chuyển đổi nó thành một phép tính tượng trưng đã tạo ra biểu đồ mong muốn nhưng lại chậm chạp ngay cả đối với một biểu đồ đơn giản như được hiển thị.
Có cách nào ổn định về mặt số để đánh giá các đa thức bậc cao như vậy không?