matlab多项式运算_第1页
matlab多项式运算_第2页
matlab多项式运算_第3页
matlab多项式运算_第4页
matlab多项式运算_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab 多项式运算与代数方程求解器主要内容主要内容 l 多项式的表达方式l 多项式的四则运算l 多项式的求导l 求多项式的值l 求多项式的零点l 求线性方程组的解l 求非线性方程的根l 符号求解或求根Matlab 多项式运算多项式运算q Matlab 中多项式的表示方法u在 Matlab 中多项式是用它的来表示的。 例:2x3-x2+3 2,-1,0,3 u 多项式的符号形式:poly2sym 如, poly2sym(2,-1,0,3)运行结果:ans = 2*x3-x2+3注:系数中的零不能省!注:系数中的零不能省!多项式多项式四则运算四则运算q 多项式加减运算多项式加减运算多项式的加

2、减运算就是其所对应的多项式的加减运算就是其所对应的系数向量系数向量的加减运算的加减运算注意:注意:l 对于次数相同的多项式,可以直接对其系数向量进行加减运算;l 如果两个多项式次数不同,则应该把低次多项式中系数不足的高次项用 0 补足,然后进行加减运算。例:例:32231xxp 3 , 0 , 1 , 2122xp4222321xxxpp 1 , 2 4 , 2 , 1 , 2 1 , 2 0, 0, 多项式多项式四则运算四则运算q 多项式乘法运算:多项式乘法运算: k = conv(p,q)例:计算多项式例:计算多项式 2x3-x2+3 和和 2x+1 的乘积的乘积 p=2,-1,0,3;

3、q=2,1; k=conv(p,q)%乘积多项式的向量形式乘积多项式的向量形式 poly2sym(k) %乘积多项式的符号形式乘积多项式的符号形式 q 多项式除法运算:多项式除法运算: k,r = deconv(p,q)其中其中 k 返回的是多项式返回的是多项式 p 除以除以 q 的商的商,r 是余式是余式。q即,即,k,r=deconv(p,q) p=conv(q,k)+r多项式的多项式的求求导导q多项式的多项式的求求导导: polyderlk=polyder(p) : 多项式多项式 p 的导数;的导数;lk=polyder(p,q): p*q 的导数;的导数;lk,d=polyder(p,

4、q):p/q 的导数的导数,k 是分子是分子,d 是分母是分母例:已知例:已知 p(x)=2x3-x2+3,q(x)=2x+1 , 求求 p,(p.q),(p/q). k1=polyder(2,-1,0,3) k2=polyder(2,-1,0,3,2,1) k2,d=polyder(2,-1,0,3,2,1)多项式的多项式的值值q 计算计算多项式多项式在给定点的值在给定点的值u 代数多项式代数多项式求值求值y = polyval(p,x)l计算多项式计算多项式 p 在在 x 点的值点的值l 注:若注:若 x 是向量或矩阵,则采用是向量或矩阵,则采用数组运算数组运算 (点运算点运算)! 例:已

5、知例:已知 p(x)=2xp(x)=2x3 3-x-x2 2+3,+3,分别取分别取 x=2 和一个和一个 2 2 矩阵,矩阵, 求求 p(x) 在在 x 处的每个分量上的值处的每个分量上的值 p=2,-1,0,3; x=2; y = polyval(p,x) x=-1,2;-2,1; y = polyval(p,x)多项式的多项式的值值u 矩阵多项式矩阵多项式求值求值Y=polyvalm(p,X)l 采用的是普通矩阵运算,采用的是普通矩阵运算, 且且X 必须是方阵必须是方阵例:已知例:已知 p(x)=2x3-x2+3, 则则polyvalm(p,A) = 2*A*A*A - A*A + 3*

