Matrix(1133)

今天看了算法如下:1.求一个二维数组i和j互质的情况,就是求i和j的公约数只能为1.采用求最大公约数的算法实现。
2.求向量的相乘,具体实现算法:需要判断两个数组长度是否一致。
3.求两个二维数组的乘积,主要是注意行等于列的情况,中间值k一定为第一个数组的列或者是第二个数组的行。




1.向量乘积:
result += a[i]*b[i];
具体代码:
public static double dot( double[] x , double[] y){ //向量点乘
double result = 0 ;
if(x. length == y. length){
for ( int i = 0 ; i < x. length ; i ++)
result += x[i] * y[i] ; //不用加括号,优先级是不一样的
} else {
StdOut. println ( "Error!" ) ;
return result ;
}
return result ;
}

2.向量相乘:MxN * NxP, M与P不一定相等,因为超出的部分为零。
其中设置共同的部分N为k值。
代码如下:
public static double[][] mult( double[][] a , double[][] b){ //矩阵与矩阵之积 [M][N] * [N][P] = [M][P]
if (a[ 0]. length == b. length){
double [][] result = new double [a. length ][b[ 0 ]. length ] ; //第一个是行,第二个是列
for ( int i = 0 ; i < result. length ; i ++)
for ( int j = 0 ; j < result[i]. length ; j ++)
for ( int k = 0 ; k < b. length ; k ++) //这里b.length 可以换为 a[0].length
result[i][j] += a[i][k] * b[k][j] ;
return result ;
} else {
StdOut. println ( "Error!!!" ) ;
return null;
}
}


3.转置矩阵:
就是从新设置一个数组,让他的大小满足转置后的条件,比如[i][j] 变为[j][i] .将原来数组的内容复制过去就可以了。
代码如下:
public static double[][] transpose( double[][] a){ //转置矩阵
double[][] result = new double[a[ 0]. length][a. length] ;
for( int i = 0 ; i < a. length ; i ++){
for ( int j = 0 ; j < a[ 0 ]. length ; j ++){
result[i][j] = a[j][i] ;
}
}
return result ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值