[perl] Title
Viewer
- use warnings;
- # introduction
- print("This program computes several functions using Taylor series.\n");
- # input
- print("Enter x: ");
- my $x = <>;
- print("Enter alpha (for (1+x)^a): ");
- my $a = <>;
- print("Enter accuracy (eps): ");
- my $eps = <>;
- # service strings
- my $bold_limiter = "\t" . "="x59 . "\n";
- my $regular_limiter = "\t" . "-"x59 . "\n";
- my $control_str = "\t| %-10s| %-10.6f| %-+15.11f| %-15.11f|\n";
- # table header
- print("Table of values of some functions at a given point.\n");
- print($bold_limiter);
- printf("\t| %-10s| %-10s| %-15s| %-15s|\n", "Function", "x", "Value", "Accuracy");
- print($bold_limiter);
- # exp() row
- printf($control_str, "exp(x)", $x, &exp($x, $eps), $eps);
- print($regular_limiter);
- # alpha_exp() row
- printf($control_str, "(1+x)^a", $x, &alpha_exp($x, $a, $eps), $eps);
- print($regular_limiter);
- sub exp {
- (my $x, my $eps) = @_;
- my $member = 1;
- my $answer = $member;
- my $n = 1;
- do {
- $member *= $x / $n;
- $answer += $member;
- $n++;
- } while (abs($member) > $eps);
- return $answer;
- }
- sub alpha_exp {
- (my $x, my $a, my $eps) = @_;
- if ($a >= 0) {
- if (abs($x) > 1) {
- printf("Error: x is not correct for entered alpha (%f).\n", $a);
- return 0;
- }
- } elsif ($a > -1 && $a < 0) {
- if ($x <= -1 || $x > 1) {
- printf("Error: x is not correct for entered alpha (%f).", $a);
- return 0;
- }
- } else {
- if (abs($x) >= 1) {
- printf("Error: x is not correct for entered alpha (%f).\n", $a);
- return 0;
- }
- }
- my $member = 1;
- my $answer = $member;
- my $n = 1;
- do {
- $member *= $a * $x / $n;
- $answer += $member;
- $n++;
- $a--;
- } while (abs($member) > $eps);
- return $answer;
- }
Editor
You can edit this paste and save as new: