Bernstein basis polynomials: Difference between revisions

Content added Content deleted
(added Raku programming solution)
Line 2,501: Line 2,501:
}
}
return $s * @bern[0] + $t * @bern[1]
return $s * @bern[0] + $t * @bern[1]
}

sub evaluations (@m, @b, $x) {
my $m = ([o] map { $_ + $x * * }, @m)(0); # Horner's rule
return "p({$x.fmt: '%.2f'}) = { evalBern-N @b, $x } (mono $m)";
}
}


Line 2,514: Line 2,519:
say "\nSubprogram(2) examples:";
say "\nSubprogram(2) examples:";


for (@pm,@pb2,@qm,@qb2).rotor(2) X (0.25,7.5) {
for (@pm,@pb2,@qm,@qb2).rotor(2) X (0.25,7.5) -> [[@m,@b], $x] {
say evaluations @m, @b, $x
my $x = .[1];
my $y = evalBern-N .[0][1], $x;
my $m = ([o] map { $_ + $x * * }, .[0][0])(0); # Horner's rule
say "p({$x.fmt: '%.2f'}) = $y (mono $m)";
}
}


Line 2,529: Line 2,531:
say "\nSubprogram(4) examples:";
say "\nSubprogram(4) examples:";


for (@pm,@pb3,@qm,@qb3,@rm,@rb3).rotor(2) X (0.25,7.5) {
for (@pm,@pb3,@qm,@qb3,@rm,@rb3).rotor(2) X (0.25,7.5) -> [[@m,@b], $x] {
my $x = .[1];
say evaluations @m, @b, $x
my $y = evalBern-N .[0][1], $x;
my $m = ([o] map { $_ + $x * * }, .[0][0])(0); # Horner's rule
say "p({$x.fmt: '%.2f'}) = $y (mono $m)";
}
}