lectmatlab多项式运算与代数方程求解器_第1页
lectmatlab多项式运算与代数方程求解器_第2页
lectmatlab多项式运算与代数方程求解器_第3页
lectmatlab多项式运算与代数方程求解器_第4页
lectmatlab多项式运算与代数方程求解器_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

Matlab多项式运算与代数方程求解器一、Matlab多项式运算

Matlab

中多项式可用其系数组成的向量表示n次多项式的系数向量长度为n+1,缺少的幂次项系数为0在Matlab中表示为向量:注:系数中的零不能省!例:多项式的符号形式:poly2sym>>

poly2sym([2,-1,0,3])1.多项式四则运算多项式加减运算Matlab没有提供专门进行多项式加减运算的函数,事实上,多项式的加减就是其所对应的系数向量的加减运算对于次数相同的多项式,可以直接对其系数向量进行加减运算;如果两个多项式次数不同,则应该把低次多项式中系数不足的高次项用0补足,然后进行加减运算。例:1.多项式四则运算多项式乘法运算:k

=

conv(p,q)例:计算多项式

的乘积>>

p=[2,-1,0,3];>>q=[2,1];>>k=conv(p,q);%[4,0,-1,6,3]多项式除法运算:[k,r]

=

deconv(p,q)其中

k

返回的是多项式

p

除以

q

的商,r

是余式。[k,r]=deconv(p,q)p=conv(q,k)+r<==>2.多项式的求导

polyderk=polyder(p):多项式

p

的导数;k=polyder(p,q):

p*q

的导数;[k,d]=polyder(p,q):p/q

的导数,k

是分子,d

是分母>>

k1=polyder([2,-1,0,3]);%[6,-2,0]>>

k2=polyder([2,-1,0,3],[2,1]);%[16,0,-2,6]>>

[k2,d]=polyder([2,-1,0,3],[2,1]);例:已知,,

求3.多项式的值

计算多项式在给定点的值

代数多项式求值y

=

polyval(p,x):计算多项式

p

x

点的值注:若x

是向量或矩阵,则采用数组运算(点运算)!>>

p=[2,-1,0,3];>>

x=2;y=polyval(p,x);%15>>

x=[-1,2;-2,1];y=polyval(p,x)例:已知

,分别取

x=2

和一个

22

矩阵,

p(x)

x处的每个分量上的值3.多项式的值

矩阵多项式求值Y=polyvalm(p,X)采用的是普通矩阵运算

X必须是方阵例:已知

,则polyvalm(p,A)=2*A*A*A

-

A*A

+

3*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)4.多项式的零点x=roots(p):若

p

n

次多项式,则输出是p=0

n

个根组成的

n

维向量。若已知多项式的全部零点,则可用poly函数给出该多项式p=ploy(x)>>

p=[2,-1,0,3];>>

x=roots(p)例:已知

,求

p(x)

的零点。k

=

conv(p,q)[k,r]

=

deconv(p,q)k

=

polyder(p)

k

=

polyder(p,q)[k,d]

=

polyder(p,q)y

=

polyval(p,x)Y

=

polyvalm(p,X)x

=

roots(p)多项式运算小结多项式运算中,使用的是多项式

系数向量,不涉及符号计算!poly2sym(p)二、线性方程组求解

线性方程组求解linsolve(A,b):解线性方程组例:解方程组>>

A=[12-1;101;130];>>

b=[2;3;8];%列向量>>

x=linsolve(A,b)%sum(x'.*A(1,:))>>

x=A\b%与上面结果相同2.非线性方程的根Matlab非线性方程的数值求解fzero(f,x0):求方程

f=0

x0

附近的根。方程可能有多个根,但fzero

只给出距离x0

最近的一个

fzero

先找出一个包含x0

的区间,使得f

在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程f=0

的根;如果找不到这样的区间,则返回NaN。

x0

是一个标量,不能缺省由于fzero

是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线仅触及横轴但不穿越的零点,如|sin(x)|

的所有零点。2.非线性方程的根

fzero

的另外一种调用方式fzero(f,[a,b])方程在[a,b]

内可能有多个根,但fzero

只给出一个

求方程f=0在[a,b]

区间内的根。

参数

f

可通过以下方式给出:

fzero('x^3-3*x+1',2);f=inline('x^3-3*x+1');fzero(f,2)

fzero(@(x)x^3-3*x+1,2);

f

不是方程!也不能使用符号表达式!例:>>

fzero('sin(x)',10)>>

fzero(@sin,10)>>

fzero('x^3-3*x+1',1)>>

fzero('x^3-3*x+1',[1,2])>>

fzero('x^3-3*x+1=0',1)X>>

fzero('x^3-3*x+1',[-2,0])>>

f=inline('x^3-3*x+1');>>

fzero(f,[-2,0])用

fzero

求零点时可以先通过作图确定零点的大致范围符号求解s=solve(f,v):求方程关于指定自变量的解;s=solve(f):求方程关于默认自变量的解。

f

可以是用字符串表示的方程,或符号表达式;若f

中不含等号,则表示解方程f=0。

solve例:解方程

x^3-3*x+1=0>>

symsx;f=x^3-3*x+1;>>

s=solve(f,x)>>

s=solve('x^3-3*x+1','x')>>

s=solve('x^3-3*x+1=0','x')符号求解

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',...

'x^2+3*y^2=28','x','y','z')输出变量的顺序要书写正确!solve在得不到解析解时,会给出数值解。roots(p):多项式的所有零点,p

是多项式系数向量。fzero(f,x0):求f=0

在x0

温馨提示

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

评论

0/150

提交评论