对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么

What is the simplest way for me to expand this program to calculate the inverse of up to a 10x10 matrix?

本文关键字:倒数 最简单 是什么 方法 10x10 扩展 于我 程序 计算      更新时间:2023-10-16

我下面的程序仅找到3x3矩阵的倒数,但是我想知道我是否有一种简单的方法将其展开以找到用户输入尺寸的倒数矩阵最大为10x10。谢谢

#include<iostream>
using namespace std;
int main()
{
    int mat[3][3], i, j;
    float determinant = 0;
    cout<<"Enter elements of the matrix:"<<endl;
    for(i = 0; i < 3; i++)
        for(j = 0; j < 3; j++)
           cin>>mat[i][j];

    //finding determinant
    for(i = 0; i < 3; i++)
        determinant = determinant + (mat[0][i] * (mat[1][(i+1)%3] * mat[2][(i+2)%3] - mat[1][(i+2)%3] * mat[2][(i+1)%3]));

    cout<<"nnInverse of matrix is: "<<endl;
    for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++)
            cout<<((mat[(j+1)%3][(i+1)%3] * mat[(j+2)%3][(i+2)%3]) - (mat[(j+1)%3][(i+2)%3] * mat[(j+2)%3][(i+1)%3]))/ determinant<<"t";
        cout<<endl;
    }
    return 0;
}

,或者您实际上是在问"我将如何构造此构建"以支持至10x10的矩阵?您可以为自己写一个由尺寸构建的类,内部大小的向量,并在外部发布数组操作员方法以充当外部数组维度。

class SquareMatrix
{
  std::vector<int> storage;
  unsigned int innerSize;
  SquareMatrix(unsigned int innerSize):
    innerSize(innerSize),
    storage(innerSize*innerSize,0)
  {}
  int* operator[](size_t index)
  {
    /* please do some error checking */
    return storage.data()+index*innerSize;
  }
};

您可以在输入尺寸后声明此矩阵的实例,然后像使用3x3矩阵一样使用它,但是您需要更多的脚手架才能计算到尺寸上,并确保您不'''t超过尺寸。

理想情况下,如果数组索引运算符返回另一个包含指向内部数组的指针和最大尺寸的对象,那会更好,因此其数组运算符可能会再次错误检查。

适当的面向对象的答案是您的逆函数应该是矩阵类的成员。

是的,您将不得不工作数学以进行更多的列和行。