数据结构实验之矩阵的运算器(二维数组)

这篇具有很好参考价值的文章主要介绍了数据结构实验之矩阵的运算器(二维数组)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 实验目的
  1. 掌握并学会运用数组及相关知识
  2. 掌握矩阵相关运算的代码实现
  3. 学会小组的分工与合作
  4. 体会封装的好处
  • 实验任务及要求

要求实现矩阵的计算器,能供用户选择不同菜单,进而实现不同存储形式及调用相应计算的算法,并记录运算过程。

运算程序主要包括:①矩阵的加减于数乘;②矩阵的转置;③矩阵的乘法;④矩阵的n次方;⑤矩阵的行列式的值。

  • 小组成员及分工:

三、本人负责板块

实验侧重点:矩阵的n次方,代码的分析及改错

主要思想:

只有方阵才可以进行矩阵的n次方

在得到这一个矩阵之后,首先进行n次的选择

如果n=0,那么就是单位矩阵,只需要令对角线等于1,其他为0

如果n=1,那么就是他本身

当n大于1的时候,n为2是a*a,再之后就是用上一次的结果*a,令一个矩阵d,存为a*a,又它来存储每次的结果,用f=a*d,每次将f的结果给了d用作循环,最后一次f中为矩阵的n次方

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

  • 系统功能
  1. 矩阵的加法:用户输入两个矩阵,执行相加操作
  2. 矩阵的减法:用户输入两个矩阵,执行相减操作
  3. 矩阵的数乘:用户输入一个矩阵和一个数,执行数乘操作
  4. 矩阵的转置:用户输入一个矩阵,返回其转置矩阵
  5. 矩阵的乘法:用户输入两个矩阵,执行相乘操作
  6. 矩阵的n次方:用户输入一个矩阵与其要进行的次方数
  7. 矩阵的逆矩阵:用户输入一个矩阵,返回其逆矩阵
  • 实验基本原理

1、矩阵的加减:

首先由用户输入两个矩阵,系统进行判断

if(a->row!=b->row||a->col!=b->col)//不符合相加、减条件,进行报错

else{

   c->row=a->row;   /*符合相加、相减条件,输入矩阵规模参数*/

c->array[i][j].data=0;

  c->array[i][j].data=a>array[i][j].data+b->array[i][j].data;

         }判断符合后,根据矩阵运算规则进行运算。

2、矩阵的数乘:

 用户输入一个矩阵,输入要乘的数(整型)进行运算

   c>array[i][j].data=a>array[i][j].data*x

3、矩阵的转置:

实现矩阵转置需要两个矩阵:一个是用户输入的原矩阵,另一个是新定义的矩阵—用来存储转置后的矩阵。原矩阵与转置矩阵的关系主要有两点:

①行数与列数相反

②aij=bji所以在代码实现时,只需要完成这两个任务即可

4、矩阵的乘法:

①首先根据矩阵所学知识a,b分别为两个矩阵,a为m*n的矩阵。b为n*s的矩阵。a的列数必须与b的行相等。

  if (a->col!=b->row)/*两个矩阵能否相乘进行判断*/

         printf("\n两个矩阵不匹配,不能相乘!");

②满足上述a与b能够相乘的条件之后,首先对想乘之后的c进行行列规模规定

            c->row=a->row;   /*输入矩阵规模参数*/

            c->col=b->col;

③进行完上述操作之后将对c进行赋值,将c变为0矩阵,然后进行a*b的操作

            for(i=0;i<c->row;++i)

5、矩阵的n次方:

只有方阵才可以进行矩阵的n次方在得到这一个矩阵之后,首先进行n次的选择。如果n=0,那么就是单位矩阵,只需要令对角线等于1,其他为0;如果n=1,那么就是他本身;当n大于1的时候,n为2是a*a,再之后就是用上一次的结果*a,令一个矩阵d,存为a*a,又它来存储每次的结果,用f=a*d,每次将f的结果给了d用作循环,最后一次f中为矩阵的n次方

6、矩阵的行列式:

         ①本实验采用,将行列式按第一行展开,第一行各个元素与其对应的代数余子式的乘积之和即为行列式的值

          ②利用递归的思想,假设计算n阶行列式的值,则需计算n-1阶的代数余子式,也就是n-1阶行列式,......一直递归下去,直至求解2阶代数余子式(行列式),2阶行列式的值则可通过主对角元素乘积与次对角元素乘积之差求得。值得注意的是,代数余子式需判断其正负!

  • 实验输入输出数据

用户输入:                   

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

矩阵加减:

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

矩阵的数乘与转置:

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

矩阵的乘法与行列式的值:

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

矩阵的n次方:

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

  • 实验过程发生的问题

但是在函数中中采用MulMat(&a,&a,&d); 调用矩阵的乘法函数,却显示

数据结构实验之矩阵的运算器(二维数组),数据结构实验,数据结构

如果采用MulMat(a,a,d); 却可以

为什么在主函数中调用函数给的参数,需要&,而在函数中却不可以用

  • 心得体会

