MATLAB基础及应用论文

MATLAB基础及应用论文
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基础及应用教程》周开利编著,北京大学出版社。

相关主题
相关文档
最新文档