问题是我必须将 N 个向量
的每个元素彼此相乘。
例如,如果有两个向量名称X,Y
。每个都有三个要素。
例如 X={X1,x2,x3}
和 Y={y1,y2,y3}
。所以乘法如下
M1={X1*Y1},
M2={X1*Y2},
M3={X1*Y3},
M4={X2*Y1},
M5={X2*Y2},
M6={X2*Y3},
M7={X3*Y1},
M8={X3*Y2},
M9={X4*Y3}
我可以使用两个“for”循环轻松完成此操作。
但问题是向量的数量是可变的。它可以是X,Y,Z
或X,Y
或W,X,Y,Z
。那么我怎样才能将它们相乘呢?此操作有数学名称吗?
我的想法之一是将向量视为一个矩阵。
最佳答案
Here is the solution for your problem. Syntax may be different or depends on programming language you are using. It will initially store the first element and then perform multiplication of upcoming arrays. So each and every element of arrays are being multiplied one by one.
<?php
function multiplyVector($a=array(),$b)
{
$count_a = count($a);
$count_b = count($b);
if($count_a)
{
for($i=0;$i<$count_a;$i++)
{
for($j=0;$j<$count_b;$j++)
{
$result[] = $a[$i] * $b[$j];
}
}
}
else
{
$result = $b;
}
return $result;
}
$X = [ 1, 2, 3 ];
$Y = [ 7, 8, 9, 10 ];
$Z = [ 10, 20, 50];
// add multiple array to $main
$main = [ $X, $Y, $Z ];
$result = array();
foreach($main as $m)
{
$result = multiplyVector($result,$m);
}
echo "<pre>";print_r($result);die;
结果就在这里。
Array
(
[0] => 70
[1] => 140
[2] => 350
[3] => 80
[4] => 160
[5] => 400
[6] => 90
[7] => 180
[8] => 450
[9] => 100
[10] => 200
[11] => 500
[12] => 140
[13] => 280
[14] => 700
[15] => 160
[16] => 320
[17] => 800
[18] => 180
[19] => 360
[20] => 900
[21] => 200
[22] => 400
[23] => 1000
[24] => 210
[25] => 420
[26] => 1050
[27] => 240
[28] => 480
[29] => 1200
[30] => 270
[31] => 540
[32] => 1350
[33] => 300
[34] => 600
[35] => 1500
)
关于php - 如何将 N 个向量的每个元素相乘 N^N 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31291719/