ฉันได้เขียนโค้ดเพื่อค้นหาดีเทอร์มิแนนต์ของเมทริกซ์ขนาด 10X10 รหัสนี้ให้ผลลัพธ์ที่ถูกต้องจนถึงเมทริกซ์ 9X9 แต่สำหรับเมทริกซ์ 10X10 ให้ข้อผิดพลาดดังต่อไปนี้
"การใช้ค่าที่ไม่กำหนดค่าเริ่มต้นในการคูณ ‹*> ที่บรรทัดที่ 23
หารผิดด้วยศูนย์ที่บรรทัด 21"
ฉันลองใช้เมทริกซ์ 11X11 ด้วย แต่มันให้คำตอบที่ผิด
เหตุใดรหัสนี้จึงให้ข้อผิดพลาดดังกล่าว ...
ต่อไปนี้เป็นรหัส:
#!/usr/bin/perl
use strict;
use warnings;
my @x1=(
[5, 6, 3, 2, 4, 9, 3, 5, 4, 2],
[12, 9, 8, 3, 3, 0, 6, 9, 3, 4],
[8, 6, 5, 8, 9, 3, 9, 3, 9, 5],
[6, 4, 3, 0, 6, 4, 8, 2, 22, 8],
[8, 3, 2, 5, 2, 12, 7, 1, 6, 9],
[5, 9, 3, 9, 5, 1, 3, 8, 4, 2],
[3, 10, 4, 16, 4, 7, 2, 12, 9, 6],
[2, 12, 9, 13, 8, 3, 1, 16, 0, 6],
[3, 6, 8, 5, 12, 8, 4, 19, 8, 5],
[2, 5, 6, 4, 9, 10, 3, 11, 7, 3]
);
# Matrix of nxn
for (my $i=0;$i le 9;$i++) {
for (my $j=0;$j le 9;$j++) {
if($j>$i) {
my $ratio = $x1[$j][$i]/$x1[$i][$i];
for(my $k = 0; $k le 9; $k++){
$x1[$j][$k] -= $ratio * $x1[$i][$k];
}
}
}
}
my $det1 = 1;
for(my $i = 0; $i le 9; $i++){
$det1 *= $x1[$i][$i];
}
printf $det1," ";
@x1
ของคุณหากคุณต้องการทำงานกับเมทริกซ์ เช่น 11x11 แล้วทำไมถึงเป็นle 9
แต่ไม่ใช่<=9
- person varnie   schedule 10.07.2015$i le 9
เป็นจริงสำหรับค่าทั้งหมดของ$i
ตั้งแต่ 0 ถึง 89 ให้ใช้$i <= 9
แทน - person r3mainer   schedule 10.07.2015