2016-12-07 1 views
0

PHP에서 배열을 사용하여 행렬 곱셈을 수행하고 싶습니다. 행렬 곱셈 대신에 같은 작업을 수행하려고합니다. 일어나는 단순한 곱셈은 출력마다 해결해 주도록 도와주세요.PHP에서 행렬 곱셈 코드를 만들려고하지만 행렬 대신 행 곱셈을 사용하면 행렬과 단순한 곱셈이 발생합니다.

여기 내 코드입니다 :

<?php 
$a1 = Array('0' => Array('0' => 1,'1' => 2),'1' => Array('0' => 4,'1' => 5)); 

$a2 = Array('0' => Array('0' => 7,'1' => 5),'1' => Array('0' => 3,'1' => 2)); 

$sumArray = array(); 

$result = array(); 
for($i=0; $i<=1; $i++) 
{ 
    for($j=0; $j<=1; $j++) 
    { 
     $result[$i][$j] = $a1[$i][$j] * $a2[$i][$j]; 
    } 
} 
echo "<pre/>"; 
print_r($result); 
?> 

출력 :

array image

+0

(I = 0; I는 <2; i가 ++) 용 { (j = 0; j를 <2이고; J ++) { C [I] [J] = 0; (k = 0; k <2; k ++)에 대한 { c [i] [j] = c [i] [j] + (a [i] [k] * b [k] [j]); } } } – dev21

+0

이 링크 확인 http://programmingincplus.blogspot.in/2012/09/multiplication-of-two-2d-matrix.html – dev21

답변

1
<?php 



$a = Array('0' => Array('0' => 1,'1' => 2),'1' => Array('0' => 4,'1' => 5)); 


$b = Array('0' => Array('0' => 7,'1' => 5),'1' => Array('0' => 3,'1' => 2)); 

$sumArray = array(); 

$c = array(); 

for($i=0;$i<2;$i++) { 
for($j=0;$j<2;$j++) 
{ 
    $c[$i][$j]=0; 
    for($k=0;$k<2;$k++) 
     { $c[$i][$j]=$c[$i][$j]+($a[$i][$k]*$b[$k][$j]); 
    } 
} 
} 


echo "<pre/>"; 
print_r($c); 
?> 
0

행렬 곱셈은 다음과 같은 방법을 구현됩니다

for i = 1..N 
    for j = 1..N 
    result[i][j] = 0. 
    for k = 1..N 
     result[i][j] += array1[i][k] * array2[j][k] // "row times column" 
    end for 
    end for 
end for 

내가 바로 질문이 있어요 바랍니다. 행렬 - 곱셈은 3 개의 for-loop를 필요로합니다. 위한

+0

죄송하지만 3 * 3 MxM은 무엇을 의미합니까? 당신은 3 개의 이차 행렬, 예를 들어 2를 곱하고 싶습니까? 'result = A * B * C'? – Kapa11

+0

좋아, 3 개의 행렬을 서로 곱하려고 할 때 sth를 사용하십시오. 이렇게 (C++ 코드) : – Kapa11

+0

fct를 작성하십시오. 이는 2 개의 행렬을 인수로 취해서 행렬 곱을 반환합니다 (이 알고리즘의 구현은 제 답변에서 볼 수 있습니다,'result'를 반환하십시오). 그런 다음이 행렬을 3 행렬을 곱하기 위해 두 번 호출합니다 (두 번째 호출에서 (A * B)의 출력에 C를 곱합니다). – Kapa11