]> gitweb.michael.orlitzky.com - octave.git/blobdiff - legendre_p.m
Add some octave code to compute (scaled and unscaled) legendre polynomials.
[octave.git] / legendre_p.m
diff --git a/legendre_p.m b/legendre_p.m
new file mode 100644 (file)
index 0000000..6238929
--- /dev/null
@@ -0,0 +1,27 @@
+function P = legendre_p(n)
+  ## Return the nth legendre polynomial.
+  ##
+  ## INPUTS:
+  ##
+  ##   * ``n`` - The index of the polynomial that we want.
+  ##
+  ## OUTPUTS:
+  ##
+  ##   * ``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
+    ## Compute recursively.
+    prev = legendre_p(n-1)
+    prev_prev = legendre_p(n-2)
+    P = @(x) (1/n)*( (2*n - 1)*prev(x) - (n-1)*prev_prev(x) )
+  end
+end