(完整版)浅谈矩阵计算

(完整版)浅谈矩阵计算
(完整版)浅谈矩阵计算

浅谈矩阵计算

一丶引言

矩阵是高等代数学中的常见的工具。在应用数学,物理学,计算机科学中都有很大的作用。研究矩阵的计算,可以简化运算,并深入理解矩阵的性质。在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考矩阵理论。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。矩阵的研究历史悠久,发展也是历久弥新,拉丁方阵和幻方在史前年代已有人研究。

作为解决线性方程的工具,矩阵也有不短的历史。成书最迟在东汉前期的《九章算术》中,用分离系数法表示线性方程组,得到了其增广矩阵。在消元过程中,使用的把某行乘以某一非零实数、从某行中减去另一行等运算技巧,相当于矩阵的初等变换。但那时并没有现今理解的矩阵概念,虽然它与现有的矩阵形式上相同,但在当时只是作为线性方程组的标准表示与处理方式。

矩阵正式作为数学中的研究对象出现,则是在行列式的研究发展起来后。逻辑上,矩阵的概念先于行列式,但在实际的历史上则恰好相反。日本数学家关孝和(1683年)与微积分的发现者之一戈特弗里德·威廉·莱布尼茨(1693年)近乎同时地独立建立了行列式论。其后行列式作为解线性方程组的工具逐步发展。1750年,加布里尔·克拉默发现了克莱姆法则。

矩阵的现代概念在19世纪逐渐形成。1800年代,高斯和威廉·若尔当建立了高斯—若尔当消去法。1844年,德国数学家费迪南·艾森斯坦(F.Eisenstein)讨论了“变换”(矩阵)及其乘积。1850年,英国数学家詹姆斯·约瑟夫·西尔维斯特(James Joseph Sylvester)首先使用矩阵一词。英国数学家凯利被公认为矩阵论的奠基人。他开始将矩阵作为独立的数学对象研究时,许多与矩阵有关的性质已经在行列式的研究中被发现了,这也使得凯利认为矩阵的引进是十分自然的。他说:“我决然不是通过四元数而获得矩阵概念的;它或是直接从行列式的概念而来,或是作为一个表达线性方程组的方便方法而来的。”他从1858年开始,发表了《矩阵论的研究报告》等一系列关于矩阵的专门论文,研究了矩阵的运算律、矩阵的逆以及转置和特征多项式方程。凯利还提出了凯莱-哈密尔顿定理,并验证了3×3矩阵的情况,又说进一步的证明是不必要的。哈密尔顿证明了4×4矩阵的情况,而一般情况下的证明是德国数学家弗罗贝尼乌斯(F.G.Frohenius)于1898年给出的。1854年时法国数学家埃尔米特(C.Hermite)使用了“正交矩阵”这一术语,但他的正式定义直到1878年才由费罗贝尼乌斯发表。1879年,费罗贝尼乌斯引入矩阵秩的概念。至此,矩阵的体系基本上建立起来了。

无限维矩阵的研究始于1884年。庞加莱在两篇不严谨地使用了无限维矩阵和行列式理论的文章后开始了对这一方面的专门研究。1906年,希尔伯特引入无限二次型(相当于无限维矩阵)对积分方程进行研究,极大地促进了无限维矩阵的研究。在此基础上,施密茨、赫林格和特普利茨发展出算子理论,而无限维矩阵成为了研究函数空间算子的有力工具。

二、矩阵的介绍与基本运算

由m×n个数a ij(i=1,2,…,m;j=1,2,…,n)排成的m行n列的数表称为m行n列矩阵,简称m ×n矩阵。只有一行的矩阵A=(a1,a2…a n)称为行矩阵或行向量,只有一列的矩阵称为列矩阵或列向量。矩阵计算的合适出发点是矩阵与矩阵的乘法。这一问题在数学上虽然简单,但从计算上来看却是十分丰富的。矩阵相乘可以有好几种不同的形式,还将引入矩阵划分的概念,并将其用来刻画计

算上的几种线性代数的“级”。如果一个矩阵具有某种结构,则它常常可以加以利用。例如一个对称矩阵,只需要一个一般矩阵的一半空间即可储存。。在矩阵乘向量中如果矩阵有许多零元素,则可减少许多时间。矩阵计算是基于线性代数运算的,点积运算包括标量的加法和乘法。矩阵向量相乘由点积组成。矩阵与矩阵相乘相当于一系列的矩阵向量相乘。所有这些运算都可以用算法形式,或者用线性代数的语言来描述。

(1)基本矩阵运算包括

1)转置(R m ×n →R n ×m )

C=A T →cij=aji

2)相加(R m ×n +R m ×n →R m ×n )

C=A+B →cij=aij+bij

3)标量与矩阵的相乘(R ×R m ×n →R m ×n )

