function L = legendre_poly(n, a, b) % LEGENDRE_POLY - racuna sve Lezandrove polinome do stepena n % Polinomi imaju osobinu da je Ln(1)=1 % Funkcija vraca cell array L, tako da je L{i}=Li-1 L{1} = 1; % L0 = 1 L{2} = [1 0]; % L1 = x % Ostali polinomi se racunaju na osnovu rekurentne formule % Li(x)=(2i-1)/i x Li-1(x) - (i-1)/i Li-2(x) for i=2:n L{i+1}=((2*i-1)/i)*[L{i} 0]-[0 0 (i-1)/i*L{i-1}]; %polinom stepena i end % U slucaju da je naveden i interval razlicit od podrazumevanog [-1 1] % vrsimo preslikavanje polinoma na dati interval [a, b] if (nargin == 3) for i = 2:n+1 L{i} = map_to_interval(L{i}, a, b); end end % Pomocna funkcija koja preslikava polinom P sa [-1, 1] na [a, b] % uvodjenjem smene t = (2x-b-a)/(b-a) % Hornerovom shemom se izracunava vrednost polinoma P u tacki t function Pab = map_to_interval(P, a, b) Pab = P(1); for j=2:length(P) Pab = (2*[Pab 0]-(b+a)*[0 Pab])/(b-a); Pab(end) = Pab(end) + P(j); end