## [5d7d73]: miscellaneous / inst / legendrepoly.m  Maximize  Restore  History

### 63 lines (55 with data), 1.8 kB

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62``` ```## Copyright (C) 2007 Muthiah Annamalai ## ## This program is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free Software ## Foundation; either version 3 of the License, or (at your option) any later ## version. ## ## This program is distributed in the hope that it will be useful, but WITHOUT ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ## details. ## ## You should have received a copy of the GNU General Public License along with ## this program; if not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{coefs}=} legendrepoly (@var{order},@var{x}) ## ## Compute the coefficients of the Legendre polynomial, given the ## @var{order}. We calculate the Legendre polynomial using the recurrence ## relations, Pn+1(x) = inv(n+1)*((2n+1)*x*Pn(x) - nPn-1(x)). ## ## If the value @var{x} is specified, the polynomial is also evaluated, ## otherwise just the return the coefficients of the polynomial are returned. ## ## This is NOT the generalized Legendre polynomial. ## ## @end deftypefn function h = legendrepoly (order, val) if (nargin < 1 || nargin > 2) print_usage endif h_prev = [0 1]; h_now = [1 0]; if order == 0 h=h_prev; else h=h_now; endif for ord=2:order x=[]; y=[]; if (length(h_now) < (1+ord)) x=0; endif y=zeros(1,(1+ord)-length(h_prev)); p1=[h_now, x]; p3=[y, h_prev]; h=((2*ord -1).*p1 -(ord -1).*p3)./(ord); h_prev=h_now; h_now=h; endfor if nargin == 2 h=polyval(h,val); endif endfunction ```