C=αA →cij=αaij

4)矩阵与矩阵的相乘(R m ×p ×R p ×n →R m ×n )

C=AB →cij=1r ik kj k a

b

=∑ 这些运算都是构建矩阵计算的基石对于任意的数

(2)逆矩阵

对于n 阶矩阵A ,如果有一个n 阶矩阵B ,使AB=BA=E ,则说矩阵A 是可逆的,并把矩阵B 称为A 的逆矩阵,简称逆阵。如果矩阵A 是可逆的那么A 的矩阵是唯一的。A 的逆阵记作A -1即若AB=BA=E ,则B=A -1。

·若矩阵A 可逆,则|A|≠0

·若|A|≠0,则矩阵A 可逆,且11A A A

-*=,其中A *为矩阵A 的伴随阵。 (3)矩阵的初等变换

下面三种变换称为矩阵的三种初等行变换:

·对调两行

·以数k ≠0乘某一行中的所有元素(第i 行乘k ,记作r i ×k)

·把某一行所有元素的k 倍加到另一行对应的元素上去

矩阵的初等列变换也是一样应用,初等行变换与初等列变换统称为初等变换,显然三种初等变换都是可逆的,且其逆变换是同一类型的变换。矩阵之间的等价关系有

·反身性 A~A

·对称性 若A~B,则B~A

·传递性 若A~B ,B~C ,则A~C

方阵A 的可逆的充分必要条件是~A E

(4)矩阵的秩

给定一个m ×n 矩阵A ,它的标准形F=000r

E ??????

m ×n 由数r 完全确定。这个数也就是A 的行阶梯形中非零行的行数,这个数便是矩阵A 的秩。但由于这个数的唯一性尚未证明。矩阵的秩的定义是这样表示的:在m 乘n 矩阵A ,任取k 行与k 列(k ≤m,k ≤n ),位于这些行列交叉处的k 2 个元素,不改变它们在A 中所处的位置次序而得的k 阶行列式,称为矩阵A 的k 阶子式(m ×n 矩阵A 的k 阶子式共有k k

m n C C ?个)

设在矩阵A 中有一个不等于0的r 阶子式D ,且所有r+1阶子式(如果存在的话)全等于0,那么D 称为矩阵A 的最高阶非零子式,数r 称为矩阵a 的秩,记作R(A),并规定零矩阵的秩等于0。由行列式的性质可知,在A 中当所有r+1阶子式全等于0时,所有高于r+1的子式也全等于0,因此把r 阶非零子式称为最高阶非零子式,而A 的秩R(A)就是A 的非零子式的最高阶数,由于R(A)是A 的非零子式的最高阶数,因此,若矩阵A 中有某个s 阶子式不为0,则R(A)≥s ;若A 中所有t 阶子式全为0,则R(A)

对于n 阶矩阵A ,由于A 的n 阶子式只有一个|A|,故当|A|≠0时R(A)=n ,当|A|=0时R(A)

·若A~B ,则R(A)=R(B)

·若可逆矩阵P,Q 使PAQ=B ,则R(A)=R(B)

·0≤R(A m ×n )≤min{m ,n}

·max{R(A),R(B)}≤R(A+B)≤R(A)+R(B),特别地,当B=b 为非零列向量时,有R(A)≤R(A,b)≤R(A)+1 ·R(A+B)≤R(A)+R(B)

·R(AB)≤min{R(A),R(B)}

·若A m ×n B n ×1 =0,则R(A)+R(B)≤n

·设AB=0,若A 为列满秩矩阵,则B=0

三丶矩阵与线性方程组的联系与算法

(1) 一般线性方程组

求线性方程组Ax=b 是科学计算的中心问题。高斯消去法是处理A 是方的,稠密的以及无结构时的首选算法。

1)向前消去法

考虑以下2×2下三角方程组

1121220L L L ??????12x x ??????=12b b ??????

如果L 11L 22≠0则未知数可依次确定:x 1=b 1/L 11,x 2=(b 2-L 21x 1)/L 22

这就是称之为向前消去法的算法的2×2形式。通过解Lx=b 的第i 个方程求出x i 即可得到此算法的一般形式

X i =(b i -11i ij

j j L x -=∑)/L ii 如果对i=1:n 计算上式,则x 的所有分量都可求得。

2)向后消去法

解上三角方程组Ux=b 的类似算法叫向后消去法。x i 的计算公式为

x i =(b i -

1n ij j i u =+∑x i ) /u ii

(2) 特殊线性方程组:正定方程组

如果对所有非零向量x ∈R n 都有x T Ax >0,则称矩阵A ∈R

n ×n 是正定的。正定方程组是特殊Ax=b 问题中的重要一类。考虑2×2对称矩阵的情形,如

A=11122122a a a a ??????

是正定的,则 X=(1,0)T →x T Ax=a 11>0

