搜档网
当前位置:搜档网 › 高等代数论文

高等代数论文

高等代数论文
高等代数论文

高等代数论文

矩阵在生产生活方面的应用

指导老师李思泽

运输1512 崔粲 15251169

知行1501 徐鹏宇 15291200

目录

【摘要】 (2)

【关键词】 (2)

【Abstract】 (2)

【Key words】..................................... 错误!未定义书签。【实际应用举例】 (3)

1. 计算网络中的流 (3)

1.1 交通流分析 (3)

1.2 程序运行代码 (5)

1.3 程序运行截图 (8)

1.4 程序运行代码(2) (9)

1.5程序运行截图(2) (13)

2.电路分析 (13)

2.2程序运行代码 (15)

2.3 程序运行截图 (18)

【论文总结】...................................... 错误!未定义书签。【参考文献】...................................... 错误!未定义书签。

摘要

近二十年来,随着计算机技术的蓬勃发展,利用计算机的符号计算系统对代数中可计算问题形成了计算代数这个新的方向,本文主要通过对于矩阵的应用实例来说明代数在实际生活中的应用。随着科学技术的发展,数学也越来越贴近我们的生活,可以说是息息相关。我们在学习数学知识的同时,也不能忘记将数学知识应用于生活。在学习高等代数的过程中,我们发现代数在生活和实践中都有不可缺少的的位置。本篇论文中,我们就对代数中的矩阵在交通流量分析,电路分析的应用进行了探究并编写了相关程序。

【关键词】高等代数,矩阵,实际,应用,电路分析,交通流

Abstract

In recent twenty years, with the rapid development of computer technology, using computer symbol computing system of algebra computational problems form the computational algebra in this new direction. This paper mainly through the matrix of the application examples to illustrate the application of algebra in real life. With the development of science and technology, mathematics is more and more close to our life, it can be said that it is closely related to the development of science and technology. At the same time, we can not forget to apply mathematical knowledge to life. In the course of learning advanced algebra, we found that the algebra has an indispensable position in life and practice. In this thesis, we study the application of the matrix in the

analysis of the traffic flow and the application of the circuit analysis.

【Key words】Higher algebra,Practical,Matrix,Application,Circuit analysis,Traffic flow

【实际应用举例】

1.计算网络中的流

在这一部分中,我们将介绍网络以及确定网络中流量的方法,网络的一个应用就是如图所示的单行道系统

网络包括分支和节点,对于图1所示的单行道网络,分支是道路,节点是交叉路口,我们假定对于一个网络,进入一个节点的总流等于离开该节点的总流。

例1 1)建立一个方程组来表示如图2所示网络的交通流(数字给出的是高峰交通时段进出网络的平均流量)

2)求解该方程组。若x6=300,x7=1300车次每小时,则交通流量是多少?

解:1)如图,由于进入一个节点的流等于离开的流,我们得到如下的方程组

