Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Anda boleh menggunakan JavaScript untuk mencari matriks songsang
Penyongsangan matriks ialah pengiraan penting dalam algebra linear Ia sering digunakan dalam pengiraan matematik dan amalan kejuruteraan, seperti menyelesaikan sistem persamaan, mengira matriks transformasi, dsb. Artikel ini memperkenalkan cara menggunakan bahasa JavaScript untuk melaksanakan fungsi menyongsangkan matriks.
1. Pengetahuan asas algebra linear
Sebelum memperkenalkan cara menyongsangkan matriks dalam JavaScript, kita perlu memahami beberapa pengetahuan asas tentang algebra linear.
Matriks ialah jadual nombor segi empat tepat, yang terdiri daripada m baris dan n lajur Ia boleh dinyatakan sebagai:
A = [a1,1 a1,2 ... a1,n
a2,1 a2,2 ... a2,n ... ... ... ... am,1 am,2 ... am,n]
Vektor ialah matriks lajur dan boleh dinyatakan sebagai:
v = [v1
v2 ... vn]
Tambahan dan pendaraban matriks ialah operasi antara unsur yang sepadan. Hasil penambahan matriks ialah penambahan unsur sepadan dua matriks. Hasil pendaraban matriks ialah baris-baris matriks pertama yang didarab dengan lajur matriks kedua dan kemudian dijumlahkan.
Transpose matriks ialah matriks baharu yang diperoleh dengan menukar baris dan lajur matriks. Contohnya:
A = [1 2 3
4 5 6]
A' = [1 4
2 5 3 6]
Matriks Songsangan ialah matriks, dan hasil darabnya dengan matriks asal ialah matriks identiti. Matriks identiti ialah matriks dengan 1s pada pepenjuru utama dan 0s di tempat lain.
Jika songsangan matriks A ialah A^-1, maka A A^-1 = A^-1 A = I.
Perhatikan bahawa hanya matriks segi empat sama boleh diterbalikkan.
2. Gunakan JavaScript untuk melaksanakan matriks songsang
Melaksanakan matriks songsang dalam JavaScript memerlukan beberapa pengetahuan asas matematik dan algoritma. Di bawah ini kami akan memperkenalkan kaedah pelaksanaan khusus langkah demi langkah.
Mencari penentu matriks ialah langkah pertama dalam menyelesaikan songsangan matriks. Penentu ialah nilai berangka yang mewakili hasil darab unsur pepenjuru matriks tolak hasil darab unsur luar pepenjuru. Contohnya:
A = [1 2 3
4 5 6 7 8 9]
|A| = 1 5 9 + 2 6 7 + 3 4 8 - 3 5 7 - 2 4 9 - 1 6 8 = 0
Kita boleh menggunakan rekursi untuk menyelesaikan Mod baris dan lajur. Apabila saiz matriks ialah 1x1, penentu adalah sama dengan nilai unsur apabila saiz matriks ialah 2x2, penentu adalah sama dengan hasil darab unsur kiri atas dan kanan bawah tolak dengan hasil darab unsur kanan atas dan kiri bawah apabila saiz matriks Apabila lebih besar daripada 2x2, penentu adalah sama dengan hasil tambah penentu submatriks yang terdiri daripada elemen pertama setiap baris dan unsur selebihnya didarab dengan sepadan. pekali.
Berikut ialah kod JavaScript untuk menyelesaikan penentu:
function det(A) {
var n = A.length; if (n === 1) { return A[0][0]; } else if (n === 2) { return A[0][0] * A[1][1] - A[0][1] * A[1][0]; } else { var sum = 0; for (var i = 0; i < n; i++) { var submatrix = []; for (var j = 1; j < n; j++) { submatrix.push(A[j].slice(0, i).concat(A[j].slice(i + 1))); } var sign = Math.pow(-1, i); var cofactor = sign * det(submatrix); sum += A[0][i] * cofactor; } return sum; }
}
Matriks bersebelahan matriks (matriks adjugate) ialah hasil darab songsang matriks dan penentunya. Setiap elemen matriks bersebelahan ialah kofaktor algebra bagi matriks.
Contohnya, untuk matriks 3x3 berikut:
A = [1 2 3
4 5 6 7 8 9]
Matriks bersebelahannya ialah:
adj(A) = [ -3 6 -3
6 -12 6 -3 6 -3 ]
Untuk menyelesaikan matriks bersebelahan, anda boleh menggunakan kod JavaScript berikut:
fungsi adj(A) {
var n = A.length; var adjA = []; for (var i = 0; i < n; i++) { adjA[i] = []; for (var j = 0; j < n; j++) { var submatrix = []; for (var k = 0; k < n; k++) { if (k !== i) { submatrix.push(A[k].slice(0, j).concat(A[k].slice(j + 1))); } } var sign = Math.pow(-1, i + j); adjA[i][j] = sign * det(submatrix); } } return adjA;
}
Untuk mencari songsangan matriks, anda perlu terlebih dahulu mencari matriks bersebelahan dan penentu matriks, dan kemudian mengikut formula A ^-1 = adj(A) / |A|, iaitu matriks Matriks songsang diperoleh dengan membahagikan matriks bersebelahan dengan penentunya.
Berikut ialah kod JavaScript untuk menyelesaikan matriks songsang:
fungsi songsang(A) {
var n = A.length; var detA = det(A); if (detA === 0) { console.log("Matrix is not invertible."); return null; } var adjA = adj(A); var Ainv = []; for (var i = 0; i < n; i++) { Ainv[i] = []; for (var j = 0; j < n; j++) { Ainv[i][j] = adjA[j][i] / detA; } } return Ainv;
}
Kami boleh mengesahkan ketepatan kod JavaScript di atas untuk menyelesaikan matriks songsang melalui kod ujian mudah:
var A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
console.log("A = ");
console.log(A);
var Ainv = songsang(A) ;
console.log("Ainv = ");
console.log(Ainv);
var I = numeric.dot(A, Ainv);
console.log(" A * Ainv = ");
console.log(I);
Hasil output hendaklah seperti berikut:
A =
[ [ 1, 2, 3 ] ,
[ 4, 5, 6 ],
[ 7, 8, 9 ] ]
Ainv =
[ [ -0.5000000000000001, 1, -0.5 ],
[ 1, -🎜> , 1 ] ,
[ -0.5000000000000001, 1, -0.5 ] ]
A * Ainv =
[ [ 1, 0, 0 ],
[ 0, 0.9999,9999 [ 3.33066907387 54696e -16, 0, 1 ] ]
Atas ialah kandungan terperinci Anda boleh menggunakan JavaScript untuk mencari matriks songsang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!