pastebin

Paste #78998: Untitled Perl paste by 61.164.42.188

#!/usr/bin/perl -w
use strict;

my @matrix_A = (
  [ 10 , 1 , 0 ],
  [ -1 , 10 ,-2 ],
  [ 0 , -2 , 5 ],
);
my $ref_a = \@matrix_A;

my @matrix_D = @$ref_a;
my @matrix_L = @$ref_a;
my @matrix_U = @$ref_a;

for (my $i = 0; $i < 3; $i++) {
  for (my $j = 0; $j < 3; $j++) {
    if ( $i = $j ) {
      $matrix_D[$i][$j] = $$ref_a[$i][$j];
      $matrix_L[$i][$j] = 0;
      $matrix_U[$i][$j] = 0;
    }
    if ( $i > $j ) {
      $matrix_D[$i][$j] = 0;
      $matrix_L[$i][$j] = $$ref_a[$i][$j];
      $matrix_U[$i][$j] = 0;
    }
    if ( $i < $j ) {
      $matrix_D[$i][$j] = 0;
      $matrix_L[$i][$j] = 0;
      $matrix_U[$i][$j] = $$ref_a[$i][$j];
    }
  }
}

想得到的结果是:
  @matrix_D,主对角线与@matrix_A相同,其余为零
  @matrix_L,主对角线以下与@matrix_A相同,其余为零
  @matrix_U,主对角线以上与@matrix_A相同,其余为零

程序段得到的结果完全不对,哪里出了问题?

Private
Wrap long lines

4 + 3 =