~ubuntu-branches/ubuntu/wily/octave-miscellaneous/wily

« back to all changes in this revision

Viewing changes to inst/legendrepoly.m

  • Committer: Package Import Robot
  • Author(s): Sébastien Villemot
  • Date: 2012-10-17 13:40:55 UTC
  • mfrom: (1.1.6)
  • mto: (5.1.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 13.
  • Revision ID: package-import@ubuntu.com-20121017134055-e8lrxjd3qgcd3kmt
Tags: upstream-1.2.0
Import upstream version 1.2.0

Show diffs side-by-side

added added

removed removed

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