发博文
正文 字体大小:

第四章 MATLAB的数值计算功能(二)

(2007-07-27 19:29:25)
 

一.       线性代数(Linear Algebra)

解线性方程(Linear equation)就是找出是否存在一个唯一的矩阵x,使得a,b满足关系:

ax=b  或 xa=b

MALAB中x=a\b 是方程 ax=b 的解, x=b/a是方程式xa=b的解。

通常线性方程多写成ax=b,“\”较多用,两者的关系为:

(b/a)’=(a’\b’)

系数矩阵a可能是m行n列的,有三种情况:

*方阵系统: (Square matrix)  m=n  可求出精确解(a必须是非奇异(nonsingular),即满秩(full rank))

*超定系统:(Overdetermind system)m>n  可求出最小二乘解

*欠定系统:(Underdetermind system) m<n  可尝试找出含有最少m个基解或最小范数解

MATLAB对不同形式的参数矩阵,采用不同的运算法则来处理,它会自动检测参数矩阵,以区别下面几种形式:

*三角矩阵(Triangular Matrix)

*对称正定矩阵(symmetrical positive determined matrix)

*非奇异方阵(Nonsingular matrix)

*超定系统(Overdetermind system)

*欠定系统(Underdetermind system)

 

1.     方阵系统:(Square array)

最常见的是系数矩阵为方阵a,常数项b为列矢量, 其解x可写成x=a\b, x和b大小相同。

例1: 求方阵系统的根。

a=[11  7; 5  13  9; 17  8]

b=[16  13  4]’

x=a\b

a =

    11        7

       13     9

    17        8

b =

    16

    13

     4

x =

    3.9763

    5.4455

   -8.6303

例2:假如a,b为两个大小相同的矩阵,求方阵系统的根。

a=[4  9; 18  19  5; 1  13]

b=[1  12; 3  15  19; 7  10]

x=a\b

C=a*x

a =

           9

    18    19     5

          13

b =

          12

       15    19

          10

x =

   -3.6750   -0.7333    2.9708

    3.7250    1.4667   -2.1292

   -0.3250    0.0667    1.1958

C =

    1.0000    5.0000   12.0000

    3.0000   15.0000   19.0000

7.0000    6.0000   10.0000

若方阵a的各个行矢量线性相关(linear correlation),则称方阵a为奇异矩阵。这时线性方程将有无穷多组解。若方阵是奇异矩阵,则反斜线运算因子将发出警告信息。

2.超定系统(Overdetermind system)

  实验数据较多,寻求他们的曲线拟合。

 如在t内测得一组数据y:

        y

0.0      0.82

0.3      0.72

0.8      0.63

1.1      0.60

1.6      0.55

2.2      0.50

这些数据显然有衰减指数趋势:   y(t)~c1+c2e-t

此方程意为y矢量可以由两个矢量逐步逼近而得,一个是单行的常数矢量,一个是由指数e-t项构成,两个参数c1和c2可用最小二乘法求得,它们表示实验数据与方程y(t)~c1+c2e-t之间距离的最小平方和。

例1:求上述数据的最小二乘解。将数据带入方程式y(t)~c1+c2e-t中,可得到含有两个未知数的6个等式,可写成6行2 列的矩阵e.

t=[0  0.3  0.8  1.1  1.6  2.2]’;

y=[0.82  0.72  0.63  0.60  0.55  0.50]’;

e=[ones(size(t))  exp(-t)]         %求6个y(t)方程的系数矩阵

c=e\y                         % 求方程的解

e =

    1.0000    1.0000

    1.0000    0.7408

    1.0000    0.4493

    1.0000    0.3329

    1.0000    0.2019

    1.0000    0.1108

c =

    0.4744

0.3434

带入方程得:y(t)~0.4744+0.3434e-t

用此方程可绘制曲线:

t=[0  0.3  0.8  1.1  1.6  2.2]’;

y=[0.82  0.72  0.63  0.60  0.55  0.50]’;

t1=[0:0.1:2.5]’;  y1=[ones(size(t1)),exp(-t1)]*c

plot(t1,y1,’b’,t,y,’ro’)

如果一个矩阵的行矢量是线性相关的,则它的最小二乘解并不唯一,因此,a\b运算将给出警告,并产生含有最少元素的基解。

3 .欠定系统: (Underdetermind system)

欠定系统为线性相关系统,其解都不唯一,MATLAB会计算一组构成通解的基解,而方程的特解则用QR分解法决定。

两种解法:最少元素解a\b,最小范数解pinv(a)*b.

例: 用两种方法求解欠定系统。

对a和矢量b分别用a\b和pinv(a)*b求解:

a=[1  1; 1  -1]

b=[10  6]’

p=a\b

q=pinv(a)*b

a =

           1

          -1

b =

    10

     6

p =

    8.0000

         0

    2.0000

q =

    4.0000

    4.0000

    2.0000

阅读 评论 收藏 转载 打印举报
已投稿到:
  • 评论加载中,请稍候...

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有