1、编写一个程序时,先从问题出发,梳理有关问题所学知识,搞清楚其中的原理,先用手算进行演示,然后再思考如何用代码实现,以及遇到多种实现方法时那种更简便。

2、小组合作完成一个任务时,要分工合理明确,首先要确定小组使用编译器、使用的编程语言等基本且重要的问题,其次是选择大部分人可以接受并完成代码的难易程度,最后遇到问题共同解决问题,互帮互助,共同成长。文章来源地址https://www.toymoban.com/news/detail-791666.html

到了这里,关于数据结构实验之矩阵的运算器(二维数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 西电计组实验二 运算器实验

    一.实验目的   1.了解简单运算器的数据传输通路。   2.验证运算功能发生器的组合功能。   3.掌握算术逻辑运算加、减、与的工作原理。   4.验证实验台运算的8位加、减、与、直通功能。   5.按给定数据,完成几种指定的算术和逻辑运算。 二.实验原理   算

    2024年02月06日
    浏览(32)
  • 计算机组成原理实验——实验1 运算器实验

    (1)掌握算术逻辑运算单元的工作原理。 (2)熟悉简单运算器的电路组成。 (3)熟悉4位运算功能发生器(74LS181)的算术、逻辑运算功能。 (1)做好实验预习,看懂电路图,熟悉实验中所用芯片各引脚的功能和连接方法。 (2)按照实验内容与步骤的要求,认真仔细地完

    2024年02月12日
    浏览(29)
  • Logism · MIPS运算器设计 实验

        利用前面实验封装好的32位加法器以及 Logisim 平台中现有运算部件,构建一个32位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符

    2023年04月26日
    浏览(30)
  • 头歌计组运算器设计(HUST) 1-11关实验答案

    本实验使用 Verilog HDL 实现了单周期 54 条 MIPS 指令的 CPU 的设计、前仿真、后仿真和下板调试运行。CPU 可实现 54 条 MIPS 指令。(详细论述所设计作品的功能) 本实训项目帮助学生从可控加减法单元,先行进位电路,四位快速加法器逐步构建 16 位、32 位快速加法器。学生还可

    2023年04月23日
    浏览(27)
  • 头歌计算机组成原理实验—运算器设计(4)第4关:16位快速加法器设计

    实验目的 帮助学生理解成组进位产生函数,成组进位传递函数的概念,熟悉 Logisim 平台子电路的概念,能利用前述实验封装好的4位先行进位子电路以及4位快速加法器子电路构建16位、32位、64位快速加法器,并能利用相关知识分析对应电路的时间延迟,理解电路并行的概念。

    2024年02月05日
    浏览(66)
  • 2.6 浮点运算方法和浮点运算器

      以下是一些具体的学习目标: 理解浮点数的基本概念和表示方法,包括符号位、指数和尾数。 学习浮点数的运算规则和舍入规则,包括加、减、乘、除、开方等。 了解浮点数的常见问题和误差,例如舍入误差、溢出、下溢等,并学会如何处理这些问题。 理解浮点运算器的

    2024年02月01日
    浏览(39)
  • 基于FPGA的求模运算器

    目录 1、 简介 1.1 系统的目的 1.2 系统的背景 2、 需求概括 2.1 系统需求 2.2 当前系统问题 3、 建议的系统 3.1 设计重点 3.2 系统的原理 3.2.1 算法框图 3.3 数据预处理部分 3.4 迭代算法的核心部分 3.5 收敛判断 3.6 输出格式化 3.7 模块接口信号 3.9 仿真测试 4、 系统分析 4.1 精度分析

    2024年01月23日
    浏览(32)
  • CPU运算器、控制器、寄存器

    CPU内部主要由运算器、控制器、寄存器三大部分组成。 运算器 负责算术运算(+ - * / 基本运算和附加运算)和逻辑运算(包括 移位、逻辑测试或比较两个值等)。 控制器 负责应对所有的信息情况,调度运算器把计算做好。 寄存器 它们可用来暂存指令、数据和地址。既要对

    2024年02月15日
    浏览(21)
  • 基于FPGA的查表式运算器的设计与仿真

    随着我国的经济的发展,人们要求计算的方法更好简单和方便,尤其是在计算这个方面,所以对于运算器的设计是非常的重要的,所以为了更好的设计该设计采用了现场可编程逻辑器件FPGA设计,并基于硬件描述语言VHDL在Altera公司的Quartus Ⅱ软件上实现仿真。系统由计算部分、

    2024年02月04日
    浏览(32)
  • Python四则运算“计算器”——整数口算练习“小程序”

    设定练习题目数量、最大取值整数数,即时判定,答对鼓励答错打印正确结果。 【学习的细节是欢悦的历程】 Python 官网 :https://www.python.org/ Free :大咖免费“ 圣经 ”教程《 python 完全自学教程 》,不仅仅是基础那么简单…… 地址:https://lqpybook.readthedocs.io/   自学并不是

    2024年02月07日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包