在perl中对一个矩阵求幂

时间:2012-02-23 18:12:08

标签: perl matrix exponent

我正在寻找一个使用perl取代矩阵的函数。我搜索过CPAN但似乎找不到合适的东西。有谁知道合适的包装,或简单的功能?

例如,对于以下矩阵($ m):

$m = [[-1.85294,0.36417,1.34865,0.14012],
      [0.13385,-0.70885,0.16502,0.40998],
      [0.48588,0.16174,-0.77471,0.12709],
      [0.13424,1.06859,0.33797,-1.54081]];

e ^ m~ =

0.25438971 0.2029723 0.4580481 0.08458940
0.07460393 0.6061030 0.1588883 0.16040370
0.16502112 0.1557330 0.6025270 0.07671839
0.08103971 0.4180838 0.2040153 0.29685570

1 个答案:

答案 0 :(得分:1)

PDL将处理这个问题,如@ J.D.指出。

use strict;
use warnings;

use PDL;
use PDL::LinearAlgebra::Trans;
use PDL::IO::Dumper;

my $m = pdl [[-1.85294,0.36417,1.34865,0.14012],
             [0.13385,-0.70885,0.16502,0.40998],
             [0.48588,0.16174,-0.77471,0.12709],
             [0.13424,1.06859,0.33797,-1.54081]];

my $new = mexp $m;

print sdump $new;

结果:

{my($VAR1);
my($PDL_140600590505856) = (double(0.254389714179579,0.202972289234997,0.458048094091295,0.08458940315894629,0.0746039289026906,0.606102994157082,0.158888283526803,0.160403695685552,0.165021120118487,0.155733015860466,0.602527027489139,0.07671838765811791,0.08103970821403091,0.418083774202018,0.204015347133539,0.296855703714981)->reshape(4,4));


$VAR1 = $PDL_140600590505856;

}

double()函数中的位是结果矩阵。