栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将矩阵提高至幂方法JAVA

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将矩阵提高至幂方法JAVA

这里有很多问题。

首先,您的矩阵平方算法有一个(常见)错误。你有:

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;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号