吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1001|回复: 10
收起左侧

[C&C++ 原创] C++解决线性代数矩阵转置

[复制链接]
爱学习的小妖精 发表于 2024-6-17 10:32
    最近学习啦线性代数有关知识,于是想了一个利用数组解决线性代数中的矩阵转置问题

思路   
   由线性代数相关知识点,如果将第一个矩阵的所有元素绕着一条从第一行第一列出发的右下角 45° 的射线做镜面反转,那么就可得到这个矩阵的一个转置矩阵。

代码实现
    用户需要自定义输入第一个数组(程序中的数组代表线性代数中的矩阵),也就是需要转置运算的数组 A,定义分三个步骤进行:
1、定义该数组的行数
2、定义该数组的列数
3、定义该数组的元素
然后被定义的数组经程序运算,输出转置后的数组 B。


[C++] 纯文本查看 复制代码
#include <stdio.h>
int main()
{
    int i,j,i1,j1,a[101][101],b[101][101];
    printf("please input the number of rows(<=100)\n");
    scanf("%d",&i1);
    printf("please input the number of columns(<=100)\n");
    scanf("%d",&j1);
    printf("please input the element\n");
    for(i=0;i<i1;i++)
        for(j=0;j<j1;j++)
            scanf("%d",&a[i][j]);
    printf("array a:\n");
    for(i=0;i<i1;i++)
    {
        for(j=0;j<j1;j++)
            printf("\t%d",a[i][j]);
        printf("\n");
    }
    for(i=0;i<i1;i++)
        for(j=0;j<j1;j++)
            b[j][i]=a[i][j];
    printf("array b:\n");
    for(i=0;i<j1;i++)
    {
        for(j=0;j<i1;j++)
            printf("\t%d",b[i][j]);
        printf("\n");
    }
    return 0;
}


image.png
总结
  主要运用了线性代数及二维数组的特性知识点

1、 二维数组的第一个下标表示行数,第二个下标表示列数,每个下标都是从 0 开始;

2、 类型说明符、数组名和常量表达式的意义与一维数组相同;

3、 二维数组的元素在内存中是“按行存放”,即在内存中先顺序存放第一行的元素,再存放第二行的元素,以此类推;

4、 可以把二维数组看作一种特殊的一维数组,其特殊之处在于它的每一个元素又是一维数组。



5、把m*n矩阵的行列互换之后得到的矩阵,称为的转置矩阵
性质对于矩阵A, B和标量c转置有下列性质:转置是自身逆运算。转置是从m × n矩阵的向量空间到所有n × m矩阵的向量空间的线性映射。注意因子反转的次序。以此可推出方块矩阵A是可逆矩阵,当且仅当AT是可逆矩阵,在这种情况下有 (A&#8722;1)T = (AT)&#8722;1。相对容易的把这个结果扩展到矩阵相乘的一般情况,可得出 (ABC...XYZ)T = ZTYTXT...CTBTAT。标量的转置是同样的标量。矩阵的转置矩阵的行列式等于这个矩阵的行列式。两个纵列向量a和b的点积可计算为[url=][/url]如果A只有实数元素,则ATA是正半定矩阵。如果A是在某个域上,则A 相似于AT。

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 爱学习的小妖精 发表于 2024-6-17 14:13
柒妖妖 发表于 2024-6-17 12:08
老哥你这是什么软件 编译的C++

我用的DEV-C++
turmasi1234 发表于 2024-6-17 11:16
lovesx 发表于 2024-6-17 11:19
夏日已末 发表于 2024-6-17 11:27
C++有个库叫eigen,专门做矩阵运算的,楼主有兴趣也可以看看
fast123 发表于 2024-6-17 11:29
可以可以
 楼主| 爱学习的小妖精 发表于 2024-6-17 11:33
夏日已末 发表于 2024-6-17 11:27
C++有个库叫eigen,专门做矩阵运算的,楼主有兴趣也可以看看

噢噢 好的大佬 我研究研究
柒妖妖 发表于 2024-6-17 12:08
老哥你这是什么软件 编译的C++
HalfAnElephant 发表于 2024-7-26 16:44
楼主可以考虑把矩阵常用的操作,如加、减、乘、转置等,封装成一个class,可以当作一个很好的练手项目。之后还可以引入thread库多线程加速、范型等。
david1986 发表于 2024-11-20 08:22
math库里都有源码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-16 05:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表