【问题标题】:How do I solve inverse of 3x3 matrices without using a library?如何在不使用库的情况下求解 3x3 矩阵的逆矩阵?
【发布时间】:2020-09-20 16:54:16
【问题描述】:
 <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 所拥有的,但我很好奇如何在不使用库的情况下做到这一点。

【问题讨论】:

  • 笔和纸你会怎么做?
  • 在堆栈上获得帮助的最佳方法是将您尝试解决问题的代码(现在,您只是要求一个直接的、完整的代码解决方案)并告诉您在哪里卡住了。

标签: javascript math matrix inversion


【解决方案1】:

确保矩阵“满”,如:没有缺失值。
以下代码也适用于行数!=列数的矩阵。

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,2,3],[4,5,6],[7,8,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; }

【讨论】:

  • 您的代码似乎用于计算矩阵的转置。一般来说,这不是相反的
  • @dmuir,你是对的。我误读/误解了这个问题。当我学习矩阵时,它不是英语=这导致(太多)误解......我仍然必须停下来思考当遇到“顶点”和“边缘”时哪个是点,哪个是线,例如...我很快就会为“Inverse”编写代码。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-15
相关资源
最近更新 更多