X=(0,1)T→x T Ax=a22>0

X=(1,1)T→x T Ax=a11+2a12+a22>0

X=(1,-1)T→x T Ax=a11-2a12+a22>0

由后两个方程推知|a12|≤(a11+a22)/2,由这些结果可知A中最大元素位于对角线上且为正。此结论是普遍成立的。一个对称正定矩阵有一条“重”对角线,尽管这样的矩阵不如对角占优矩阵那样明显地将重量集中在对角线上,但在计算中同样可以忽略掉选主元的过程,在这两点上二者是等效的。

1.1正定性

假设A∈R n×n是正定的,显然一个正定矩阵是非奇异的,否则可以找到一个非零向量x,使xTAx=0。则可以得到

1)如果A∈R n×n是正定的,X∈R n×k的秩为k,则B=X T AX∈R k×k也是正定的

2)如果A是正定的,则其所有的主子矩阵均为正定的。特别的,所有的对角元均大于零

3)如果A是正定的,则A的分解A=LDM T存在,且D=diag(d1,…,d n)的对角元均大于零

在实际中有几种典型情况会产生正定矩阵

·二次型是由物理原理保证为正定的能量函数

·矩阵A等于一个叉积X T X,其中X是列满秩的

·A和A T均为对角占优的且每一个a ii都大于零

1.2非对称正定方程组

仅仅存在LDM T分解还不足以意味着它的计算就是可取的,因为分解中的因子可能会有大的不能接受的元素。例如,如果ε>0,则矩阵

A=

m

m

ε

ε

??

??

-??

=

10

1

m

ε

??

??

??

-

??

2

m

ε

ε

ε

??

??

+

??

??

??

1

01

m

ε

??

??

??

??

是正定的,但如果m/ε?1,那么最好行选主元

1.3对称正定方程组

如果A∈R n×n是对称正定的,则存在唯一的一个对角元全部大于零的下三角矩阵G∈R n×n,满足A=GG T分解A=GG T被称为柯列斯基(Cholesky)分解,G被称为柯列斯基(Cholesky)三角矩阵,如果计算柯列斯基分解,然后解三角形方程组Gy=b和G T x=y,则b=Gy=G(G T x)=(GG T)x=Ax,可以通过利用方程A=GG T来得到计算柯列斯基三角阵的更有效的方法。

四丶对称特征值问题

具有丰富数学结构的对称特征值问题是数值线性代数中最漂亮的问题之一。对称矩阵的数学性质奠定了此计算的基础。雅可比(Jacobi)方法是文献中出现最早的矩阵算法之一。由于易于并行

计算和在某种条件下具有高精度,这种方法近来又引起人们的兴趣

(1)性质与分解

对称性保证了A的所有特征值都是实的且有一组由特征向量组成的正交基。

如果A∈R n×n是对称的,则存在一个实正交矩阵Q使得Q T AQ=Λ=diag(λ1 ,…,λn )

(2)Jacobi方法

求对称特征值问题的雅可比(Jacobi)方法近来引起人们的注意,是因为它们本质上是并行的,它们的做法如下:进行一系列正交相似变换不断校正A←Q T AQ,使得每一个新的A,虽然是满的,但比前一个A“更对角化”。最终,非对角线元素都小到可以认为是零。通过对雅可比法内在的基本思想进行观察后,我们提出一种并行雅可比过程。

考虑线性方程组A x = b时,一般当A为低阶稠密矩阵时,用主元消去法解此方程组是有效方法。但是,对于由工程技术中产生的大型稀疏矩阵方程组(A的阶数很高,但零元素较多,例如求某些偏微分方程数值解所产生的线性方程组),利用迭代法求解此方程组就是合适的,在计算机内存和

运算两方面,迭代法通常都可利用A中有大量零元素的特点。雅克比迭代法就是众多迭代法中比较早且较简单的一种,其命名也是为纪念普鲁士著名数学家雅可比。

首先将方程组中的系数矩阵A分解成三部分,即:A = L+D+U,如图1所示,其中D为对角阵,L 为下三角矩阵,U为上三角矩阵。

之后确定迭代格式,X^(k+1) = B*X^(k) +f,(这里^表示的是上标,括号内数字即迭代次数),如图2所示,其中B称为迭代矩阵,雅克比迭代法中一般记为J。(k = 0,1,......)再选取初始迭代向量X^(0),开始逐次迭代。

五丶结束语

随着现代科学的发展,数学中的矩阵也有更广泛而深入的应用,矩阵在现实生活中的应用有很多。在经济生活中:可“活用”行列式求花费总和最少等类似的问题;可“借用”特征值和特征向量预测若干年后的污染水平等问题;在人口流动问题方面可以应用矩阵的高次幂,比如预测未来的人口数、人口的发展趋势;在密码学中:可用可逆矩阵及其逆矩阵对需发送的秘密消息加密和译密;在文献管理中比如现代搜索中往往包括几百万个文件和成千的关键词,但可以利用矩阵和向量的稀疏性,节省计算机的存储空间和搜索时间。

