function grid_point = laguerre_abscissa ( dim_num, point_num, grid_index, ... grid_base ) %*****************************************************************************80 % %% LAGUERRE_ABSCISSA sets abscissas for multidimensional Gauss-Laguerre quadrature. % % Discussion: % % The "nesting" as it occurs for Gauss-Laguerre sparse grids simply % involves the use of a specified set of permissible orders for the % rule. % % The X array lists the (complete) Gauss-Laguerre abscissas for rules % of order 1, 3, 7, 15, 31, 63 and 127, in order. % % Licensing: % % This code is distributed under the GNU LGPL license. % % Modified: % % 11 October 2007 % % Author: % % John Burkardt % % Parameters: % % Input, integer DIM_NUM, the spatial dimension. % % Input, integer POINT_NUM, the number of points. % % Input, integer GRID_INDEX(DIM_NUM,POINT_NUM), for each % point and dimension, the index of the abscissa. % % Input, integer GRID_BASE(DIM_NUM), the order of the % rule being used in each dimension. % % Output, real GRID_POINT(DIM_NUM), the grid points of abscissas. % skip = [ 0, 1, 4, 11, 26, 57, 120, 247 ]; x = [ ... 1.0E+00, ... 0.415774556783479083311533873128E+00, ... 0.229428036027904171982205036136E+01, ... 0.628994508293747919686641576551E+01, ... 0.193043676560362413838247885004E+00, ... 0.102666489533919195034519944317E+01, ... 0.256787674495074620690778622666E+01, ... 0.490035308452648456810171437810E+01, ... 0.818215344456286079108182755123E+01, ... 0.127341802917978137580126424582E+02, ... 0.193957278622625403117125820576E+02, ... 0.933078120172818047629030383672E-01, ... 0.492691740301883908960101791412E+00, ... 0.121559541207094946372992716488E+01, ... 0.226994952620374320247421741375E+01, ... 0.366762272175143727724905959436E+01, ... 0.542533662741355316534358132596E+01, ... 0.756591622661306786049739555812E+01, ... 0.101202285680191127347927394568E+02, ... 0.131302824821757235640991204176E+02, ... 0.166544077083299578225202408430E+02, ... 0.207764788994487667729157175676E+02, ... 0.256238942267287801445868285977E+02, ... 0.314075191697539385152432196202E+02, ... 0.385306833064860094162515167595E+02, ... 0.480260855726857943465734308508E+02, ... 0.45901947621108290743496080275224E-01, ... 0.24198016382477204890408974151714E+00, ... 0.59525389422235073707330165005414E+00, ... 1.1066894995329987162111308789792E+00, ... 1.7775956928747727211593727482675E+00, ... 2.6097034152566806503893375925315E+00, ... 3.6051968023400442698805817554243E+00, ... 4.7667470844717611313629127271123E+00, ... 6.0975545671817409269925429328463E+00, ... 7.6014009492331374229360106942867E+00, ... 9.2827143134708894182536695297710E+00, ... 11.146649755619291358993815629587E+00, ... 13.199189576244998522464925028637E+00, ... 15.447268315549310075809325891801E+00, ... 17.898929826644757646725793817752E+00, ... 20.563526336715822170743048968779E+00, ... 23.451973482011858591050255575933E+00, ... 26.577081352118260459975876986478E+00, ... 29.953990872346445506951917840024E+00, ... 33.600759532902202735410313885784E+00, ... 37.539164407330440882887902558001E+00, ... 41.795830870182219981347945853330E+00, ... 46.403866806411123136029227604386E+00, ... 51.405314476797755161861461088395E+00, ... 56.854992868715843620511922055660E+00, ... 62.826855908786321453677523304806E+00, ... 69.425277191080345623322251656443E+00, ... 76.807047763862732837609972285484E+00, ... 85.230358607545669169387065607043E+00, ... 95.188939891525629981308606853957E+00, ... 107.95224382757871475002440117666E+00, ... 0.22768893732576153785994330248562E-01, ... 0.11998325242727824715771416426383E+00, ... 0.29494185444770149577427738517405E+00, ... 0.54779087896237725363865073775856E+00, ... 0.87869061179931901673895567052285E+00, ... 1.2878464335919706302309207788611E+00, ... 1.7755123815388553763979463268728E+00, ... 2.3419925567085989256055628337716E+00, ... 2.9876423223246473939976731053629E+00, ... 3.7128695992018000346299637413422E+00, ... 4.5181363349503584391105568561550E+00, ... 5.4039601781825946286902599782736E+00, ... 6.3709163787865330220392250891777E+00, ... 7.4196399339311711154888493199004E+00, ... 8.5508280008403328312589048722235E+00, ... 9.7652425999245366807004592977996E+00, ... 11.063713635140661736220550410604E+00, ... 12.447142262356492749798687569289E+00, ... 13.916504641057818562912967008183E+00, ... 15.472856110036296424777143607779E+00, ... 17.117335833863588753116900303886E+00, ... 18.851171974154856850873483787506E+00, ... 20.675687448056515660377265667433E+00, ... 22.592306346311528381292277759986E+00, ... 24.602561094972638883700642760037E+00, ... 26.708100458737343969779087998829E+00, ... 28.910698500451382640177718103234E+00, ... 31.212264631175912885477773820802E+00, ... 33.614854909101154836598842888345E+00, ... 36.120684774484823056306328740825E+00, ... 38.732143442933582145626041607663E+00, ... 41.451810222318741191114726181363E+00, ... 44.282473071479233839358857134636E+00, ... 47.227149784295686898935095231536E+00, ... 50.289112264240695761749021839419E+00, ... 53.471914456788652808348280619542E+00, ... 56.779424636342062213099781057119E+00, ... 60.215862909019862886417550114424E+00, ... 63.785845004235974631701139601836E+00, ... 67.494433702293885830374325695045E+00, ... 71.347199604295266286654803376075E+00, ... 75.350293425653234254290504744279E+00, ... 79.510532629986309149555391354778E+00, ... 83.835506080872257843339817658508E+00, ... 88.333701570354369086112766326498E+00, ... 93.014662728558547405303399037100E+00, ... 97.889184147578140043386727677112E+00, ... 102.96955690741381650783952746778E+00, ... 108.26988161961595392226350967206E+00, ... 113.80647350287462738934485955901E+00, ... 119.59839538830458666962452963285E+00, ... 125.66817255856119431291196303280E+00, ... 132.04277272091165746585590583045E+00, ... 138.75498418103789078167590567526E+00, ... 145.84541318313540358283994248439E+00, ... 153.36548459497863623710815962660E+00, ... 161.38215194813761243562172669592E+00, ... 169.98570600665839438795175301156E+00, ... 179.30366247401580910251827858515E+00, ... 189.52789596532475473668721332981E+00, ... 200.97521159924656741628671841018E+00, ... 214.25368536638788642698056296400E+00, ... 230.93465747089703971246562985079E+00, ... 0.11339635298518611691893169631306E-01, ... 0.59749753435726620281348237057387E-01, ... 0.14685098690746167612388223687431E+00, ... 0.27267590735859553131378008278900E+00, ... 0.43724600644192665554577035869932E+00, ... 0.64058688222566929533576416399983E+00, ... 0.88272968639058364481487653650042E+00, ... 1.1637114160166537661560584700951E+00, ... 1.4835750152834613891313584861012E+00, ... 1.8423694351613565380686320809853E+00, ... 2.2401496839579024244513315656522E+00, ... 2.6769768780141303692167869961238E+00, ... 3.1529182957082825565771508308846E+00, ... 3.6680474360304752540226339926515E+00, ... 4.2224440823301888455977876667425E+00, ... 4.8161943715870502475665535087286E+00, ... 5.4493908694559416755862178908416E+00, ... 6.1221326512997254193944584763155E+00, ... 6.8345253894122668112237994973336E+00, ... 7.5866814466367472174205986836847E+00, ... 8.3787199765932725254842120659452E+00, ... 9.2107670307426558777922506102445E+00, ... 10.082955672528643809166439353647E+00, ... 10.995426098858125429803147358780E+00, ... 11.948325769197725997610605127857E+00, ... 12.941809542585531053723381098192E+00, ... 13.976039822878506520014405668679E+00, ... 15.051186712579523631574796365435E+00, ... 16.167428175612852922977395051768E+00, ... 17.324950209443673446561163712616E+00, ... 18.523947026965688560811711309349E+00, ... 19.764621248611504104071669386884E+00, ... 21.047184105173183606877044020054E+00, ... 22.371855651855542817648123918101E+00, ... 23.738864994122497183652313788712E+00, ... 25.148450525937368234077278385644E+00, ... 26.600860181041749607253384279755E+00, ... 28.096351697964619201753961292129E+00, ... 29.635192899504178910610227138642E+00, ... 31.217661987479759144214467152615E+00, ... 32.844047853610430460522951341338E+00, ... 34.514650407441149149105635947422E+00, ... 36.229780922306804019615388508885E+00, ... 37.989762400399956435968780140278E+00, ... 39.794929958089961778396437141707E+00, ... 41.645631232730180705153990897484E+00, ... 43.542226812286859549950892993822E+00, ... 45.485090689228791137996151336673E+00, ... 47.474610740231964719468766599146E+00, ... 49.511189233379087716728884584381E+00, ... 51.595243364671244443182771266934E+00, ... 53.727205825819316758288140069145E+00, ... 55.907525405447553305830605991732E+00, ... 58.136667626022439197077526025660E+00, ... 60.415115419018590295707192053805E+00, ... 62.743369841051809700207126742685E+00, ... 65.121950833949996311956025417139E+00, ... 67.551398031997886314411872443149E+00, ... 70.032271619884584511229871192030E+00, ... 72.565153245206849090888669416801E+00, ... 75.150646989739935299354362325096E+00, ... 77.789380404085816000647405462136E+00, ... 80.482005610750729205803962926758E+00, ... 83.229200481195914886796120019048E+00, ... 86.031669892953582966798238732643E+00, ... 88.890147073512051099652518544282E+00, ... 91.805395038358177994971250170499E+00, ... 94.778208131331583205387031034825E+00, ... 97.809413676305116411054110115424E+00, ... 100.89987375017285940371939762172E+00, ... 104.05048708821598934704076845022E+00, ... 107.26219113414600428423116401414E+00, ... 110.53596424851500530602771351277E+00, ... 113.87282809075839485348376187652E+00, ... 117.27385019192517774095477886379E+00, ... 120.74014673718880106173978002719E+00, ... 124.27288557955698354259506446928E+00, ... 127.87328950885942645093841745425E+00, ... 131.54263980314366921809377742137E+00, ... 135.28228009311836970132738106369E+00, ... 139.09362057432970013964422086977E+00, ... 142.97814260643601776808227753574E+00, ... 146.93740374437366549441080969072E+00, ... 150.97304325252187127492511437460E+00, ... 155.08678816034612572229641420609E+00, ... 159.28045992663288235401956989889E+00, ... 163.55598178957571104015967182053E+00, ... 167.91538689194360134245547184721E+00, ... 172.36082728473812536838156191681E+00, ... 176.89458392960192176311674993508E+00, ... 181.51907784036813069227528834025E+00, ... 186.23688252828112373861202530357E+00, ... 191.05073794450929196790836610789E+00, ... 195.96356614879879837839002542988E+00, ... 200.97848897600025153696475526130E+00, ... 206.09884802468871112127283042753E+00, ... 211.32822735671655260572377256981E+00, ... 216.67047937658230323477089465777E+00, ... 222.12975445929687246267304963754E+00, ... 227.71053502072232419089132431317E+00, ... 233.41767488282602453367775322563E+00, ... 239.25644498830308620018749667089E+00, ... 245.23258677871567172531254018984E+00, ... 251.35237488718128030005500991754E+00, ... 257.62269123792061413076191882313E+00, ... 264.05111322908240551754377241831E+00, ... 270.64601945722796749299111718606E+00, ... 277.41671750163651071798388218104E+00, ... 284.37359974220870326674402873120E+00, ... 291.52833521346495719581282021650E+00, ... 298.89410837028248600878895615414E+00, ... 306.48591978262611320418112423947E+00, ... 314.32096986471177487400007507615E+00, ... 322.41915589128679683349440361344E+00, ... 330.80372663802405651933847334878E+00, ... 339.50216127832433747735367595958E+00, ... 348.54737559472697355480761787441E+00, ... 357.97942028029845454049007443090E+00, ... 367.84794520076004578858341422871E+00, ... 378.21590623135532818332979188889E+00, ... 389.16539141251004101579475325153E+00, ... 400.80729331451702589996361286427E+00, ... 413.29853681779384418008260081859E+00, ... 426.87579153663675538288509017051E+00, ... 441.93085485310841412460309271842E+00, ... 459.21804639888429981971267313224E+00, ... 480.69378263388373859704269229304E+00 ... ]; if ( any ( grid_base(1:dim_num) < 1 ) ) fprintf ( 1, '\n' ); fprintf ( 1, 'LAGUERRE_ABSCISSA - Fatal error!\n' ); fprintf ( 1, ' Some base values are less than 1.\n' ); error ( 'LAGUERRE_ABSCISSA - Fatal error!' ); end if ( any ( 127 < grid_base(1:dim_num) ) ) fprintf ( 1, '\n' ); fprintf ( 1, 'LAGUERRE_ABSCISSA - Fatal error!\n' ); fprintf ( 1, ' Some base values are greater than 127.\n' ); error ( 'LAGUERRE_ABSCISSA - Fatal error!' ); end for point = 1 : point_num for dim = 1 : dim_num level = i4_log_2 ( grid_base(dim) + 1 ) - 1; pointer = skip(level+1) + grid_index(dim,point); grid_point(dim,point) = x(pointer); end end return end