第三节 matlab数值计算。
数学计算分为数值计算和符号计算。这两种计算的区别是:数值计算的表达式、变量中不得包含未定义的自由变量,而符号计算中则允许。本节主要介绍matlab的数值计算。
一、 多项式。
1.多项式的表达与创建。
matlab用行矢量表示多项式系数,其中各元素按降幂顺序排列,如果多项式表示为:
p(x)=a0xn+ a1xn-1+…+an-1x+an
则系数矢量为:p=[a0 a1 …an-1 an] 。
例如:p(x)= x3-2x-5,其系数矢量为:p=[1 0 -2 -5]。
如果把根矢量表示为:ar=[ar1 ar2 … arn],则根矢量与系数矢量之间满足下面的关系式:
x- ar1)(x- ar2) …x- arn)= a0xn+ a1xn-1+…+an-1x+an
多项式系数矢量通过调用函数p = poly(ar)产生。
例1 将多项式(x-8)(x-3)(x-6)表示为系数形式(即求出系数矢量)。
a=[8 3 6写成根矢量。
pa=poly(a求出系数矢量。
ppa=poly2sym(pa表示成符号形式。
ezplot(ppa,[-40,40绘图。
输出结果为:pa =
ppa =x^3-17*x^2+90*x-144
图1说明:(1) n个元素的根矢量求出的多项式系数矢量的元素一定是n+1个。
2) 函数poly2sym把多项式系数矢量表达成符号形式的多项式,缺省情况下自变量符号为x,可以指定其他自变量,如poly2sym(pa,’t’),则表达为t的多项式。
3) 使用简单绘图函数ezplot可以直接绘制符号形式多项式的曲线,其中第二个输入参数是由方括号内的两个数值组成的,给定了绘图范围。若省略该参数,系统将自动按缺省范围绘图。
例2 求3阶方阵a的特征多项式。
a=[6 3 8;7 5 6;1 3 5];
pa=poly(a)
ppa=poly2sym(pa)
输出结果为:pa =
ppa =x^3-16*x^2+38*x-83
说明:n阶方阵的特征多项式系数矢量一定是n+1阶。
2.多项式的乘除运算。
c=conv(a,b多项式乘法。
[q,r] =deconv(c,a多项式除法。
长度为m的矢量和长度为n的矢量的卷积的定义为:
式中矢量c的长度为(m+n-1),求两个多项式的积的算法与卷积完全相同。
例3 ,计算的乘积。
a=[1 2 3多项式的系数矢量。
b=[4 5 6多项式的系数矢量。
c=conv(a,b计算多项式乘积。
cs=poly2sym(c,'s') 表示成符号形式的多项式。
输出结果为: c =
cs =4*s^4+13*s^3+28*s^2+27*s+18
例4 展开。
c=conv([1 2 1],conv([1 4],[1 2]))
cs=poly2sym(c,'s')
输出结果为: c =
cs =s^4+8*s^3+21*s^2+22*s+8
说明:多个多项式相乘需要分别进行计算,先做两个多项式相乘,相乘的结果再与另一个多项式相乘,依次进行,先后顺序对结果没有影响,退卷积是卷积的逆运算,即是用矢量a对矢量c进行退卷积,得到商矢量q和剩余矢量r,并且满足。
从数学上讲,以上退卷积运算可以理解为:多项式c除以多项式a得到商矢量q和剩余矢量r,该命令的调用格式为: [q,r] =deconv(c,a)
例5 求分别被(s+4)、(s+3)除后的结果。
c=[1 8 21 22 8上例计算出的结果。
q1,r1]=deconv(c,[1,4除以(s+4)项。
q2,r2]=deconv(c,[1,3除以(s+3)项。
cc=conv(q2,[1,3q2 与(s+3)相乘。
test=((c-r2)==cc检验结果是否正确。
输出结果为: q1 =
r1 =
q2 =r2 =
cc =
test =
说明:不能被(s+3)整除,余项是常数(-4);检验结果表明运算正确。
二、 线性代数。
1.方阵系统。
**性代数中,解方程组是非常重要的。通常线性方程大多数写成ax=b,即x=a\b是其解。系数矩阵a不一定是方阵,所有针对m行n列的系数矩阵,可能有以下三种情况:
m=n(方阵系统),可以求出精确解(a必须非奇异,即满秩)。
m>n(超定系统),可以求出最小二乘解。
mmatlab会自动检测参数矩阵,以区分三角矩阵、对称正定矩阵、非奇异矩阵、超定系统与欠定系统。这里只介绍方阵系统。通常系数矩阵a为方阵,b是由常数项组成的列矢量,解x和b大小相同。
例6 求方阵系统的根。
a=[1 2 3;1 4 9;1 8 27];
b=[5 -2 6]';
x=a\b输出结果为: x =
例7 若a,b为两个大小相同的方阵,求方阵系统的根。
a=[1 -2 0;1 -2 -1;-3 1 3];
b=[-1 4 7;2 5 6;1 -3 10];
x=a\b输出结果为: x =
若方阵a的各个行矢量线性相关,则称方阵a为奇异矩阵,这时线性方程ax=b有无穷多组解。但在matlab中,反斜线运算因子将发出警告信息。
2.方阵的逆和行列式。
若方阵a是非奇异矩阵,则方程ax=i 和xa=i会有相同的解x。x称为a的逆矩阵,记作a-1,在matlab中用inv函数来计算矩阵的逆。计算方阵的行列式则用det函数。
例8 计算方阵的行列式和逆矩阵。
a=[3 -4 5; 2 -3 1; 3 -5 -1];
d1=det(a)
x1=inv(a)
输出结果为: d1 =
x1 =
3.广义逆矩阵(伪逆)
一般非方阵amn并无逆矩阵和行列式,方程ax=i 和xa=i至少会有一个无解,这种矩阵可以求得特殊的逆矩阵,称为广义逆矩阵(也称为伪阵)。矩阵amn存在广义逆矩阵xnm, 使得ax=imm,matlab用pinv函数来计算广义逆矩阵。
例9 计算广义逆矩阵。
a=[-1 4;2 5; 1 -3];
x=pinv(a)
b=x*ac=a*x
输出结果为x =
b =c =可以验证a=c*a,x=x*c,且c为对称阵。
4.特征值与特征矢量。
如果有一个矢量v和一常数λ,使得方阵a满足**=λv,则称λ为特征值,而v为特征矢量。
特征值填入λ矩阵的对角线位置上,并在其他位置上填入0,再将特征矢量当成列矢量,合起来写成特征矢量v,则有 **=vλ。
如果v是一非奇异矩阵,则可以写出矩阵的特征值分解式 a=vλv-1。
matlab中使用函数eig计算特征值和特征矢量,有两种调用方法,分别为:e=eig(a),其中e是一个包含特征值的矢量;[v,d] =eig(a),其中v是一个与a相同的n×n阶矩阵,它的每一列是矩阵a的一个特征值所对应的特征矢量,d为对角阵,其对角元素即为矩阵a的特征值。
例10 计算特征值和特征矢量。
a=[-2 1 1;0 2 0;-4 1 3];
e=eig(a)
[v,d]=eig(a)
输出结果为: e =
v =d =三、 数据分析与统计。
matlab对数据分析命令有两条约定:若输入量x是矢量,则不论是行矢量还是列矢量,运算是对整个矢量进行的。若输入量x是数组(或称矩阵),则命令运算是按列进行的,即默认每个列是由一个变量的不同“观察”所得数据组成。
实验3matlab绘图
实验考核。实验项目 matlab绘图。实验目的 熟练掌握利用matlab软件进行绘图。实验仪器设备 计算机,matlab软件。实验原理 1 matlab简介 matlab语言丰富的图形表现方法,使得数学计算结果可以方便地 多样性地实现了可视化,这是其它语言所不能比拟的。2 matlab的绘图功能 1...
matlab数值计算 1
第三章课程复习。1 要求在闭区间上产生具有10个等距采样点的一维数组。试用两种不同的指令实现。linspace 0,2 pi,10 0 2 pi 9 2 pi 2 在使用123作为rand随机数发生器的初始化状态的情况下,写出产生长度为1000的 等概率双位 即取 1,1 取值的随机码 程序指令,并...
实验3Matlab编程题
1 用while循环求1 100间整数的和。2 编写y函数,xx 1 y 2x 1 1 3x 11 x 10 计算出y 3 y 5 y 的值。3 某商场对顾客所购买的商品实行打折销售,标准如下 商品 用price来表示 price 200没有折扣。200 price 500 3 折扣。500 pri...