Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
32
Task/Euler-method/Perl/euler-method.pl
Normal file
32
Task/Euler-method/Perl/euler-method.pl
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
sub euler_method {
|
||||
my ($t0, $t1, $k, $step_size) = @_;
|
||||
my @results = ( [0, $t0] );
|
||||
|
||||
for (my $s = $step_size; $s <= 100; $s += $step_size) {
|
||||
$t0 -= ($t0 - $t1) * $k * $step_size;
|
||||
push @results, [$s, $t0];
|
||||
}
|
||||
|
||||
return @results;
|
||||
}
|
||||
|
||||
sub analytical {
|
||||
my ($t0, $t1, $k, $time) = @_;
|
||||
return ($t0 - $t1) * exp(-$time * $k) + $t1
|
||||
}
|
||||
|
||||
my ($T0, $T1, $k) = (100, 20, .07);
|
||||
my @r2 = grep { $_->[0] % 10 == 0 } euler_method($T0, $T1, $k, 2);
|
||||
my @r5 = grep { $_->[0] % 10 == 0 } euler_method($T0, $T1, $k, 5);
|
||||
my @r10 = grep { $_->[0] % 10 == 0 } euler_method($T0, $T1, $k, 10);
|
||||
|
||||
print "Time\t 2 err(%) 5 err(%) 10 err(%) Analytic\n", "-" x 76, "\n";
|
||||
for (0 .. $#r2) {
|
||||
my $an = analytical($T0, $T1, $k, $r2[$_][0]);
|
||||
printf "%4d\t".("%9.3f" x 7)."\n",
|
||||
$r2 [$_][0],
|
||||
$r2 [$_][1], ($r2 [$_][1] / $an) * 100 - 100,
|
||||
$r5 [$_][1], ($r5 [$_][1] / $an) * 100 - 100,
|
||||
$r10[$_][1], ($r10[$_][1] / $an) * 100 - 100,
|
||||
$an;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue