gpt4 book ai didi

c++ - 扩展此程序以计算最大 10x10 矩阵的逆矩阵的最简单方法是什么?

转载 作者:行者123 更新时间:2023-11-28 04:47:27 27 4
gpt4 key购买 nike

我下面的程序只找到一个 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<<"\n\nInverse 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 的矩阵?您可以自己编写一个类,该类由维度构成,在内部调整 vector 大小,并在外部发布数组运算符方法作为外部数组维度。

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 超出尺寸。

理想情况下,如果数组索引运算符返回另一个包含指向内部数组的指针和最大维度的对象会更好,这样它的数组运算符可以再次进行错误检查。

正确的面向对象的答案是你的反函数应该是你的矩阵类的成员。

是的,您将不得不进行数学计算以处理更多的列和行。

关于c++ - 扩展此程序以计算最大 10x10 矩阵的逆矩阵的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48981167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com