C++程序 单位矩阵
单位矩阵简介:
一个矩阵中,主对角线上所有元素都是1,其它位置都是0,这个矩阵就被称为 单位矩阵 。下面的图片展示了多个单位矩阵。
再引进一两个相关的术语:在线性代数里这有时叫 单位矩阵 ,从而得知这个矩阵(大小为 n x n)的主对角线上的元素都是1,其它位置为0。可以用“I”、 “U” 或 “E”来表示单位矩阵。
单位矩阵的一个特性是:如果一个矩阵乘以一个单位矩阵,那么这个矩阵本身不会改变。
例子:
输入 : 2
输出 : 1 0
0 1
输入 : 4
输出 : 1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
解释如下:将主对角线上的元素都设置为1,其它位置都为0。
打印单位矩阵的程序:
这个程序的逻辑也很简单:在那些行数等于列数的位置打印1,其它位置都打印0。
// C++ program to print Identity Matrix
# include<bits/stdc++.h>
using namespace std;
int Identity(int num)
{
int row, col;
for (row = 0; row < num; row++)
{
for (col = 0; col < num; col++)
{
// 验证是否在主对角线上
if (row == col)
cout << 1 << " ";
else
cout << 0 << " ";
}
cout << endl;
}
return 0;
}
// 驱动程序
int main()
{
int size = 5;
Identity(size);
return 0;
}
// This code is contributed by shubhamsingh10```
输出:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
时间复杂度: O(n^2),其中 n 是矩阵中行和列的数目。
辅助空间: O(1)
检查一个正方形矩阵是否是单位矩阵的程序:
// CPP program to check if a given matrix is identity
# include<iostream>
using namespace std;
const int MAX = 100;
bool isIdentity(int mat[][MAX], int N)
{
for (introw = 0; row < N; row++)
{
for (int col = 0; col < N; col++)
{
if (row == col && mat[row][col] != 1)
return false;
else if (row != col && mat[row][col] != 0)
return false;
}
}
return true;
}
// 驱动程序
int main()
{
int N = 4;
int mat[][MAX] = {{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1}};
if (isIdentity(mat, N))
cout << "Yes ";
else
cout << "No ";
return 0;
}
输出:
Yes
时间复杂度 : O(n^2),其中n是矩阵中行和列的数目。
辅助空间: O(1)