मैं जावा में व्यस्त मैट्रिक्स की गणना करने की कोशिश कर रहा हूं।जावा उलटा मैट्रिक्स गणना
मैं adjoint विधि का पालन कर रहा हूं (adjoint मैट्रिक्स की पहली गणना, फिर इस मैट्रिक्स को स्थानांतरित करें और अंत में, निर्धारक के मूल्य के विपरीत के लिए इसे गुणा करें)।
यह काम करता है जब मैट्रिक्स बहुत बड़ा नहीं होता है। मैंने जांच की है कि मैट्रिक्स के लिए 12x12 के आकार तक परिणाम तुरंत प्रदान किया जाता है। हालांकि, जब मैट्रिक्स 12x12 से बड़ा होता है, तो उस समय गणना को पूरा करने की आवश्यकता होती है जो तेजी से बढ़ जाती है।
मैट्रिक्स मुझे उलटा करने की आवश्यकता है 1 9 x19 है, और इसमें बहुत अधिक समय लगता है। विधि जो अधिक समय लेती है वह निर्धारक की गणना के लिए उपयोग की जाने वाली विधि है।
कोड मैं का उपयोग कर रहा है:
public static double determinant(double[][] input) {
int rows = nRows(input); //number of rows in the matrix
int columns = nColumns(input); //number of columns in the matrix
double determinant = 0;
if ((rows== 1) && (columns == 1)) return input[0][0];
int sign = 1;
for (int column = 0; column < columns; column++) {
double[][] submatrix = getSubmatrix(input, rows, columns,column);
determinant = determinant + sign*input[0][column]*determinant(submatrix);
sign*=-1;
}
return determinant;
}
किसी को कैसे और अधिक कुशलता से एक बड़ी मैट्रिक्स के निर्धारक गणना करने के लिए पता है? यदि नहीं, तो क्या कोई जानता है कि अन्य एल्गोरिदम का उपयोग करके बड़े मैट्रिक्स के उलटा कैलकुलेट कैसे करें?
धन्यवाद
@duffymo: आपके उत्तर के लिए धन्यवाद। आप सही हैं, तेजी से नहीं, मेरा मतलब यह है कि मैट्रिक्स आकार 12x12 से निर्धारक की गणना करने के लिए समय लगता है शानदार रूप से बढ़ता है। मैंने जामा की कोशिश की है, लेकिन मुझे यह काम नहीं मिल रहा है (मैं जावा में काफी नया हूं)। मैं लू descomposition में भी देखेंगे। धन्यवाद। – dedalo
नहीं, "घातीय रूप से" सही है, क्योंकि आपका एल्गोरिदम वास्तव में घातीय है, लेकिन उस मैट्रिक्स उलटा या निर्धारक गणना में डफिमो भी सही है * आवश्यक * घातीय समय की आवश्यकता नहीं है। – JaakkoK
सभी के लिए धन्यवाद। मैंने जामा को देखा है और मुझे क्लास मैट्रिक्स में 'det' विधि मिली है जो इसकी गणना करता है।मैंने मैट्रिक्स एल और यू (ए = एल * यू) की गणना करने के लिए विधियों को भी पाया और फिर det (ए) = det (एल) * det (यू) की गणना की। – dedalo