C++解决线性代数矩阵转置 小实践

简介: 【6月更文挑战第3天】C++解决线性代数矩阵转置

最近学习啦线性代数有关知识,于是想了一个利用数组解决线性代数中的矩阵转置问题


思路  

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


代码实现

    用户需要自定义输入第一个数组(程序中的数组代表线性代数中的矩阵),也就是需要转置运算的数组 A,定义分三个步骤进行:

1、定义该数组的行数

2、定义该数组的列数

3、定义该数组的元素

然后被定义的数组经程序运算,输出转置后的数组 B。

#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;
}


总结

  主要运用了线性代数及二维数组的特性知识点


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的点积可计算为如果A只有实数元素,则ATA是正半定矩阵。如果A是在某个域上,则A 相似于AT。

目录
相关文章
|
5天前
|
关系型数据库 MySQL 测试技术
技术分享:深入C++时间操作函数的应用与实践
技术分享:深入C++时间操作函数的应用与实践
11 1
|
16天前
|
存储 算法 安全
用C++打造极致高效的框架:技术探索与实践
本文探讨了如何使用C++构建高性能框架。C++凭借其高性能、灵活性和跨平台性成为框架开发的理想选择。关键技术和实践包括:内存管理优化(如智能指针和自定义内存池)、并发编程(利用C++的并发工具)、模板与泛型编程以提高代码复用性,以及性能分析和优化。在实践中,应注意代码简洁性、遵循最佳实践、错误处理和充分测试。随着技术发展,不断提升对框架性能的要求,持续学习是提升C++框架开发能力的关键。
26 1
|
20天前
|
C++
C++程序设计实践一下(题目来自杭州电子科技大学ACM)
C++程序设计实践一下(题目来自杭州电子科技大学ACM)
16 1
|
20天前
|
C++
C++程序设计实践一上(题目来自杭州电子科技大学ACM)
C++程序设计实践一上(题目来自杭州电子科技大学ACM)
12 2
|
27天前
|
C++
C++代码的可读性与可维护性:技术探讨与实践
C++代码的可读性与可维护性:技术探讨与实践
24 1
|
1月前
|
安全 算法 程序员
探索C++的魅力:语言特性、编程实践及代码示例
C++是广泛应用的编程语言,尤其在系统级编程、应用开发、游戏和嵌入式系统中广泛使用。其主要特性包括:面向对象编程(封装、继承、多态),泛型编程(通过模板实现代码复用和类型安全),以及丰富的标准库和第三方库。在编程实践中,需注意内存管理、异常处理和性能优化。示例代码展示了面向对象和泛型编程,如类的继承和泛型函数的使用。C++的内存管理和库支持使其在解决复杂问题时具有高效和灵活性。
|
1月前
|
程序员 编译器 C++
C++中的异常处理:技术详解与实践
C++中的异常处理:技术详解与实践
|
1月前
|
存储 算法 搜索推荐
C++编程之旅:深入理解与实践
**C++编程基础概览** C++是一种高效、灵活且功能强大的编程语言,适用于操作系统、游戏开发、网络编程等领域。它支持过程化、面向对象和泛型编程,包含丰富的数据类型、运算符、控制结构,并提供类、对象、继承等面向对象特性。C++标准模板库(STL)提供了向量、列表等数据结构和排序算法,便于开发。通过异常处理机制,C++能有效管理运行时错误。学习C++涉及深入理解其语法、数据类型、函数、面向对象概念以及如何利用STL来编写高效代码。
|
1月前
|
编译器 数据处理 C语言
C++编程的魅力与实践
C++是一种通用编程语言,融合了C语言的强大功能和面向对象编程特性。它支持编译型、类与对象、模板、异常处理等,提供高效的代码编写。文中通过一个计算两数之和的简单示例及一个展示面向对象编程的`Person`类,介绍C++基础与实践。C++的广泛应用和持续发展使其成为提升编程技能和探索技术未来的理想工具。
|
1月前
|
算法 程序员 编译器
C++编程的魅力及其实践
C++,由Bjarne Stroustrup于1983年创造,结合了高级和低级语言特性,提供面向对象编程(如类、继承、多态)及跨平台性。其模板和泛型编程增强了灵活性和效率。通过面向对象和内存管理,C++支持高性能优化,常用于复杂程序设计和资源敏感的项目。学习和运用C++能提升程序员的能力,构建高效、可维护的软件。