我需要比较两个方程之间的系数不同。 即:
Y = coef3*X^3 + coef2*X^2 + coef1*X + coef0
这些系数可以是0-> 0的任何值。 INF。
我需要将每个等式与之前的等式进行比较,并返回这两个等式之间的百分比差异。我有X,Y的值,以及我需要找到百分比差异的每个方程的系数。
我可以采用两个已知Y值之间的标准百分比差异并计算百分比差异,但由于这些是多项式,百分比差异将始终在变化。
我还可以采用一个具有设定半径的圆,并找到每个方程与该圆相对于X轴相交的角度,以便找到一个可与90度相等的百分比相关的度数。方程之间100%的变化。然而,我不确定这是否准确,因为圈外的任何东西都有可能不同的百分比差异。
这将用Perl编写。
答案 0 :(得分:1)
我假设如果您上交以下内容,您的老师现在会得到帮助:
#!/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;
};
}