3MATLAB数值计算

发布 2023-05-19 18:54:28 阅读 1561

第三节 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...