如何在不使用库的情况下求解3x3矩阵的逆矩阵?

问题描述

 <html>
<head>
  <script language="JavaScript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.2.1/math.js"></script>
</head>
<body>
  <p id="result">loading result...</p>
  <script> 
   var inverted = math.inv([[1,2,4],[3,4,5],[7,8,9]]);
  document.getElementById("result").textContent = JSON.stringify(inverted);
  </script>
</body>
</html>

这是我使用math.js的方式,但是我很好奇我如何不使用库就可以做到这一点。

解决方法

确保矩阵为“已满”,例如:没有缺失值。
以下代码也可用于行数等于列数的矩阵。

var originalMatrix=[[1,2,3],[4,5,6],[7,8,9]];
function invertMatrix(matrix) {
  return matrix.reduce(
    (acc,cv)=> {
      cv.reduce(
        (acc2,cv2,idx2)=> {
          if(acc[idx2]==undefined) acc[idx2]=[];
          acc[idx2].push(cv2);
        },[]
      );
      return acc;
    },[]
  );
};

console.log(originalMatrix);
console.log(invertMatrix(originalMatrix));
console.log(invertMatrix(invertMatrix(originalMatrix)));

var anotherMatrix=[[1,9],[10,11,12],[13,14,15]];

console.log(anotherMatrix);
console.log(invertMatrix(anotherMatrix));
console.log(invertMatrix(invertMatrix(anotherMatrix)));
.as-console-wrapper { max-height: 100% !important; top: 0; }