function [ x, w ] = hermite_gk22_set ( n ) %*****************************************************************************80 % %% HERMITE_GK22_SET sets a Genz-Keister 22 Hermite rule. % % Discussion: % % The integral: % % integral ( -oo <= x <= +oo ) f(x) exp ( - x * x ) dx % % The quadrature rule: % % sum ( 1 <= i <= n ) w(i) * f ( x(i) ) % % A nested family of rules for the Hermite integration problem % was produced by Genz and Keister. The structure of the nested % family was denoted by 1+2+6+10+22, that is, it comprised rules % of successive orders O = 1, 3, 9, 19, and 41. % % The precisions of these rules are P = 1, 5, 15, 29, and 63. % % Some of the data in this function was kindly supplied directly by % Alan Genz on 24 April 2011. % % Licensing: % % This code is distributed under the GNU LGPL license. % % Modified: % % 26 April 2011 % % Author: % % John Burkardt % % Reference: % % Alan Genz, Bradley Keister, % Fully symmetric interpolatory rules for multiple integrals % over infinite regions with Gaussian weight, % Journal of Computational and Applied Mathematics, % Volume 71, 1996, pages 299-309 % % Thomas Patterson, % The Optimal Addition of Points to Quadrature Formulae, % Mathematics of Computation, % Volume 22, Number 104, October 1968, pages 847-856. % % Parameters: % % Input, integer N, the order. % Legal values are 1, 3, 9, 19, and 41. % % Output, real X(N,1), the abscissas. % % Output, real W(N,1), the weights. % x = zeros ( n, 1 ); w = zeros ( n, 1 ); if ( n == 1 ) x( 1) = 0.0000000000000000; w( 1) = 1.7724538509055159E+00; elseif ( n == 3 ) x( 1) = -1.2247448713915889; x( 2) = 0.0000000000000000; x( 3) = 1.2247448713915889; w( 1) = 2.9540897515091930E-01; w( 2) = 1.1816359006036772E+00; w( 3) = 2.9540897515091930E-01; elseif ( n == 9 ) x( 1) = -2.9592107790638380; x( 2) = -2.0232301911005157; x( 3) = -1.2247448713915889; x( 4) = -0.52403354748695763; x( 5) = 0.0000000000000000; x( 6) = 0.52403354748695763; x( 7) = 1.2247448713915889; x( 8) = 2.0232301911005157; x( 9) = 2.9592107790638380; w( 1) = 1.6708826306882348E-04; w( 2) = 1.4173117873979098E-02; w( 3) = 1.6811892894767771E-01; w( 4) = 4.7869428549114124E-01; w( 5) = 4.5014700975378197E-01; w( 6) = 4.7869428549114124E-01; w( 7) = 1.6811892894767771E-01; w( 8) = 1.4173117873979098E-02; w( 9) = 1.6708826306882348E-04; elseif ( n == 19 ) x( 1) = -4.4995993983103881; x( 2) = -3.6677742159463378; x( 3) = -2.9592107790638380; x( 4) = -2.2665132620567876; x( 5) = -2.0232301911005157; x( 6) = -1.8357079751751868; x( 7) = -1.2247448713915889; x( 8) = -0.87004089535290285; x( 9) = -0.52403354748695763; x(10) = 0.0000000000000000; x(11) = 0.52403354748695763; x(12) = 0.87004089535290285; x(13) = 1.2247448713915889; x(14) = 1.8357079751751868; x(15) = 2.0232301911005157; x(16) = 2.2665132620567876; x(17) = 2.9592107790638380; x(18) = 3.6677742159463378; x(19) = 4.4995993983103881; w( 1) = 1.5295717705322357E-09; w( 2) = 1.0802767206624762E-06; w( 3) = 1.0656589772852267E-04; w( 4) = 5.1133174390883855E-03; w( 5) = -1.1232438489069229E-02; w( 6) = 3.2055243099445879E-02; w( 7) = 1.1360729895748269E-01; w( 8) = 1.0838861955003017E-01; w( 9) = 3.6924643368920851E-01; w(10) = 5.3788160700510168E-01; w(11) = 3.6924643368920851E-01; w(12) = 1.0838861955003017E-01; w(13) = 1.1360729895748269E-01; w(14) = 3.2055243099445879E-02; w(15) = -1.1232438489069229E-02; w(16) = 5.1133174390883855E-03; w(17) = 1.0656589772852267E-04; w(18) = 1.0802767206624762E-06; w(19) = 1.5295717705322357E-09; elseif ( n == 41 ) x( 1) = -7.251792998192644; x( 2) = -6.547083258397540; x( 3) = -5.961461043404500; x( 4) = -5.437443360177798; x( 5) = -4.953574342912980; x( 6) = -4.4995993983103881; x( 7) = -4.070919267883068; x( 8) = -3.6677742159463378; x( 9) = -3.296114596212218; x(10) = -2.9592107790638380; x(11) = -2.630415236459871; x(12) = -2.2665132620567876; x(13) = -2.043834754429505; x(14) = -2.0232301911005157; x(15) = -1.8357079751751868; x(16) = -1.585873011819188; x(17) = -1.2247448713915889; x(18) = -0.87004089535290285; x(19) = -0.52403354748695763; x(20) = -0.195324784415805; x(21) = 0.0000000000000000; x(22) = 0.195324784415805; x(23) = 0.52403354748695763; x(24) = 0.87004089535290285; x(25) = 1.2247448713915889; x(26) = 1.585873011819188; x(27) = 1.8357079751751868; x(28) = 2.0232301911005157; x(29) = 2.043834754429505; x(30) = 2.2665132620567876; x(31) = 2.630415236459871; x(32) = 2.9592107790638380; x(33) = 3.296114596212218; x(34) = 3.6677742159463378; x(35) = 4.070919267883068; x(36) = 4.4995993983103881; x(37) = 4.953574342912980; x(38) = 5.437443360177798; x(39) = 5.961461043404500; x(40) = 6.547083258397540; x(41) = 7.251792998192644; w( 1) = 0.664195893812757801E-23; w( 2) = 0.860427172512207236E-19; w( 3) = 0.1140700785308509E-15; w( 4) = 0.408820161202505983E-13; w( 5) = 0.581803393170320419E-11; w( 6) = 0.400784141604834759E-09; w( 7) = 0.149158210417831408E-07; w( 8) = 0.315372265852264871E-06; w( 9) = 0.381182791749177506E-05; w(10) = 0.288976780274478689E-04; w(11) = 0.189010909805097887E-03; w(12) = 0.140697424065246825E-02; w(13) = - 0.144528422206988237E-01; w(14) = 0.178852543033699732E-01; w(15) = 0.705471110122962612E-03; w(16) = 0.165445526705860772E-01; w(17) = 0.45109010335859128E-01; w(18) = 0.928338228510111845E-01; w(19) = 0.145966293895926429E+00; w(20) = 0.165639740400529554E+00; w(21) = 0.562793426043218877E-01; w(22) = 0.165639740400529554E+00; w(23) = 0.145966293895926429E+00; w(24) = 0.928338228510111845E-01; w(25) = 0.45109010335859128E-01; w(26) = 0.165445526705860772E-01; w(27) = 0.705471110122962612E-03; w(28) = 0.178852543033699732E-01; w(29) = - 0.144528422206988237E-01; w(30) = 0.140697424065246825E-02; w(31) = 0.189010909805097887E-03; w(32) = 0.288976780274478689E-04; w(33) = 0.381182791749177506E-05; w(34) = 0.315372265852264871E-06; w(35) = 0.149158210417831408E-07; w(36) = 0.400784141604834759E-09; w(37) = 0.581803393170320419E-11; w(38) = 0.408820161202505983E-13; w(39) = 0.1140700785308509E-15; w(40) = 0.860427172512207236E-19; w(41) = 0.664195893812757801E-23; else fprintf ( 1, '\n' ); fprintf ( 1, 'HERMITE_GK22_SET - Fatal error!\n' ); fprintf ( 1, ' Illegal input value of N.\n' ); fprintf ( 1, ' N must be 1, 3, 9, 19, or 41.\n' ); error ( 'HERMITE_GK22_SET - Fatal error!' ); end return end