私は、Java 8でマトリックスの行列式を見つける方法をコード化しようとしています。そのような場合にはいくつかの特殊なケースがあります。例えば、行列が上三角形である場合。私はこのコードを使ってPython 3.6で、この作品をコード化:pythonからJavaへのすべてのものと任意のものの代替?
def is_upper_triangular(a, order):
for i in range(1, order):
if all(a[i][j] == 0 for j in range(order)):
return True
return False
これは非常に簡単かつクリーンなコードですので、私は、Javaでコーディングすると思ってきましたが、私はするためにJavaで任意の「すべて」の方法を見つけることができません。これを使って。私は、このWebページのそれに関するいくつかの情報を否定的な解決策で見つけました。私の問題を解決するための選択肢はありますか?ここで 今の私のJavaコードがあります:
public static double detMatrix(double[][] matriz) {
if(matriz.length == 1)
return matriz[0][0];
if(matriz.length == 2)
return matriz[0][0] * matriz[1][1] - matriz[1][0] * matriz[0][1];
double det = 0;
for(int i=0; i<matriz.length; i++){
double[][] nm = new double[matriz.length-1][matriz.length-1];
for(int j=0; j<matriz.length; j++){
if(j != i){
for(int k=1; k<matriz.length; k++){
int indice = -1;
if(j<i)
indice = j;
else if(j>i)
indice = j - 1;
nm[indice][k-1] = matriz[j][k];
}
}
}
if(i % 2 == 0)
det += matriz[i][0] * detMatrix(nm);
else
det -= matriz[i][0] * detMatrix(nm);
}
return det;
}
おかげ
pythonとjavaの両方のソリューションは、2次の時間の複雑さを持ちます。 –