资源描述
线性代数应用实例
l 求插值多项式
右表给出函数上4个点的值,试求三次插值多项式,并求的近似值。
ti
0
1
2
3
f(ti)
3
0
-1
6
解:令三次多项式函数过表中已知的4点,可以得到四元线性方程组:
对于四元方程组,笔算就很费事了。应该用计算机求解了,键入:
>>A=[1,0,0,0;1,1,1,1;1,2,4,8;1,3,9,27], b=[3;0;-1;6], s=rref([A,b])
得到x = 1 0 0 0 3
0 1 0 0 -2
0 0 1 0 -2
0 0 0 1 1
得到,三次多项函数为,故近似等于。
在一般情况下,当给出函数在n+1个点上的值时,就可以用n次多项式对进行插值。
l 在数字信号处理中的应用----- 数字滤波器系统函数
u
2
x1
y
1/4
-1/4
z-1
x3
x2
z-1
3/8
图1 某数字滤波器结构图
数字滤波器的网络结构图实际上也是一种信号流图。它的特点在于所有的相加节点都限定为双输入相加器;另外,数字滤波器器件有一个迟延一个节拍的运算,它也是一个线性算子,它的标注符号为z -1。根据这样的结构图,也可以用类似于例7.4的方法,求它的输入输出之间的传递函数,在数字信号处理中称为系统函数。
图1表示了某个数字滤波器的结构图,现在要求出它的系统函数,即输出y与输入u之比。先在它的三个中间节点上标注信号的名称x1,x2,x3,以便对每个节点列写方程。由于迟延算子z -1不是数,要用符号代替,所以取q= z -1,按照图示情况,可以写出:
写成矩阵形式为
经过移项后,系统函数W可以写成:
现在可以列写计算系统函数的MATLAB程序ea705,
syms q % 规定符号变量
Q(1,2)=q; Q(2,3)=3/8*q-1/4; Q(3,1)=1; % 给非零元素赋值
Q(3,3)=0; % 给右下角元素Q(3,3)赋值后,矩阵中未赋值元素都自动置零
P=[2;1/4;0] % 给P赋值
W=inv(eye(3)-Q)*P % 用信号流图求传递函数的公式
程序运行的结果为
W = [-16/(-8+3*q^2-2*q)-2*q/(-8+3*q^2-2*q) ]
[ -2*(3*q-2)/(-8+3*q^2-2*q)-2/(-8+3*q^2-2*q)]
[-16/(-8+3*q^2-2*q)-2*q/(-8+3*q^2-2*q)]
我们关心的是以y=x3作为输出的系统函数,故再键入 pretty(W(3))
整理后得到
用线性代数方法的好处是适用于任何复杂系统,并能用计算机解决问题。
l 信号与系统课程中的应用-----线性时不变系统的零输入响应
描述n阶线性时不变(LTI)连续系统的微分方程为
n≥m
已知y及其各阶导数的初始值为y(0),y(1)(0),…,y(n-1)(0),求系统的零输入响应。
解:当LTI系统的输入为零时,其零输入响应为微分方程的齐次解(即令微分方程等号右端为0),其形式为(设特征根均为单根)
其中p1,p2,…,pn是特征方程a1ln+a2ln-1+…+ anl+ an+1 =0的根,它们可用roots(a)语句求得。各系数C1,…,Cn由y及其各阶导数的初始值来确定。对此有
C1+ C2+…+Cn = y0 y0 = y(0)
p1C1+ p2C2+…+ pnCn=Dy0 (Dy0表示y的导数的初始值y(1)(0))
…………………………………
写成矩阵形式为
即 V·C = Y0 , 其解为 C =V \ Y0
式中
V为范德蒙矩阵,在MATLAB的特殊矩阵库中有vander函数可直接生成。
MATLAB程序ea703.m
a=input('输入分母系数向量a=[a1,a2,...]= ');
n=length(a)-1;
Y0=input('输入初始条件向量 Y0=[y0,Dy0,D2y0,...]= ');
p=roots(a);V=rot90(vander(p));c= V\Y0';
dt=input('dt='); tf=input('tf= ')
图2 三阶系统的零输入响应
t=0:dt:tf; y=zeros(1,length(t));
for k=1:n y= y+c(k)*exp(p(k)*t);end
plot(t,y),grid
n 程序运行结果
用这个通用程序来解一个三阶系统,运行此程序并输入
a=[3,5,7,1];
dt=0.2; tf=8;
而Y0取
[1,0,0];[0,1,0];[0,0,1]
三种情况,用hold on语句使三次运行生成的图形画在一幅图上,得到图2。
l 减肥配方的实现
设三种食物每100克中蛋白质、碳水化合物和脂肪的含量如下表,表中还给出了80年代美国流行的剑桥大学医学院的简捷营养处方。现在的问题是:如果用这三种食物作为每天的主要食物,那么它们的用量应各取多少?才能全面准确地实现这个营养要求。
营养
每100g食物所含营养(g)
减肥所要求的每日营养量
脱脂牛奶
大豆面粉
乳清
蛋白质
36
51
13
33
碳水化合物
52
34
74
45
脂肪
0
7
1.1
3
设脱脂牛奶的用量为x1个单位(100g),大豆面粉的用量为x2个单位(100g),乳清的用量为x3个单位(100g),表中的三个营养成分列向量为:
则它们的组合所具有的营养为
使这个合成的营养与剑桥配方的要求相等,就可以得到以下的矩阵方程:
用MATLAB解这个问题非常方便,列出程序ag763如下:
A=[36,51,13;52,34,74;0,7,1.1]
b=[33;45;3]
x=A\b
程序执行的结果为:
即脱脂牛奶的用量为27.7g,大豆面粉的用量为39.2g,乳清的用量为23.3g,就能保证所需的综合营养量。
l 人口迁徙模型
设在一个大城市中的总人口是固定的。人口的分布则因居民在市区和郊区之间迁徙而变化。每年有6%的市区居民搬到郊区去住,而有2%的郊区居民搬到市区。假如开始时有30%的居民住在市区,70%的居民住在郊区,问十年后市区和郊区的居民人口比例是多少?30年、50年后又如何?
这个问题可以用矩阵乘法来描述。把人口变量用市区和郊区两个分量表示,即其中xc为市区人口所占比例,xs为郊区人口所占比例,k表示年份的次序。在k=0的初始状态:。
一年以后,市区人口为xc1= (1-0.02) xc0+0.06xs0,郊区人口xs1= 0.02xc0 + (1-0.06)xs0,用矩阵乘法来描述,可写成:
此关系可以从初始时间到k年,扩展为,用下列MATLAB程序进行计算:
A=[0.94,0.02;0.06,0.98]
x0=[0.3;0.7]
x1=A*x0,
x10=A^10*x0
x30=A^30*x0
x50=A^50*x0
程序运行的结果为:
无限增加时间k,市区和郊区人口之比将趋向一组常数 0.25/0.75。为了弄清为什么这个过程趋向于一个稳态值,我们改变一下坐标系统。在这个坐标系统中可以更清楚地看到乘以矩阵A的效果。选u1为稳态向量[0.25,0.75]T的任意一个倍数,令u1=[1,3]T和u2=[-1,1]T。可以看到,用A乘以这两个向量的结果不过是改变向量的长度,不影响其相角(方向):
初始向量x0可以写成这两个基向量u1和u2的线性组合;
因此
式中的第二项会随着k的增大趋向于零。如果只取小数点后两位,则只要k>27,这第二项就可以忽略不计而得到
适当选择基向量可以使矩阵乘法结果等价于一个简单的实数乘子,避免相角项出现,使得问题简单化。这也是方阵求特征值的基本思想。
这个应用问题实际上是所谓马尔可夫过程的一个类型。所得到的向量序列x1,x2,...,xk称为马尔可夫链。马尔可夫过程的特点是k时刻的系统状态xk完全可由其前一个时刻的状态xk-1所决定,与k-1时刻之前的系统状态无关。
l 交通流的分析
某城市有两组单行道,构成了一个包含四个节点A,B,C,D的十字路口如图6.5.2所示。在交通繁忙时段的汽车从外部进出此十字路口的流量(每小时的车流数)标于图上。现要求计算每两个节点之间路段上的交通流量x1,x2,x3,x4。
解:在每个节点上,进入和离开的车数应该相等,这就决定了四个流通的方程:
节点A: x1+450=x2+610
节点B: x2+520=x3+480
节点C: x3+390=x4+600
节点D: x4+640=x2+310
将这组方程进行整理,写成矩阵形式:
图3 单行线交通流图
其系数增广矩阵为:
用消元法求其行阶梯形式,或者直接调用U0=rref([A,b]),可以得出其精简行阶梯形式为
注意这个系数矩阵所代表的意义,它的左边四列从左至右依次为变量x1,x2,x3,x4的系数,第五列则是在等式右边的常数项。把第四列移到等式右边,可以按行列写恢复为方程,其结果为:
x1=x4+330,
x2=x4+170,
x3=x4+210
0=0
由于最后一行变为全零,这个精简行阶梯形式只有三行有效,也就是说四个方程中有一个是相依的,实际上只有三个有效方程。方程数比未知数的数目少,即没有给出足够的信息来唯一地确定x1,x2,x3,和x4。其原因也不难从物理上想象,题目给出的只是进入和离开这个十字路区的流量,如果有些车沿着这四方的单行道绕圈,那是不会影响总的输入输出流量的,但可以全面增加四条路上的流量。所以x4被称为自由变量,实际上它的取值也不能完全自由,因为规定了这些路段都是单行道,x1,x2,x3,和x4。都不能取负值。
所以要准确了解这里的交通流情况,还应该在x1,x2,x3,和x4中,再检测一个变量。
l 价格平衡模型
在Leontiff成为诺贝尔奖金获得者的历史中,线性代数曾起过重要的作用,我们来看看他的基本思路。假定一个国家或区域的经济可以分解为n个部门,这些部门都有生产产品或服务的独立功能。设单列n元向量x是这些n个部门的产出,组成在Rn空间的产出向量。先假定该社会是自给自足的经济,这是一个最简单的情况。因此各经济部门生产出的产品,完全被自己部门和其它部门所消费。Leontiff提出的第一个问题是,各生产部门的实际产出的价格p应该是多少,才能使各部门的收入和消耗相等,以维持持续的生产。
Leontiff的输入输出模型中的一个基本假定是:对于每个部门,存在着一个在Rn空间单位消耗列向量vi,它表示第i个部门每产出一个单位(比如100万美金)产品,由本部门和其他各个部门消耗的百分比。在自给自足的经济中,这些列向量中所有元素的总和应该为1。把这n个vi,并列起来,它可以构成一个n×n的系数矩阵,可称为内部需求矩阵V。
举一个最简单的例子,假如一个自给自足的经济体由三个部门组成,它们是煤炭业、电力业和钢铁业。它们的单位消耗列向量和销售收入列向量p如下表:
由下列部门购买
每单位输出的消耗分配
销售价格p
(收入)
煤炭业
电力业
钢铁业
煤炭业
0.
0.4
0.6
pc
电力业
0.6
0.1
0.2
pe
钢铁业
0.4
0.5
0.2
ps
如果电力业产出了100个单位的产品,有40个单位会被煤炭业消耗,10个单位被自己消耗,而被钢铁业消耗的是50个单位,各行业付出的费用为:
这就是内部消耗的计算方法,把几个部门都算上,可以写出
其中
于是总的价格平衡方程可以写成为:
p – Vp = 0
( I – V ) p =0
此等式右端常数项为零,是一个齐次方程。它有非零解的条件是系数行列式等于零,或者用行阶梯简化来求解。
用MATLAB语句写出其解的表示式:
V=[0.,0.4,0.6;0.6,0.1,0.2;0.4,0.5,0.2],
U0 = rref([[eye(3)-V],zeros(3,1)])
程序运行的结果为
这个结果是合理的,简化行阶梯形式只有两行,说明[I-V]的秩是2,所以它的行列式必定为零。由于现在有三个变量,只有两个方程,必定有一个变量可以作为自由变量。记住U0矩阵中各列的意义,它们分别是原方程中pc,pe,ps,的系数,所以简化行阶梯矩阵U0表示的是下列方程:
这里取ps为自由变量,所以煤炭业和电力业的价格应该分别为钢铁业价格的0.94和0.85倍。如果钢铁业产品价格总计为100万元,则煤炭业的产品价格总计为94万,电力业的价格总计为85万
l 网络的矩阵分割和连接
在电路设计中,经常要把复杂的电路分割为局部电路,每一个电路都用一个网络‘黑盒子’来表示。黑盒子的输入为u1,i1,输出为u2,i2,其输入输出关系用一个矩阵A来表示(如图7.6.1所示):
A
i1 i2
A是2×2矩阵,称为该局部电路的传输矩阵。 u1 u2
把复杂的电路分成许多串接局部电路,分别求出
它们的传输矩阵,再相乘起来,得到总的传输矩阵,
图4 单个子网络模型
可以使分析电路的工作简化。
以图7.6.2为例,把两个电阻组成的分压电路分成两个串接的子网络。第一个子网络只包含电阻R1,第二个子网络只包含电阻R2,列出第一个子网络的电路方程为:
写成矩阵方程为:
图5 两个子网络串联模型
同样可列出第二个子网络的电路方程,
写成矩阵方程为:
从上分别得到两个子网络的传输矩阵
整个电路的传输矩阵为两者的乘积
实用中通常对比较复杂的网络进行分段,对于这样简单的电路是不分段的,这里只是一个示例。
展开阅读全文