{

x1+x2=800 x1+x4=400+x2 x2=600+x3

1600+x3=400+x7 x7=x4+x6

x5+x6=1000

上述方程组的增广矩阵为(

10

1?1

00

01

10

00

0800

0400

01

00

?10

10

00

00

0600

?1?1200

)

因此,解为

x6=x1+200

x2=x7?600

图 1

x3=x7?1200

x4=x7?x6

x5=1000?x6

如果x6=300,x7=1300,那么

x1=100,x2=700,x3=100,x4=1000,x5=700

通常我们要求网络中的流量是非负的,比如,仔细考虑图2中的交通网络,如果x5是负的,这既意味着流量是从F到E的,而不是指定的从E到F的方向。

C语言程序为:

#include "stdio.h"

int main (void)

{

int x1,x2,x3,x4,x5,x6,x7,f1,f2,f3,f4,f5,f6,f7,i,j;

printf("请输入从A流入的车流量:\n");

scanf("%d",&f1);

printf("请输入从B流出的车流量:\n");

scanf("%d",&f2);

printf("请输入从C流出的车流量:\n");

scanf("%d",&f3);

printf("请输入从D流入的车流量:\n");

scanf("%d",&f4);

printf("请输入从D流出的车流量:\n");

scanf("%d",&f5);

printf("请输入从F竖直流出的车流量:\n");

scanf("%d",&f6);

printf("请输入从F水平流出的车流量:\n");

scanf("%d",&f7);

//录入增广矩阵

int a[6][8]={1,0,0,0,1,0,0,f1,

1,-1,0,1,0,0,0,f2,

0,1,-1,0,0,0,0,f3,

0,0,1,0,0,0,-1,f5-f4,

0,0,0,1,0,1,-1,0,

0,0,0,0,1,1,0,f6+f7};

//将增广矩阵化为等价标准型

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

a[1][i]=a[1][i]-a[0][i]+a[2][i]+a[3][i]-a[4][i];

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

a[2][i]=a[2][i]+a[3][i];

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

a[0][i]=a[0][i]-a[5][i];

printf("请输入x6:\n");

scanf("%d",&x6);

printf("请输入x7:\n");

scanf("%d",&x7);

x1=a[0][7]+x6;

x2=a[2][7]+x7;

x3=a[3][7]+x7;

x4=a[4][7]+x7-x6;

x5=-x6-a[1][7];

printf("矩阵的等价标准型为\n\n");

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

{

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

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

printf("\n");

}

printf("\n解得\n");

printf("x1为%d\n",x1);

printf("x2为%d\n",x2);

printf("x3为%d\n",x3);

printf("x4为%d\n",x4);

printf("x5为%d\n",x5);

return 0;

}

程序运行截图:

例2 考虑例一中的的交通网络(见图2),假设从A到B和从B到C 的道路必须关闭(即x1=0,x2=0),交通将会怎样变更线路?

解根据例1,车流量为

x6=x1+200

x2=x7?600

x3=x7?1200

x4=x7?x6

x5=1000?x6

因此,如果x1=0,x2=0,那么可得x6=200,,x7=600.有这些值我们接着可以得x3=?600,x4=400,x5=800 ,为了使流量非负,我们必须把从C到D的道路方向反过来,这一改变就使x3=600而不是-600。

C语言程序为:

#include "stdio.h"

int main (void)

{

int x1,x2,x3,x4,x5,x6,x7,f1,f2,f3,f4,f5,f6,f7,i,j;

printf("请输入从A流入的车流量:\n");

scanf("%d",&f1);

printf("请输入从B流出的车流量:\n");

scanf("%d",&f2);

printf("请输入从C流出的车流量:\n");

scanf("%d",&f3);

printf("请输入从D流入的车流量:\n");

scanf("%d",&f4);

printf("请输入从D流出的车流量:\n");

scanf("%d",&f5);

printf("请输入从F竖直流出的车流量:\n");

scanf("%d",&f6);

printf("请输入从F水平流出的车流量:\n");

scanf("%d",&f7);

//录入增广矩阵

int a[6][8]={1,0,0,0,1,0,0,f1,

1,-1,0,1,0,0,0,f2,

0,1,-1,0,0,0,0,f3,

0,0,1,0,0,0,-1,f5-f4,

0,0,0,1,0,1,-1,0,

0,0,0,0,1,1,0,f6+f7};

//将增广矩阵化为等价标准型

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

a[1][i]=a[1][i]-a[0][i]+a[2][i]+a[3][i]-a[4][i];

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

a[2][i]=a[2][i]+a[3][i];

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

a[0][i]=a[0][i]-a[5][i];

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

{

a[3][i]=a[3][i]-a[2][i];

a[4][i]=a[4][i]-a[2][i];

a[1][i]=a[1][i]-a[0][i];

a[4][i]=a[4][i]+a[0][i];

}

printf("请输入x1:\n");

scanf("%d",&x1);

printf("请输入x2:\n");

scanf("%d",&x2);

x6=-a[0][7];

x5=-a[1][7];

x7=-a[2][7];

x3=a[3][7];

x4=a[4][7];

printf("矩阵的等价标准型为\n\n");

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

{

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

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

printf("\n");

}

printf("\n解得\n");

printf("x1为%d\n",x1);

printf("x2为%d\n",x2);

printf("x3为%d\n",x3);

printf("x4为%d\n",x4); printf("x5为%d\n",x5);

printf("x6为%d\n",x6); printf("x7为%d\n",x7);

return 0;

}

程序运行截图:

1.电路分析

我们现在考虑如图3的简单电路的电流,对于这样的电路网络,电流受欧姆定律和基尔霍夫定律支配,如下

欧姆定律:通过一个电阻的电压,等于电流与电阻的乘积 基尔霍夫第一定律:流入节点的电流之和等于流出节点的电流之和

基尔霍夫第二定律:沿闭合回路的电压降的代数和,等于回路的总电压

(注意:对于基尔霍夫第二定律而言,图3中的两个基本闭合回路是逆时针路径BDCB 和BCAB.并且,在每个支路中,我们对于电流的方向做了初步的设定,如果某个电流结果是负的,那我们就把对该支路设定的方向反过来.)

例3 求如图3所示的电路的电流I 1,I 2,I 3.

图3

解 对回路BDCB 和BCAB 运用基尔霍夫第二定律,我们得到方程

?10I 2+10I 3=10 20I 1+10I 2=5

对任意节点B 或C 应用基尔霍夫第一定律我们得到

I 1?I 2?I 3=0

这三个方程组成的方程组的增广矩阵为

1?10?102010?1010100

5

因此电流为I 1=0.4,I 2=?0.3,I 3=0.7.

因为I 2是负的,所以电流方向是从C 到B 而不是如同3初步设定的那样从B 到C 。

C 语言程序为: #include "stdio.h" int main (void) {

int r1,r2,r3,u1,u2,i,j; double i1,i2,i3; printf("请输入R1:\n"); scanf("%d",&r1); printf("请输入R2:\n"); scanf("%d",&r2); printf("请输入R3:\n"); scanf("%d",&r3); printf("请输入UA :\n"); scanf("%d",&u1); printf("请输入UD :\n"); scanf("%d",&u2); //录入增广矩阵

int a[3][4]={0,-r3,r2,u2,

r1,r3,0,u1,

1,-1,-1,0};

//将增广矩阵化为等价标准型

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

{

a[1][i]=(a[1][i]-20*a[2][i]+3*a[0][i])/5;

a[0][i]=a[0][i]-a[1][i];

a[2][i]=10*a[2][i]+a[1][i]-a[0][i];

}

printf("矩阵的等价标准型为\n\n");

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

{

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

{

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

}

printf("\n");

}

i2=(double)a[0][3]/10.0;

i3=(double)a[1][3]/10;

i1=(double)a[2][3]/10.0;

printf("\n解得\n");

printf("I1为%f\n",i1); printf("I2为%f\n",i2); printf("I3为%f\n",i3);

return 0;

}

