C++程序 单位矩阵

C++程序 单位矩阵

单位矩阵简介:

一个矩阵中,主对角线上所有元素都是1,其它位置都是0,这个矩阵就被称为 单位矩阵 。下面的图片展示了多个单位矩阵。

C++程序 单位矩阵

再引进一两个相关的术语:在线性代数里这有时叫 单位矩阵 ,从而得知这个矩阵(大小为 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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例