我真的很难创建一种将矩阵提升为幂的方法。我尝试使用这个
public static int powerMethod(int matrix, int power) {
int temp = matrix ;
for (int i = power; i == 1; i--)
temp = temp * matrix ;
return temp ;
但回报是WAYYY关闭。只有第一个(1,1)矩阵元素在点上。
我试过像这样主要使用该方法
// Multiplying matrices
for (i = 0; i < row; i++)
{
for (j = 0; j < column; j++)
{
for (l = 0; l < row; l++)
{
sum += matrix[i][l] * matrix[l][j] ;
}
matrix[i][j] = sum ;
sum = 0 ;
}
}
// Solving Power of matrix
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++)
matrixFinal[power][i][j] = Tools.powerMethod(matrix[i][j], power) ;
}
其中“ power”,“ row”和“ column”是用户输入的整数。
任何想法我该怎么做?
谢谢!!!
这里有很多问题。
首先,您的矩阵平方算法有一个(常见)错误。你有:
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
for (l = 0; l < row; l++) {
sum += matrix[i][l] * matrix[l][j] ;
}
matrix[i][j] = sum ;
sum = 0 ;
}
}
但是,您需要将结果存储在临时的第二个矩阵中,因为这样做时matrix[i][j] = sum
,它将用输出替换该位置处的值,然后以后的结果将不正确。我也建议初始化sum
为0 第一
,因为它似乎你外面声明它这个循环的,并且第一初始化它保护您免受任意值sum
,然后才会进入循环可能有。此外,它不是立即清除您的意思row
和column
-确保您遍历整个矩阵。例如:
int temp[][] = new int[matrix.length];
for (i = 0; i < matrix.length; i++) {
temp[i] = new int[matrix[i].length];
for (j = 0; j < matrix[i].length; j++) {
sum = 0 ;
for (l = 0; l < matrix.length; l++) {
sum += matrix[i][l] * matrix[l][j] ;
}
temp[i][j] = sum ;
}
}
// the result is now in 'temp', you could do this if you wanted:
matrix = temp;
请注意,如果矩阵是正方形(为了与自身相乘必须是正方形),matrix.length
并且matrix[i].length
在上面可以互换。
其次,乘法将矩阵 平方 。这意味着,如果重复应用它,则每次都会对矩阵进行平方运算,这意味着您将只能计算本身就是2的幂的幂。
第三个问题是最后一点没有多大意义:
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++)
matrixFinal[power][i][j] = Tools.powerMethod(matrix[i][j], power) ;
}
目前尚不清楚您要在这里做什么。最后一部分似乎正在尝试将单个元素提高到一定程度。但这与将矩阵求幂是不同的。
您 需要 做的是定义一个适当的矩阵乘法方法,该方法可以将两个任意矩阵相乘,例如:
int[][] multiplyMatrices (int[][] a, int[][] b) {
// compute and return a x b, similar to your existing multiplication
// algorithm, and of course taking into account the comments about
// the 'temp' output matrix above
}
然后计算能力变得简单:
int[][] powerMatrix (int[][] a, int p) {
int[][] result = a;
for (int n = 1; n < p; ++ n)
result = multiplyMatrices(result, a);
return result;
}
给定矩阵(大小by)和幂,(例如,4),产生矩阵,其中每个-th矩阵包含所有中的列在该程度上的可能组合。 在我当前的方法中,我生成-th矩阵,然后在下一次调用中使用它来生成th矩阵。对于给定的功率,这是否可以“自动”完成,而不是手动完成? 说到R,我是一个新手,我明白有可能比下面的尝试更有效、更优雅地实现这个解决方案。。。 有人能提供一些建议吗?我的目标是为给定的矩阵创建一个函数,并以更“自动化”
现在,我想我明白了这个概念。但是当我把它们都放入代码中时,它就不起作用了…… 首先,我试图将矩阵转换为上三角矩阵,但由于某种原因,在第2列之后,它停止工作。。 我输入的数组是: [1.00][5.00][4.00][4.00][1.00] [5.00] [7.00] [7.00] [4.00] [8.00] [7.00] [4.00] [8.00] [4.00] [7.00] [10.00][12
本文向大家介绍Python中矩阵创建和矩阵运算方法,包括了Python中矩阵创建和矩阵运算方法的使用技巧和注意事项,需要的朋友参考一下 矩阵创建 1、from numpyimport *; a1=array([1,2,3]) a2=mat(a1) 矩阵与方块列表的区别如下: 2、data2=mat(ones((2,4))) 创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用
基于我下面链接的相关问题(请参见@Aleh solution):我希望只计算给定幂的矩阵中列之间的唯一乘积。 例如,对于N=5,M=3,p=2,我们得到列(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)的乘积。我想修改(@Aleh)代码,只计算(1,1)、(1,2)、(1,3)、(2,2)、(2,3)、(3,3)列之间的乘积。但我想对每个第
我使用的是JavaSwing,我需要显示一个带有方括号的矩阵(普通方括号,就像我们在数学中使用的跨越多行的方括号),矩阵大小不是固定的,它取决于输入。 下面是我用来显示矩阵的代码: 所以我正在搜索如何做到这一点,我找到了这个链接https://docs.oracle.com/javase/tutorial/uiswing/components/border.html但它不包含我需要的括号,也找到了
本文向大家介绍python实现矩阵乘法的方法,包括了python实现矩阵乘法的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现矩阵乘法的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。