Mercurial > forge
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