矩阵的应用越来越广泛,研究矩阵的计算十分必要,还有许许多多的规律和奥秘等待去探索。

剪力墙如何根据SATWE计算结果正确配筋

剪力墙如何根据SATWE计算结果 配筋 假设此楼层为构造边缘构件,剪力墙厚度为200, 剪力墙显示“0”是指边缘构件不需要配筋且不考虑构造配筋(此时按照高规表7.2.16来配),当墙柱长小于3倍的墙厚或一字型墙截面高度不大于800mm 时,按柱配筋,此时表示柱对称配筋计算的单边的钢筋面积。 水平钢筋:H0.8是指Swh范围内的水平分布筋面积(cm2),Swh范围指的就是Satwe参数中的墙水平分布筋间距,是指的双侧的,先换算成1米内的配筋值,再来配,比如你输入的间距是200 mm ,计算结果是H0.8,那就用0.8*100 (乘以100是为了把cm2转换为mm2)*1000/200=400mm2 再除以2 就是 200mm2 再查板配筋表就可以了所以配8@200面积250>200 满足要求了!(剪力墙厚度为200,直径8间距200 配筋率 =2*50.24/(200*200)=0.25%,最小配筋率为排数*钢筋面 积/墙厚度*钢筋间距)。 竖向钢筋:计算过程1000X200X0.25%=500mm2,同样是指双侧,除以2就是250mm2,Φ8@200(面积251mm2)足够。 Satwe参数中的竖向配筋率是可根据工程需要调整的,当边缘构件配筋过大时,可提高竖向配筋率。

剪力墙边缘构件中的纵向钢筋间距应该和箍筋(拉筋)的选用综合考虑 一般情况下,墙的钢筋为构造钢筋,不过在屋面层短墙在大偏心受压下有时配筋很大 墙竖向分布筋配筋率0.3%进行计算是不对的。应该填0.25%(或者0.20%)。 如果填了0.3%,实际配了0.25%,则造成边缘构件主筋配筋偏小。墙竖向分 布筋按你输入配筋率,水平配筋按你输入的钢筋间距根据计算结果选筋。 规范规定的:剪力墙竖向和水平分布钢筋的配筋率,一、二、三级时均不应小于0.25%,四级和非抗震设计时均不应小于0.20%,此处的“配筋率”为水平截面全截面的配筋率,以200mm厚剪力墙为例,每米的配筋面积为:0.25% x 200 x 1000 = 500mm2,双排筋,再除以2,每侧配筋面积为250mm2,查配筋表,φ8@200配筋面积 为251mm2,刚好满足配筋率要求。 至于边缘构件配筋,一般是看SATWE计算结果里面的第三项:“梁弹性挠度、柱轴压比、墙边缘构件简图”一项里面的“边缘构件”,按此配筋,如果出现异常配筋,比如配筋率过大的情况,就用第十五项:“剪力墙组合配筋修改及验算”一项进行组合墙配筋计算,

求矩阵的基本运算

求矩阵的基本运算 #include #include void jiafa() { int m,n; float a[20][20],b[20][20],c[20][20]; int i,j; printf("请输入矩阵行数:"); scanf("%d",&m); printf("请输入矩阵列数:"); scanf("%d",&n); printf("请输入第一个矩阵:"); for(i=0; i

求矩阵特征值算法及程序

求矩阵特征值算法及程序简介 1.幂法 1、幂法规范化算法 (1)输入矩阵A、初始向量( 0),误差eps; (2) k 1; (3)计算V(k)A(k 1); (4)m k max(V(k)) ,m k1max( V ( k 1)); (5) (k)V(k)/m k; (6)如果m k m k 1eps,则显示特征值1和对应的特征向量x(1) ),终止; (7)k k 1, 转(3) 注:如上算法中的符号max(V )表示取向量V 中绝对值最大的分量。本算法使用了数据规范化处理技术以防止计算过程中出现益出错误。 2、规范化幂法程序 Clear[a,u,x]; a=Input[" 系数矩阵A="]; u=Input[" 初始迭代向量u(0)="]; n=Length[u]; eps=Input[" 误差精度eps ="]; nmax=Input[" 迭代允许最大次数nmax="]; fmax[x_]:=Module[{m=0,m1,m2}, Do[m1=Abs[x[[k]]]; If[m1>m,m2=x[[k]];m=m1], {k,1,Length[x]}]; m2] v=a.u; m0=fmax[u]; m1=fmax[v]; t=Abs[m1-m0]//N; k=0; While[t>eps&&k

相关主题
相关文档
最新文档