c语言实现矩阵的相关操作

  • 格式:docx
  • 大小:157.17 KB
  • 文档页数:26

下载文档原格式

  / 26
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法分析与设计课程论文

—通过C语言实现矩阵的相关操作

一.摘要

本文在Microsoft Visual Studio 2010的编译环境下,通过C语言进行一些矩阵的基本操作,包括矩阵的设置,加减乘除,数乘运算。求矩阵的逆等操作。

关键词

矩阵 C语言逆矩阵

二.正文

1.引言

矩阵的相关知识只是是高等数学的基础,但是其庞大的运算量和纷繁的步骤让人却步。虽然有Matlab等软件可以实现矩阵的相关操作,但是我校一些专业并不学习数学实验,故通过C语言实现矩阵的操作也是一种可行的方法,本文列举的了一些矩阵的加减乘除等基本运算规则,还有对矩阵进行转置,也有矩阵求逆的相关操作。

同时,还介绍了行列式的计算,通过运行该程序,可以大大简化行列式的计算量。

2.算法分析

矩阵的初始化

相关概念

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。

矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。

理论分析

在C语言中,可以使用二维数组来描绘一个矩阵。值得注意的是,在二维数组中,必须标明列数,否则编译器就会报错。故二维极其多维数组使用时要注意数组下标。

代码实现

#include

int main()

{

int juzheng [100][100];

int i , j , a , b ;

printf("请输入矩阵的行数a 列数b \n") ;

scanf ("%d %d",&a,&b);

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

scanf ("%d",&juzheng[i][j]);

}

}

printf ("你所输入的矩阵是:\n");

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

printf("%d ",juzheng[i][j]);

}

printf ("\n");

}

return 0;

}

矩阵的相加

相关概念

加法

矩阵的加法满足下列运算律(A,B,C都是同型矩阵):A+B=B+A

A+B+C=A+(B+C)

应该注意的是只有同型矩阵之间才可以进行加法

理论分析:

矩阵相加就是将两个矩阵的相同位置的元素相加,相加的值输出,通过循环语句,可以很好的实现该过程,如果要改成减法的话,就可以改成

printf(“%d”,juzhen1[i][j]-juzhen2[i][j])。

这样就可以实现矩阵的减法。

代码实现

#include

int main()

{

int juzheng1 [100][100],juzheng2[100][100];

int i , j , a , b ;

printf("请输入矩阵的行数a和列数b\n") ;

scanf ("%d %d",&a,&b);

printf("输入矩阵1\n");

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

scanf ("%d",&juzheng1[i][j]);

}

}

printf("输入矩阵2\n");

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

scanf ("%d",&juzheng2[i][j]);

}

}

printf ("您所输入的矩阵1是:\n");

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

printf("%d ",juzheng1[i][j]);

}

printf ("\n");

}

printf ("\n您所输入的矩阵2是:\n");

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

printf("%d ",juzheng2[i][j]);

}

printf ("\n");

}

printf ("\n您输出的矩阵是:\n");

for (i = 0;i < a ;i++)

{

for (j = 0;j < b ;j++)

{

printf("%d ",juzheng1[i][j]+juzheng2[i][j]);

}

printf ("\n");

}

return 0;