对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么
What is the simplest way for me to expand this program to calculate the inverse of up to a 10x10 matrix?
我下面的程序仅找到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超过尺寸。
理想情况下,如果数组索引运算符返回另一个包含指向内部数组的指针和最大尺寸的对象,那会更好,因此其数组运算符可能会再次错误检查。
适当的面向对象的答案是您的逆函数应该是矩阵类的成员。
是的,您将不得不工作数学以进行更多的列和行。
相关文章:
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 请求最简单的 OpenMP 目标 GPU 示例
- 将时间戳打印到流的最简单方法
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- C++20 个模块在 clang (Windows):在最简单的示例中键入信息错误
- 对多个(可能)重叠范围进行分区的最简单算法
- 在 cpp 中最简单的图形实现
- boost::variant - 对变体应用算术的最简单方法
- 多线程 gtkmm 应用程序最简单的示例
- 创建可以遍历 std::map 值的通用模板迭代器的最简单方法是什么?
- 在C++中将算术类型转换为 std::array 的最简单方法<uint8_t>
- 标准库容器最简单、性能差的哈希类是什么?
- C++-将ASCII字符数组中可能的数值转换为字符的最简单方法
- 无法获得最简单的JNI足以在Windows 10上运行
- 从 txt 文件中读取数据的最简单方法
- 根据浮点符号对浮点进行舍入的最简单方法是什么
- 最简单的事件设计模式是什么
- 对于我扩展此程序来计算最高10x10矩阵的倒数的最简单方法是什么