6、eye(size(A)polyval(P,A)=2*A.*A.*A-A.*A+3*ones(size(A) 上机验证一下:上机验证一下: p=2,-1,0,3; x=-1, 2;-2,1; polyval(p,x) polyvalm(p,x)多项式的多项式的零点零点q 计算计算多项式多项式的的零点零点(根)(根)u x=roots(p) :若若 p 是是 n 次多项式,则输出是次多项式,则输出是 p=0 的的 n 个根组成的个根组成的 n 维向量。维向量。例:已知例:已知 p(x)=2xp(x)=2x3 3-x-x2 2+3,+3, 求求 p(x) 的零点。的零点。 p=2,-1,0,3; x

7、=roots(p)q 若已知若已知多项式多项式的的所有零点所有零点,则可用,则可用 poly 函数给出该函数给出该多项式,如:多项式,如:p=poly(x) % - p(x)=(x-x1)(x-x2)(x-xn)% 其为向量形式且和原多项式差一个因子其为向量形式且和原多项式差一个因子anq多项式求根多项式求根 p=2,-1,0,3; x=roots(p)例:已知例:已知 ,求,求p(x)的根。的根。)()()(21nxxxxxxxpx=roots(p):返回多项式的根,注意返回多项式的根,注意:matlab按惯例,多项式是行向量,根是列向量。按惯例,多项式是行向量,根是列向量。若已知多项式的全

8、部根,则可用若已知多项式的全部根,则可用poly函数给出该多项式。函数给出该多项式。p=ploy(x)32)(23xxxp求解多项式的根,即求解多项式的根,即p(x)=0的解。在的解。在matlab中,求解多项式的中,求解多项式的根有根有roots函数命令来完成。函数命令来完成。q部分分式展开函数部分分式展开函数residue格式一:格式一:r,p,k=residue(b,a)Residue函数可以完成有理多项式的部分分式展开,它是一个对函数可以完成有理多项式的部分分式展开,它是一个对系统传递函数特别有用的函数,其调用格式为:系统传递函数特别有用的函数,其调用格式为:功能:把功能:把b(s)/

9、a(s)展开成:展开成:1212( ).( )nnrrrb ska sspspsp其中,其中,r代表余数数组,代表余数数组,p代表极点数组,代表极点数组,k代表常数项。代表常数项。q部分分式展开函数部分分式展开函数residue32102081912ssss6.666751.66670451sss例:例:将有理多项式将有理多项式 展开成部分分式。展开成部分分式。即有理多项式可展开为:即有理多项式可展开为:q部分分式展开函数部分分式展开函数residue格式二:格式二:b,a=residue(r,p,k)功能功能:格式一的逆作用格式一的逆作用多项式多项式运算运算小结小结poly2sym(p)求多

10、项式的符号形式求多项式的符号形式k = conv(p,q)k,r = deconv(p,q)求多项式的乘积求多项式的乘积求多项式的除法求多项式的除法k = polyder(p)k = polyder(p,q)k,d = polyder(p,q)求多项式求多项式p的导数的导数求多项式求多项式p*q的导数的导数求多项式求多项式p/q的导数的导数y = polyval(p,x)Y = polyvalm(p,X)代数多项式求值代数多项式求值矩阵多项式求值矩阵多项式求值x = roots(p)求多项式的根求多项式的根特别注意:多项式运算中特别注意:多项式运算中,使用的是多项式使用的是多项式 系数向量系数

11、向量,不涉及符号计算!不涉及符号计算!线性方程组求解线性方程组求解q 线性方程组求解线性方程组求解linsolve(A,b):解线性方程组解线性方程组 bAx 例:解方程组例:解方程组 A=1 2 -1; 1 0 1; 1 3 0; b=2;3;8; x=linsolve(A,b)22338xyzxzxy b是列向量!是列向量!非线性方程的非线性方程的根根q Matlab 非线性方程的数值求解非线性方程的数值求解 fzero(f,x0):求方程求方程 f=0 在在 x0 附近的根。附近的根。l方程可能有多个根,但方程可能有多个根,但 fzero 只给出距离只给出距离 x0 最近的一个最近的一个

12、l x0 是一个标量,不能缺省是一个标量,不能缺省lfzero 先找出一个包含先找出一个包含 x0 的区间,使得的区间,使得 f 在这个区间两在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程个端点上的函数值异号,然后再在这个区间内寻找方程 f=0 的根;如果找不到这样的区间,则返回的根;如果找不到这样的区间,则返回 NaN。l由于由于 fzero 是根据函数是否穿越横轴来决定零点,因此它是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线仅触及横轴但不穿越的零点,如无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的所有零点。的所有零点。非线性方程的非线性方程的根

13、根q fzero 的另外一种调用方式的另外一种调用方式fzero(f,a,b) 或或 fzero(f,x0) l 求方程求方程 f=0 在在 a,b 区间内区间内或或x0附近附近的根。的根。l 方程在方程在 a,b 内可能有多个根,但内可能有多个根,但 fzero 只给出一个只给出一个q 参数参数 f 可通过以下三种方式给出:可通过以下三种方式给出:l fzero(x3-3*x+1,2) %字符串字符串l f=inline(x3-3*x+1); fzero(f,2) %内联函数内联函数l fzero(x)x3-3*x+1,2) %匿名函数的函数句柄匿名函数的函数句柄q 特别注意:特别注意:f

14、不是方程!也不能使用符号表达式!不是方程!也不能使用符号表达式!如,如,syms x; f=x3-3*x+1; fzero(f,2) %error!例:例: fzero(sin(x),10)fzero(sin,10)%系统函数的函数句柄系统函数的函数句柄fzero(x3-3*x+1,1)fzero(x3-3*x+1,1,2)fzero(x3-3*x+1,-2,0)f=inline(x3-3*x+1);fzero(f,-2,0) roots(1,0,-3,1)fzero(x3-3*x+1=0,1) % 格式错误!格式错误!注意:注意:用用 fzero 求零点时,通常先通过作图确定零点的大致范围求

15、零点时,通常先通过作图确定零点的大致范围符号求解符号求解q 符号求解符号求解方程:方程:solves=solve(f,v):求方程关于指定自变量的解;求方程关于指定自变量的解;s=solve(f):求方程关于求方程关于默认自变量默认自变量的解。的解。l f 可以是用字符串表示的可以是用字符串表示的方程方程,或符号,或符号表达式表达式;l 若若 f 中不含等号,则表示解方程中不含等号,则表示解方程 f=0。例:解方程例:解方程 x3-3*x+1=0 syms x; f=x3-3*x+1;s=solve(f,x) s=solve(x3-3*x+1,x) s=solve(x3-3*x+1=0,x)符

16、号求解符号求解q solve 也可以用来解方程组也可以用来解方程组solve( f1 , f2 , . , fN , v1 , v2 , . , vN)求解由求解由 f1 , f2 , . , fN 确定的方程组关于确定的方程组关于 v1 , v2 , . , vN 的解的解例:解方程组例:解方程组 x,y,z=solve(x+2*y-z=27,x+z=3, . x2+3*y2=28,x,y,z)222273 328 xyzxzxy 输出变量的顺序要书写正确!输出变量的顺序要书写正确!solve 在得不到解析解时,会给出数值解。在得不到解析解时,会给出数值解。求解方程函数小结求解方程函数小结r

17、oots(p):求多项式的求多项式的所有零点所有零点,p 是多项式系数向量。是多项式系数向量。fzero(f,x0):求求 f=0 在在 x0 附近的根,附近的根,f 可以使用可以使用 inline(内联函数)(内联函数)、字符串、或字符串、或 (函数句柄)(函数句柄),但不能是方程或符号表达式!,但不能是方程或符号表达式!linsolve(A,b):解线性方程组。解线性方程组。solve(f,v):求方程关于指定自变量的解,求方程关于指定自变量的解,f 可以是可以是用字符串表示的方程用字符串表示的方程、符号表达式符号表达式或或符号方程符号方程;l solve 也可解方程组也可解方程组(包含非

18、线性包含非线性);l 得不到解析解时,给出数值解。得不到解析解时,给出数值解。 插值插值 n自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。n插值命令 n命令命令1 interp1n功能 一维数据插值。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。 f(x) x:原始数据点 Y:原始数据点 xi:插值点 Yi:插值点 一维插值函数:一维插值函数:yi=interp1(x,y,xi,method)插值方法插值方法被插值点被插值点

19、插值节点插值节点xixi处的插处的插值结果值结果nearest :最邻近插值:最邻近插值linear : 线性插值;线性插值;spline : 三次样条插三次样条插值;值;cubic : 立方插值。立方插值。缺省时:缺省时: 分段线性插值。分段线性插值。注意:所有的插值方注意:所有的插值方法都要求法都要求x x是单调的,是单调的,并且并且xi不能够超过不能够超过x的的范围。范围。用MATLAB作函数插值 例:在例:在1-121-12的的1111小时内,每隔小时内,每隔1 1小时测量一次小时测量一次温度,测得的温度依次为:温度,测得的温度依次为:5 5,8 8,9 9,1515,2525,292

20、9,3131,3030,2222,2525,2727,2424。试估计每隔。试估计每隔1/101/10小时的小时的温度值。温度值。hours=1:12;temps=5 8 9 15 25 29 31 30 22 25 27 24;h=1:0.1:12;t=interp1(hours,temps,h,spline); (直接输出数据将是很多的)plot(hours,temps,+,h,t,hours,temps,r:) %作图xlabel(Hour),ylabel(Degrees Celsius)xy机翼下轮廓线X035791 11 21 31 41 5Y01 . 21 . 72 . 02 .

21、12 . 01 . 81 . 21 . 01 . 6例例 已知飞机下轮廓线上数据如下,求已知飞机下轮廓线上数据如下,求x每改变每改变0.1时的时的y值。值。x0=0 3 5 7 9 11 12 13 14 15 ;x0=0 3 5 7 9 11 12 13 14 15 ;y0=0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ;y0=0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 ;x=0:0.1:15;x=0:0.1:15;y1=lagr1(x0,y0,x);y1=lagr1(x0,y0,x);y2=interp1(x0,y0,x);y2

22、=interp1(x0,y0,x);y3=interp1(x0,y0,x,spline);y3=interp1(x0,y0,x,spline);subplot(3,1,1)subplot(3,1,1)plot(x0,y0,k+,x,y1,r)plot(x0,y0,k+,x,y1,r)gridgridtitle(lagrange)title(lagrange)subplot(3,1,2)subplot(3,1,2)plot(x0,y0,k+,x,y2,r)plot(x0,y0,k+,x,y2,r)gridgridtitle(piecewise linear)title(piecewise lin

23、ear)subplot(3,1,3)subplot(3,1,3)plot(x0,y0,k+,x,y3,r)plot(x0,y0,k+,x,y3,r)gridgridtitle(spline)title(spline) 要求要求x0,y0 x0,y0单调;单调;x x,y y可取可取为矩阵,为矩阵,或或x x取行向量,取行向量,y y取取为列向量,为列向量,x,yx,y的值的值分别不能超出分别不能超出x0,y0 x0,y0的范围。的范围。z=interp2(x0,y0,z0,x,y,method)被插值点插值方法用用MATLAB作网格节点数据的插值作网格节点数据的插值插值节点被插值点的函数值nearest nearest 最邻近插值最邻近插值linear linear 双线性插值双线性插值cubic cubic 双三次插值双三次插值缺省时缺省时, , 双线性插值双线性插值例:测得平板表面例:测得平板表面3 3* *5 5网格点处的温度分别为:网格点处的温度分别为: 82 81 80 82 84 8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论