Perl 计算方程式之间的百分比差

Perl 计算方程式之间的百分比差,perl,math,Perl,Math,我需要比较两个方程中不同数量的系数。 即: 这些系数可以是0->inf之间的任意值 我需要将每个方程与前面的方程进行比较,并返回这两个方程之间的百分比差。我有X,Y的值,还有每个方程的系数,我需要找到它们的差异百分比 我可以取两个已知Y值之间的标准百分比差,然后计算百分比差,但是因为这是多项式,百分比差总是会变化的 我也可以取一个设定半径的圆,求出每个方程与该圆相对于X轴的交角,以求出一个度,它可以与一个百分比相关,90度等于方程之间100%的变化。但我不确定这是否准确,因为圆圈之外的任何东西都

我需要比较两个方程中不同数量的系数。 即:

这些系数可以是0->inf之间的任意值

我需要将每个方程与前面的方程进行比较,并返回这两个方程之间的百分比差。我有X,Y的值,还有每个方程的系数,我需要找到它们的差异百分比

我可以取两个已知Y值之间的标准百分比差,然后计算百分比差,但是因为这是多项式,百分比差总是会变化的

我也可以取一个设定半径的圆,求出每个方程与该圆相对于X轴的交角,以求出一个度,它可以与一个百分比相关,90度等于方程之间100%的变化。但我不确定这是否准确,因为圆圈之外的任何东西都可能有不同的百分比差异


这将用Perl编写

如果您提交以下内容,我假设您的老师现在会帮助您:

#!/usr/bin/env perl

use 5.012;
use strict;
use warnings;

use List::Util qw( sum );

my @f = map polynomial_maker(@$_), (
    [4, 2, 1], # 4x^2 + 2x + 1
    [10, undef, undef, undef, 1, 0], # 10x^5 + x
);

my @v = (1, 2, 3, 4);

for my $f (@f) {
    for my $i (1 .. $#v) {
        my $y0 = $f->($v[$i - 1]);
        my $y1 = $f->($v[$i]);
        printf "y0 = %.2f\ty1 = %.2f\t%% ch = %.2f\n",
            $y0,
            $y1,
            100 * (($y1 - $y0) / $y0)
        ;
    }
    say '-' x 80;
}

sub polynomial_maker {
    my @coeff = reverse @_;
    return sub {
        no warnings 'uninitialized';
        sum map $coeff[$_] * ($_[0]**$_), 0 .. $#coeff;
    };
}

很难理解你的意思。这里的大背景是什么?你想实现什么?在代码方面,你尝试了什么?我认为OP不知道百分比变化的公式。哦,人类!百分比变化总是(之后-之前)/之前。i、 e.
(f(x_1)-f(x_0))/f(x_0)
。SIGHI认为您需要添加标记:
家庭作业
学术
并打开mathbook,请这不是家庭作业或学术。使用
列表::Util
Perl成为函数式语言,哈
#!/usr/bin/env perl

use 5.012;
use strict;
use warnings;

use List::Util qw( sum );

my @f = map polynomial_maker(@$_), (
    [4, 2, 1], # 4x^2 + 2x + 1
    [10, undef, undef, undef, 1, 0], # 10x^5 + x
);

my @v = (1, 2, 3, 4);

for my $f (@f) {
    for my $i (1 .. $#v) {
        my $y0 = $f->($v[$i - 1]);
        my $y1 = $f->($v[$i]);
        printf "y0 = %.2f\ty1 = %.2f\t%% ch = %.2f\n",
            $y0,
            $y1,
            100 * (($y1 - $y0) / $y0)
        ;
    }
    say '-' x 80;
}

sub polynomial_maker {
    my @coeff = reverse @_;
    return sub {
        no warnings 'uninitialized';
        sum map $coeff[$_] * ($_[0]**$_), 0 .. $#coeff;
    };
}