MATLAB基础及应用论文
题目 : MATLAB 语言多项式计算的分析与概述 摘要 :数值计算在科学研究与工程应用中有着十分广泛的应用,MATLAB 向我们提供
了标准的多项式的常用函数,包括求根、相乘、相除等。这些功能在进行现代数字信号处理与分析时非常有用。本文主要通过示例的形式分析与概述MATLAB 多项式计算的基本内容。
关键词 : 多项式 ;运算 ; 函数 ; 拟合 ; MATLAB 。
一、 引言 : MATLAB 是由MATH WORKS 公司推出的一种面向科学与工程的计算软件。
如今MATLAB 语言发展速度非常快,涉及十分广阔,本文主要讨论MATLAB 多项式的计
算,可谓MATLAB 的冰山一角。读者若要了解MATLAB 语言的更多知识还应多读多看他人著作。
二、 多项式计算 :
1,多项式的创建方法 :
在MATLAB 里:多项式由一个行向量表示,它的系数是按降序排列。
例如: 由1×N 的向量
表示
多项式,如用poly2sym()可以查看这个多项式。 (1)直接输入法
在MATLAB 命令窗口中直接输入多项式的系数矢量,然后利用转换函数poly2sym 将多项式由系数矢量形式转换为符号新式。 (2)指令P=poly(AR)法
若AR 是方阵,多项式P 是该方阵的特征多项式
若AR=[a 1, a 2,…,a n-1,a n ],则AR 的元素认为是多项式P 的根
如果A 为二维矩阵, poly(A)给出A 的特征多项式。如果A 为一维矩阵, poly(A)表示由A 的元素为多项式的根所确定的多项式。
【例1】产生多项式的方法。 clear
%方法一(由多项式的系数确定的多项式) p=[1 -2 3]%直接给出多项式p poly2sym(p)%给出p 多项式的表达式 %方法二(由矩阵所确定的多项式) a=[1 2;-2 4]
]
..[210n a a a a p =n
n n n n a x a x a x a P ++++=-- (22110)
ps=poly(a)%给出a的特征多项式
poly2sym(ps)%给出ps多项式的表达式
%方法三(由多项式的根确定的多项式)
x=[-1 2]
px=poly(x)%以x的元素为多项式的根确定的多项式。
poly2sym(px)%给出ps多项式的表达式
运行结果为
p =
1 -
2 3
ans =
x^2-2*x+3
a =
1 2
-2 4
ps =
1 -5 8
ans =
x^2-5*x+8
x =
-1 2
px =
1 -1 -2
ans =
x^2-x-2
2.多项式函数的引用
我们可以很方便地引用多项式函数(即求多项式的函数值)
引用格式
Y=polyval(px,x)
这里,引用函数为polyval。括号中,px为多项式的名,x为多项式自变量取值,Y为对应的函数值。
【例2】多项式函数的引用
clear
d=[-1 2]
px=poly(d)
y=polyval(px,4)%求多项式px在自变量等于4时的函数值
x=-4:0.5:8
yx=polyval(px,x)%求多项式px在自变量等于x序列时的函数值序列
plot(x,yx)%作出两个变量的函数图
a=roots(px)%求多项式px的根
运行结果为
d =
-1 2
px =
1 -1 -2
y =
10
x =
Columns 1 through 6
-4.0000 -3.5000 -3.0000 -2.5000 -2.0000 -1.5000 Columns 7 through 12
-1.0000 -0.5000 0 0.5000 1.0000 1.5000 Columns 13 through 18
2.0000 2.5000
3.0000 3.5000
4.0000 4.5000 Columns 19 through 24
5.0000 5.5000
6.0000 6.5000
7.0000 7.5000 Column 25
8.0000
yx =
Columns 1 through 6
18.0000 13.7500 10.0000 6.7500 4.0000 1.7500 Columns 7 through 12
0 -1.2500 -2.0000 -2.2500 -2.0000 -1.2500 Columns 13 through 18
0 1.7500 4.0000 6.7500 10.0000 13.7500 Columns 19 through 24
18.0000 22.7500 28.0000 33.7500 40.0000 46.7500 Column 25
54.0000
a =
2
-1
3.分式多项式的展开
(1)传递函数:本质是将时域上的微分或积分方程进行Laplace 变换,结果是将时域问题变为频域问题求解,数学变换的关键是
以及
式中
于是,传递函数一般是S 的多项式。
【例3】求一个RC 低通滤波器的幅频与相频特性图和转折频率。 %低通 r=100千欧 c=1微法 x=0:100;
y=1./(j*0.1*x+1); A=abs(y); P=angle(y); g=abs(A-0.707); [a,b]=min(g) x0=x(b) PO=P(b) subplot(221) plot(x,A) subplot(222) plot(x,P) %转折频率为1/RC 运行结果为 a =
1.0678e-004 b = 11 x0 = 10 PO = -0.7854
s dt
d =?=
s
dt 1ω
j s =
幅频 相频 (2)分子、分母多项式的单项展开
留数定理:设函数在D 域内除有限个奇点外解析,在闭域D+C 上除这些点外连续,则有
分子、分母多项式的单项展开
在控制系统的分析中经常需要将由分母、分子多项式构成的传递函数进行部分展开,如
)(......2211)()(s k bn
s an
b s a b s a s B s A +-++-+-= 这时可以用
[a,b,k]=residue(AN,BN)
来进行分解。这里,A 和B 为多项式,a 和b 是展开式的多项式,分别称为留数和残数。AN 和BN 是A 和B 的系数。K 为直行向量。这对分析函数奇点非常有用。
【例4】请将
)
4)(3()
2)(1(++++s s s s s
进行部分分式展开。 >> AN=[1 3 2]; >> BN=[1 7 12 0]; >> [r,p,k]=residue(AN,BN) r = 1.5000 -0.6667
?∑==c
n
k k
a R i dz z f 1
)
(2)(π
0.1667 p = -4 -3 0 k = [] 相当于原式为
s
s s 1667
.036667.045.1+
+-++
4.多项式的乘除与微分运算
乘:conv(卷积) 除:deconv(解卷) polyder (微分) 【例5】计算)18)(32(++x x x clear
a1=[1 0]; a2=[2 3]; a3=[1 18]; p1=conv(a1,a2) p2=conv(p1,a3)
[p3,r]=deconv(p2,a3) conv(p3,a3)+r 运行结果为 p1 =
2 3 0 p2 =
2 39 54 0 p
3 =
2 3 0 r =
0 0 0 0
ans =
2 39 54 0 >> poly2sym(ans) ans =
2*x^3+39*x^2+54*x
5.多项式的求根
n 次多项式有n 个根,它们可以是实数、虚数或共扼复数。MATLAB 中roots 用来求全部根。如
>> A=[6 1 0 3 1] A =
6 1 0 3 1 >> roots(A) ans =
0.4414 + 0.6980i 0.4414 - 0.6980i -0.7006 -0.3488
6. 多项式的曲线拟合
1.用多项式函数去模拟一个离散数据的方法,称为多项式的曲线拟合。 2.方法:
1)找出函数上的已知点系列。
2)由已知点系列确定多项式,即
式中,P 为模拟的多项式,polyfit 为调用函数,x 和y 是已知点系列,n 是多项式的阶次。(一般 n 越大越精确)
【例6】用多项式去模拟一个正弦函数 clear x=0:0.1:6; y=sin(x); xx=0:6;
)
,,(polyfit n y x p
yy=sin(xx);
a1=polyfit(xx,yy,3);
y1=polyval(a1,x);
a2=polyfit(xx,yy,4);
y2=polyval(a2,x);
a3=polyfit(xx,yy,5);
y3=polyval(a3,x);
subplot(231)
plot(x,y,'-',x,y1,'.')
subplot(232)
plot(x,y,'-',x,y2,'.')
subplot(233)
plot(x,y,'-',x,y3,'.')
结果为
n=3 n=4 n=5
可见,模拟情况与多项式的阶次有关。但并不是拟合的阶次越高越好,一方面,提高阶次必然会增加计算量;另一方面,与数据点吻合的很好也不能说明拟合的结果准确会提高,高阶多项式对噪声(NOISE)敏感度较高,因此容易产生不准确的预测。
三、总结:MATLAB是一种以矩阵运算为基础的交换式程序语言,是专门针对科学和工程
中计算和绘图的需求而开发的。与其他计算机语言相比,具有简洁和智能化的特点,人机交互性能好,特别是它可以适应多种平台,并且随着计算机硬软件的更行而及时升级。随着MATLAB版本的不断升级更新,它在基本课程教学、科学研究和工程应用中将发挥越来越大的作用。
参考文献:【1】《MATLAB基础及应用》155p、156p、157p、158p、159p、160p。刘勍、温志贤,编著。
【2】《MATLAB基础及应用教程》周开利编著,北京大学出版社。