Numerical integration/Gauss-Legendre Quadrature: Difference between revisions

Content added Content deleted
m (→‎{{header|Perl 6}}: don't need semi when line ends with a block)
m (→‎{{header|Perl 6}}: fix too-long line, a bit more clutter reduction)
Line 549: Line 549:
<lang perl6>multi legendre-pair( 1 , $x) { $x, 1 }
<lang perl6>multi legendre-pair( 1 , $x) { $x, 1 }
multi legendre-pair(Int $n, $x) {
multi legendre-pair(Int $n, $x) {
my ($m1, $m2) := legendre-pair($n - 1, $x);
my ($m1, $m2) = legendre-pair($n - 1, $x);
my \u = 1 - 1 / $n;
my \u = 1 - 1 / $n;
(1 + u) * $x * $m1 - u * $m2, $m1;
(1 + u) * $x * $m1 - u * $m2, $m1;
Line 560: Line 560:
multi legendre-prime( 1 , $ ) { 1 }
multi legendre-prime( 1 , $ ) { 1 }
multi legendre-prime(Int $n, $x) {
multi legendre-prime(Int $n, $x) {
my ($m0, $m1) := legendre-pair($n, $x);
my ($m0, $m1) = legendre-pair($n, $x);
($m1 - $x * $m0) * $n / (1 - $x**2);
($m1 - $x * $m0) * $n / (1 - $x**2);
}
}
Line 600: Line 600:
}
}


say "Gauss-Legendre {$_.fmt('%2d')}-point quadrature ∫₋₃⁺³ exp(x) dx ≈ ", quadrature($_, &exp, -3, +3) for 5 .. 10, 20;</lang>
say "Gauss-Legendre $_.fmt('%2d')-point quadrature ∫₋₃⁺³ exp(x) dx ≈ ",
quadrature($_, &exp, -3, +3) for 5 .. 10, 20;</lang>


{{out}}
{{out}}