|
| 1 | +function open_newton_cotes( |
| 2 | + domain::Domain, |
| 3 | + order::Integer, |
| 4 | +) |
| 5 | + if domain == Domain_Interval && order == 0 |
| 6 | + return [[0.5, 0.5]], [1.0] |
| 7 | + end |
| 8 | + if domain == Domain_Interval && order == 1 |
| 9 | + return [[0.6666666666666667, 0.3333333333333333] [0.33333333333333337, 0.6666666666666666]], [0.5, 0.5] |
| 10 | + end |
| 11 | + if domain == Domain_Interval && order == 2 |
| 12 | + return [[0.75, 0.25] [0.5, 0.5] [0.25, 0.75]], [0.6666666666666666, -0.3333333333333333, 0.6666666666666666] |
| 13 | + end |
| 14 | + if domain == Domain_Interval && order == 3 |
| 15 | + return [[0.8, 0.2] [0.6, 0.4] [0.4, 0.6] [0.2, 0.8]], [0.4583333333333333, 0.041666666666666664, 0.041666666666666664, 0.4583333333333333] |
| 16 | + end |
| 17 | + if domain == Domain_Interval && order == 4 |
| 18 | + return [[0.8333333333333334, 0.16666666666666666] [0.6666666666666667, 0.3333333333333333] [0.5, 0.5] [0.33333333333333337, 0.6666666666666666] [0.16666666666666663, 0.8333333333333334]], [0.55, -0.7, 1.3, -0.7, 0.55] |
| 19 | + end |
| 20 | + if domain == Domain_Interval && order == 5 |
| 21 | + return [[0.8571428571428572, 0.14285714285714285] [0.7142857142857143, 0.2857142857142857] [0.5714285714285714, 0.42857142857142855] [0.4285714285714286, 0.5714285714285714] [0.2857142857142857, 0.7142857142857143] [0.1428571428571429, 0.8571428571428571]], [0.42430555555555555, -0.3145833333333333, 0.3902777777777778, 0.3902777777777778, -0.3145833333333333, 0.42430555555555555] |
| 22 | + end |
| 23 | + if domain == Domain_Interval && order == 6 |
| 24 | + return [[0.875, 0.125] [0.75, 0.25] [0.625, 0.375] [0.5, 0.5] [0.375, 0.625] [0.25, 0.75] [0.125, 0.875]], [0.48677248677248675, -1.0095238095238095, 2.323809523809524, -2.602116402116402, 2.323809523809524, -1.0095238095238095, 0.48677248677248675] |
| 25 | + end |
| 26 | + throw("Invalid domain or order: ($domain, $order)") |
| 27 | +end |
| 28 | + |
| 29 | +export open_newton_cotes |
0 commit comments