changeset 5764:edf8ca4da30c octave-forge

Hermite polynomial coefficient functions
author gnumuthu
date Mon, 15 Jun 2009 14:24:21 +0000
parents 8be4c2453c8b
children 0994051a9a50
files main/miscellaneous/INDEX main/miscellaneous/inst/hermitepoly.m
diffstat 2 files changed, 58 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/main/miscellaneous/INDEX	Mon Jun 15 13:37:07 2009 +0000
+++ b/main/miscellaneous/INDEX	Mon Jun 15 14:24:21 2009 +0000
@@ -4,6 +4,7 @@
  asci
  csv2latex
  grep
+ hermitepoly
  infoskeleton
  inz
  match
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main/miscellaneous/inst/hermitepoly.m	Mon Jun 15 14:24:21 2009 +0000
@@ -0,0 +1,57 @@
+## Copyright (C) 2007 Muthiah Annamalai <muthiah.annamalai@uta.edu>
+##
+## 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 2 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, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {@var{coefs}=} hermitepoly (@var{order},@var{x})
+## 
+## Compute the coefficients of the Hermite polynomial, given the 
+## @var{order}. We calculate the Hermite polynomial using the recurrence
+## relations, Hn+1(x) = 2x.Hn(x) - 2nHn-1(x).
+## 
+## If the value @var{x} is specified, the polynomial is also evaluated,
+## otherwise just the return the coefficients.
+## 
+## @end deftypefn
+
+function h=hermitepoly(order,val)
+	if nargin < 1, error('usage: hermitepoly(order.val)'), end
+	
+	h_prev=[0 1];
+        h_now=[2 0];
+
+	if order == 0
+	   h=h_prev;
+        else
+           h=h_now;
+        end
+
+	for ord=2:order
+         x=[];y=[];
+         if (length(h_now) < (1+ord))
+	   x=0;
+         end;
+	 y=zeros(1,(1+ord)-length(h_prev));
+	 h=[2*h_now, x] -[y, 2*(ord-1)*h_prev];
+	 h_prev=h_now;
+	 h_now=h;
+	end
+
+        if nargin == 2
+    	 h=polyval(h,val);
+	end
+	
+	return
+end