程序运行截图:

【论文总结】

通过一个学期的学习,我们在脑海中已经大致形成了对于高等代数这门课的轮廓,而且在本文撰写查询资料的过程之中,也了解到了看似抽象的高等代数其实在交通,通信,计算机,社科,经济管理中都有着非常广泛的应用。

特别感谢李思泽老师为我们布置的两次小论文写作作业,让我收获很大。虽然一开始接到任务时,我无从下手。但随着文献的阅读和资料的查找,我慢慢学会了一些写论文的技能,也在实践中用到了自己的C 语言知识,当我所编写的程序开始运行时,我的激动是溢于言表的。这很大程度上将我的所学转化为应用于实践,锻炼了我的实践能力。包括我还自学了一部分MATLAB(虽然说MATLAB最终没有用到),让我意识到自学也没有那么难,锻炼了我的自学能力。在一次一次阅读文献,查阅书籍,我慢慢感受到高代的精髓;在编写程序的过程中,我依靠自己解决了一些问题,从而使我对高等代数这门课产生了浓厚的兴趣。这次的作业很有意义。

最终感谢李思泽老师这一年来每次为同学们兢兢业业得备课,做ppt,详细地为我们讲不懂得地方,辛勤的授课。祝李老师桃李满天下。

【参考资料】

1.Lee W.johnson,R.Dean Riess and Jimmy T.Arnold,Introduction

to Linear Algebra,5th ed.China Machine Press

2.雷继刚唐平田茹.矩阵论及其应用.机械工业出版社

3.刘三明李瑞.线性代数及其应用.南京大学出版社

4.天津大学数学系代数教研组编著.线性代数及其应用[M].(第二

版).北京: 科学出版社,2010

5.何钦铭,颜晖.C语言程序与设计.高等教育出版社

相关主题