|
| 1 | +function gauss_legendre( |
| 2 | + domain::Domain, |
| 3 | + order::Integer, |
| 4 | +) |
| 5 | + if domain == Domain_Interval && order == 1 |
| 6 | + return [[0.5, 0.5]], [1.0] |
| 7 | + end |
| 8 | + if domain == Domain_Interval && order == 2 |
| 9 | + return [[0.7886751345948129, 0.21132486540518713] [0.21132486540518713, 0.7886751345948129]], [0.5, 0.5] |
| 10 | + end |
| 11 | + if domain == Domain_Interval && order == 3 |
| 12 | + return [[0.8872983346207417, 0.1127016653792583] [0.1127016653792583, 0.8872983346207417] [0.5, 0.5]], [0.2777777777777777, 0.2777777777777777, 0.4444444444444444] |
| 13 | + end |
| 14 | + if domain == Domain_Interval && order == 4 |
| 15 | + return [[0.9305681557970262, 0.06943184420297371] [0.33000947820757187, 0.6699905217924281] [0.06943184420297377, 0.9305681557970262] [0.6699905217924281, 0.33000947820757187]], [0.17392742256872684, 0.326072577431273, 0.17392742256872684, 0.3260725774312731] |
| 16 | + end |
| 17 | + if domain == Domain_Interval && order == 5 |
| 18 | + return [[0.9530899229693319, 0.04691007703066802] [0.5, 0.5] [0.2307653449471585, 0.7692346550528415] [0.046910077030668074, 0.9530899229693319] [0.7692346550528415, 0.23076534494715845]], [0.11846344252809456, 0.2844444444444444, 0.23931433524968332, 0.11846344252809456, 0.23931433524968332] |
| 19 | + end |
| 20 | + if domain == Domain_Interval && order == 6 |
| 21 | + return [[0.966234757101576, 0.033765242898423975] [0.6193095930415985, 0.3806904069584015] [0.3806904069584015, 0.6193095930415985] [0.16939530676686765, 0.8306046932331324] [0.033765242898423975, 0.966234757101576] [0.8306046932331324, 0.1693953067668677]], [0.08566224618958498, 0.23395696728634563, 0.2339569672863455, 0.1803807865240693, 0.08566224618958498, 0.1803807865240693] |
| 22 | + end |
| 23 | + if domain == Domain_Interval && order == 7 |
| 24 | + return [[0.9745539561713793, 0.0254460438286207] [0.7029225756886985, 0.2970774243113014] [0.5, 0.5] [0.29707742431130146, 0.7029225756886985] [0.12923440720030277, 0.8707655927996972] [0.025446043828620812, 0.9745539561713792] [0.8707655927996972, 0.12923440720030277]], [0.06474248308443456, 0.19091502525255943, 0.2089795918367347, 0.19091502525255952, 0.13985269574463832, 0.06474248308443487, 0.13985269574463832] |
| 25 | + end |
| 26 | + if domain == Domain_Interval && order == 8 |
| 27 | + return [[0.9801449282487682, 0.019855071751231856] [0.7627662049581646, 0.2372337950418354] [0.5917173212478248, 0.4082826787521751] [0.40828267875217517, 0.5917173212478248] [0.2372337950418355, 0.7627662049581645] [0.10166676129318664, 0.8983332387068134] [0.019855071751231912, 0.9801449282487681] [0.8983332387068134, 0.10166676129318664]], [0.05061426814518795, 0.1568533229389436, 0.18134189168918097, 0.18134189168918097, 0.15685332293894366, 0.11119051722668723, 0.05061426814518814, 0.11119051722668723] |
| 28 | + end |
| 29 | + if domain == Domain_Interval && order == 9 |
| 30 | + return [[0.984080119753813, 0.015919880246186957] [0.8066857163502952, 0.19331428364970482] [0.6621267117019045, 0.33787328829809554] [0.5, 0.5] [0.3378732882980957, 0.6621267117019043] [0.19331428364970482, 0.8066857163502952] [0.08198444633668212, 0.9180155536633179] [0.015919880246186957, 0.984080119753813] [0.9180155536633179, 0.08198444633668212]], [0.04063719418078724, 0.13030534820146775, 0.15617353852000143, 0.1651196775006299, 0.15617353852000154, 0.13030534820146775, 0.09032408034742866, 0.04063719418078724, 0.09032408034742866] |
| 31 | + end |
| 32 | + if domain == Domain_Interval && order == 10 |
| 33 | + return [[0.9869532642585859, 0.013046735741414128] [0.8397047841495122, 0.16029521585048778] [0.7166976970646236, 0.2833023029353764] [0.5744371694908156, 0.4255628305091844] [0.4255628305091844, 0.5744371694908156] [0.2833023029353766, 0.7166976970646234] [0.16029521585048778, 0.8397047841495122] [0.06746831665550768, 0.9325316833444923] [0.013046735741414128, 0.9869532642585859] [0.9325316833444922, 0.06746831665550779]], [0.03333567215434398, 0.10954318125799108, 0.1346333596549982, 0.14776211235737646, 0.14776211235737646, 0.13463335965499829, 0.10954318125799108, 0.07472567457529028, 0.03333567215434398, 0.07472567457529036] |
| 34 | + end |
| 35 | + if domain == Domain_Interval && order == 11 |
| 36 | + return [[0.9891143290730284, 0.010885670926971514] [0.8650760027870247, 0.13492399721297532] [0.7595480646034058, 0.2404519353965941] [0.6347715779761725, 0.36522842202382755] [0.5, 0.5] [0.36522842202382755, 0.6347715779761725] [0.24045193539659437, 0.7595480646034056] [0.13492399721297532, 0.8650760027870247] [0.056468700115952286, 0.9435312998840477] [0.010885670926971569, 0.9891143290730284] [0.9435312998840477, 0.05646870011595234]], [0.02783428355808692, 0.09314510546386703, 0.1165968822959953, 0.13140227225512338, 0.1364625433889503, 0.13140227225512338, 0.11659688229599534, 0.09314510546386703, 0.06279018473245228, 0.02783428355808692, 0.06279018473245228] |
| 37 | + end |
| 38 | + if domain == Domain_Interval && order == 12 |
| 39 | + return [[0.9907803171233596, 0.009219682876640378] [0.8849513370971523, 0.11504866290284765] [0.7936589771433087, 0.20634102285669126] [0.6839157494990901, 0.31608425050090994] [0.5626167042557344, 0.43738329574426554] [0.4373832957442656, 0.5626167042557344] [0.31608425050090994, 0.6839157494990901] [0.20634102285669154, 0.7936589771433085] [0.11504866290284765, 0.8849513370971523] [0.047941371814762546, 0.9520586281852375] [0.009219682876640434, 0.9907803171233596] [0.9520586281852375, 0.0479413718147626]], [0.023587668193255917, 0.08003916427167307, 0.10158371336153296, 0.11674626826917739, 0.12457352290670137, 0.12457352290670137, 0.11674626826917739, 0.10158371336153309, 0.08003916427167307, 0.05346966299765918, 0.023587668193255917, 0.05346966299765923] |
| 40 | + end |
| 41 | + if domain == Domain_Interval && order == 13 |
| 42 | + return [[0.9920915273592941, 0.007908472640705932] [0.9007890453666549, 0.09921095463334506] [0.8211746697201701, 0.17882533027982989] [0.7242463755182234, 0.2757536244817766] [0.6152291579775674, 0.3847708420224326] [0.5, 0.5] [0.3847708420224326, 0.6152291579775674] [0.27575362448177654, 0.7242463755182235] [0.17882533027983016, 0.8211746697201698] [0.09921095463334506, 0.9007890453666549] [0.04120080038851104, 0.958799199611489] [0.007908472640705932, 0.9920915273592941] [0.958799199611489, 0.04120080038851104]], [0.020242002382657956, 0.06943675510989362, 0.08907299038097291, 0.10390802376844428, 0.11314159013144862, 0.11627577661543695, 0.11314159013144862, 0.10390802376844421, 0.08907299038097297, 0.06943675510989362, 0.04606074991886425, 0.020242002382657956, 0.04606074991886425] |
| 43 | + end |
| 44 | + if domain == Domain_Interval && order == 14 |
| 45 | + return [[0.9931419043484062, 0.006858095651593843] [0.9136006575348825, 0.08639934246511749] [0.8436464524058427, 0.15635354759415726] [0.757624318179077, 0.24237568182092295] [0.6595561844639448, 0.3404438155360551] [0.5540274743536718, 0.44597252564632817] [0.44597252564632817, 0.5540274743536718] [0.34044381553605507, 0.6595561844639449] [0.24237568182092295, 0.757624318179077] [0.15635354759415754, 0.8436464524058425] [0.08639934246511749, 0.9136006575348825] [0.035782558168213185, 0.9642174418317868] [0.006858095651593787, 0.9931419043484062] [0.9642174418317868, 0.03578255816821324]], [0.017559730165875875, 0.060759285343951634, 0.07860158357909677, 0.09276919873896884, 0.10259923186064782, 0.10763192673157887, 0.10763192673157883, 0.1025992318606478, 0.09276919873896884, 0.07860158357909694, 0.060759285343951634, 0.04007904357988007, 0.017559730165875875, 0.04007904357988007] |
| 46 | + end |
| 47 | + if domain == Domain_Interval && order == 15 |
| 48 | + return [[0.9939962590102427, 0.006003740989757256] [0.9241032917052137, 0.0758967082947864] [0.862208865680085, 0.13779113431991497] [0.7854860863042694, 0.21451391369573058] [0.6970756735387817, 0.3029243264612183] [0.6005970469987172, 0.39940295300128276] [0.5, 0.5] [0.3994029530012827, 0.6005970469987173] [0.30292432646121825, 0.6970756735387817] [0.21451391369573058, 0.7854860863042694] [0.1377911343199152, 0.8622088656800848] [0.07589670829478634, 0.9241032917052137] [0.031363303799647024, 0.968636696200353] [0.006003740989757311, 0.9939962590102427] [0.968636696200353, 0.03136330379964708]], [0.015376620998058489, 0.05357961023358595, 0.06978533896307716, 0.08313460290849697, 0.09308050000778108, 0.0992157426635558, 0.10128912096278064, 0.0992157426635558, 0.09308050000778108, 0.08313460290849697, 0.06978533896307727, 0.05357961023358595, 0.03518302374405393, 0.015376620998058489, 0.035183023744054055] |
| 49 | + end |
| 50 | + if domain == Domain_Interval && order == 16 |
| 51 | + return [[0.994700467495825, 0.005299532504175031] [0.9328156011939159, 0.06718439880608412] [0.8777022041775016, 0.1222977958224985] [0.8089381222013219, 0.19106187779867811] [0.7290083888286136, 0.2709916111713863] [0.6408017753896295, 0.35919822461037054] [0.5475062549188188, 0.4524937450811813] [0.45249374508118123, 0.5475062549188188] [0.35919822461037054, 0.6408017753896295] [0.27099161117138626, 0.7290083888286137] [0.19106187779867811, 0.8089381222013219] [0.12229779582249867, 0.8777022041775013] [0.06718439880608407, 0.9328156011939159] [0.0277124884633837, 0.9722875115366163] [0.005299532504175031, 0.994700467495825] [0.9722875115366163, 0.027712488463383755]], [0.013576229705877102, 0.04757925584124639, 0.062314485627766945, 0.07479799440828835, 0.08457825969750127, 0.09130170752246179, 0.09472530522753428, 0.09472530522753428, 0.09130170752246179, 0.0845782596975013, 0.07479799440828835, 0.06231448562776706, 0.04757925584124639, 0.031126761969323912, 0.013576229705877102, 0.03112676196932399] |
| 52 | + end |
| 53 | + if domain == Domain_Interval && order == 17 |
| 54 | + return [[0.9952877376572087, 0.004712262342791318] [0.9401195768634929, 0.059880423136507044] [0.8907570019484007, 0.10924299805159932] [0.8288355796083453, 0.17116442039165464] [0.7563452685432385, 0.24365473145676153] [0.6756158817269382, 0.32438411827306185] [0.5892420907479239, 0.41075790925207606] [0.5, 0.5] [0.4107579092520761, 0.5892420907479239] [0.3243841182730618, 0.6756158817269382] [0.24365473145676153, 0.7563452685432385] [0.1711644203916547, 0.8288355796083453] [0.10924299805159954, 0.8907570019484005] [0.0598804231365071, 0.9401195768634929] [0.024662239115616158, 0.9753377608843838] [0.004712262342791318, 0.9952877376572087] [0.9753377608843838, 0.024662239115616158]], [0.012074151434273955, 0.04251807415858961, 0.05594192359670195, 0.06756818423426275, 0.07702288053840516, 0.084002051078225, 0.08828135268349632, 0.08972323517810327, 0.08828135268349632, 0.084002051078225, 0.07702288053840516, 0.06756818423426275, 0.05594192359670211, 0.04251807415858961, 0.027729764686993556, 0.012074151434273955, 0.02772976468699366] |
| 55 | + end |
| 56 | + if domain == Domain_Interval && order == 18 |
| 57 | + return [[0.9957825842104655, 0.004217415789534551] [0.9463012332487779, 0.05369876675122215] [0.9018524794862616, 0.09814752051373843] [0.8458435215301766, 0.1541564784698234] [0.7798854155369738, 0.22011458446302623] [0.7058755807314213, 0.2941244192685787] [0.6259431128457528, 0.37405688715424723] [0.5423875065208676, 0.45761249347913235] [0.45761249347913235, 0.5423875065208676] [0.37405688715424723, 0.6259431128457528] [0.2941244192685787, 0.7058755807314213] [0.22011458446302623, 0.7798854155369738] [0.1541564784698234, 0.8458435215301766] [0.09814752051373865, 0.9018524794862613] [0.05369876675122209, 0.9463012332487779] [0.0220880252143012, 0.9779119747856988] [0.0042174157895344955, 0.9957825842104655] [0.9779119747856988, 0.022088025214301144]], [0.010808006763241689, 0.03821286512744452, 0.05047102205314358, 0.06127760335573925, 0.07032145733532535, 0.07734233756313257, 0.0821382418729164, 0.08457119148157179, 0.08457119148157179, 0.0821382418729164, 0.07734233756313257, 0.07032145733532535, 0.06127760335573925, 0.0504710220531437, 0.03821286512744452, 0.024857274447484857, 0.010808006763241689, 0.024857274447484857] |
| 58 | + end |
| 59 | + if domain == Domain_Interval && order == 19 |
| 60 | + return [[0.9962034219217921, 0.003796578078207824] [0.951577951807409, 0.04842204819259105] [0.9113573282685714, 0.08864267173142859] [0.8604830886676147, 0.1395169113323853] [0.8002726523308406, 0.1997273476691595] [0.7322853706879805, 0.2677146293120195] [0.6582820499818149, 0.34171795001818506] [0.5801793228201126, 0.4198206771798873] [0.5, 0.5] [0.41982067717988736, 0.5801793228201126] [0.34171795001818506, 0.6582820499818149] [0.2677146293120195, 0.7322853706879805] [0.19972734766915945, 0.8002726523308406] [0.1395169113323853, 0.8604830886676147] [0.08864267173142881, 0.9113573282685712] [0.048422048192590994, 0.951577951807409] [0.01989592393258499, 0.980104076067415] [0.0037965780782077685, 0.9962034219217922] [0.980104076067415, 0.01989592393258499]], [0.009730894114863296, 0.03452227136882058, 0.045745010811225055, 0.05578332277366699, 0.06437698126966812, 0.0713033510868033, 0.07638302103292981, 0.07948442169697717, 0.08052722492439185, 0.07948442169697717, 0.07638302103292981, 0.0713033510868033, 0.06437698126966812, 0.05578332277366699, 0.04574501081122509, 0.03452227136882058, 0.02240711338284976, 0.009730894114863187, 0.02240711338284976] |
| 61 | + end |
| 62 | + if domain == Domain_Interval && order == 20 |
| 63 | + return [[0.9965642995925474, 0.0034357004074525577] [0.956117214125663, 0.04388278587433703] [0.9195584859111094, 0.08044151408889061] [0.8731659532300754, 0.1268340467699246] [0.8180268403632576, 0.1819731596367425] [0.7554335009754136, 0.24456649902458644] [0.6868530443577098, 0.3131469556422902] [0.6138929255708225, 0.38610707442917747] [0.5382632605667487, 0.46173673943325133] [0.46173673943325133, 0.5382632605667487] [0.38610707442917747, 0.6138929255708225] [0.3131469556422902, 0.6868530443577098] [0.24456649902458638, 0.7554335009754136] [0.18197315963674243, 0.8180268403632576] [0.1268340467699246, 0.8731659532300754] [0.08044151408889078, 0.9195584859111092] [0.04388278587433703, 0.956117214125663] [0.01801403636104304, 0.981985963638957] [0.0034357004074525577, 0.9965642995925474] [0.981985963638957, 0.018014036361043095]], [0.008807003569576057, 0.031336024167054534, 0.04163837078835238, 0.05096505990862023, 0.05909726598075927, 0.06584431922458833, 0.07104805465919108, 0.07458649323630188, 0.07637669356536297, 0.07637669356536297, 0.07458649323630187, 0.07104805465919108, 0.06584431922458833, 0.05909726598075927, 0.05096505990862023, 0.04163837078835248, 0.031336024167054534, 0.02030071490019344, 0.008807003569576057, 0.02030071490019344] |
| 64 | + end |
| 65 | + if domain == Domain_Interval && order == 21 |
| 66 | + return [[0.9968760853101948, 0.003123914689805274] [0.9600496670752003, 0.0399503329247996] [0.9266816822916586, 0.07331831770834135] [0.8842199817378389, 0.11578001826216106] [0.8335694020987061, 0.16643059790129383] [0.7758094179436099, 0.2241905820563901] [0.7121710601037194, 0.2878289398962806] [0.6440106584012005, 0.35598934159879947] [0.5727809270804476, 0.42721907291955247] [0.5, 0.5] [0.4272190729195524, 0.5727809270804476] [0.35598934159879947, 0.6440106584012005] [0.28782893989628056, 0.7121710601037194] [0.2241905820563901, 0.7758094179436099] [0.1664305979012939, 0.8335694020987061] [0.11578001826216111, 0.8842199817378389] [0.07331831770834152, 0.9266816822916585] [0.03995033292479966, 0.9600496670752003] [0.016386580716846844, 0.9836134192831532] [0.0031239146898052184, 0.9968760853101948] [0.9836134192831532, 0.016386580716846844]], [0.008008614128887176, 0.028567212713428623, 0.038050056814189666, 0.04672221172801696, 0.05439864958357419, 0.060915708026864246, 0.06613446931666878, 0.06994369739553659, 0.07226220199498508, 0.07304056682484523, 0.07226220199498508, 0.0699436973955366, 0.06613446931666878, 0.060915708026864246, 0.05439864958357419, 0.04672221172801696, 0.038050056814189714, 0.028567212713428623, 0.01847689488542619, 0.008008614128887176, 0.01847689488542619] |
| 67 | + end |
| 68 | + throw("Invalid domain or order: ($domain, $order)") |
| 69 | +end |
| 70 | + |
| 71 | +export gauss_legendre |
0 commit comments