function P = legendre_p(n) ## Return the `n`th Legendre polynomial. ## ## INPUT: ## ## * ``n`` - The index of the polynomial that we want. ## ## OUTPUT: ## ## * ``P`` - A polynomial function of one argument. ## if (n < 0) ## Can't do anything here. Return nothing. P = NA; elseif (n == 0) ## One of our base cases. P = @(x) 1; elseif (n == 1) ## The second base case. P = @(x) x; else ## Not one of the base cases, so use the recursive formula. prev = legendre_p(n-1); prev_prev = legendre_p(n-2); P = @(x) (1/n).*( (2*n - 1).*x.*prev(x) - (n-1).*prev_prev(x) ); end end