matlab实验3多项式运算优质PPT.ppt
《matlab实验3多项式运算优质PPT.ppt》由会员分享,可在线阅读,更多相关《matlab实验3多项式运算优质PPT.ppt(17页珍藏版)》请在冰豆网上搜索。
![matlab实验3多项式运算优质PPT.ppt](https://file1.bdocx.com/fileroot1/2022-10/6/99af62f4-cb3c-4bdc-bbb5-69977b2d813e/99af62f4-cb3c-4bdc-bbb5-69977b2d813e1.gif)
对于次数相同的多项式,可以直接对其系数向量进行加减运算;
如果两个多项式次数不同,则应该把低次多项式中系数不足的高次项用0补足,然后进行加减运算。
p1=2x3-x2+3-2,-1,0,3p2=2x+1-2,1-0,0,2,1p1+p2=2x3-x2+2x+4-2,-1,2,4,多项式四则运算,多项式乘法运算:
k=conv(p,q)例:
计算多项式2x3-x2+3和2x+1的乘积p=2,-1,0,3;
q=2,1;
k=conv(p,q)%乘积多项式的向量形式poly2sym(k)%乘积多项式的符号形式多项式除法运算:
k,r=deconv(p,q)其中k返回的是多项式p除以q的商,r是余式。
即,k,r=deconv(p,q)p=conv(q,k)+r,多项式的求导,多项式的求导:
polyderk=polyder(p):
多项式p的导数;
k=polyder(p,q):
p*q的导数;
k,d=polyder(p,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),多项式的值,计算多项式在给定点的值代数多项式求值y=polyval(p,x)计算多项式p在x点的值注:
若x是向量或矩阵,则采用数组运算(点运算)!
已知p(x)=2x3-x2+3,分别取x=2和一个22矩阵,求p(x)在x处的每个分量上的值p=2,-1,0,3;
x=2;
y=polyval(p,x)x=-1,2;
-2,1;
y=polyval(p,x),多项式的值,矩阵多项式求值Y=polyvalm(p,X)采用的是普通矩阵运算,且X必须是方阵例:
已知p(x)=2x3-x2+3,则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;
polyval(p,x)polyvalm(p,x),多项式的零点,计算多项式的零点(根)x=roots(p):
若p是n次多项式,则输出是p=0的n个根组成的n维向量。
已知p(x)=2x3-x2+3,求p(x)的零点。
x=roots(p)若已知多项式的所有零点,则可用poly函数给出该多项式,如:
p=poly(x)%-p(x)=(x-x1)(x-x2)(x-xn)%其为向量形式且和原多项式差一个因子an,线性方程组求解,线性方程组求解,linsolve(A,b):
解线性方程组,例:
解方程组,A=12-1;
101;
130;
b=2;
3;
8;
x=linsolve(A,b),b是列向量!
非线性方程的根,Matlab非线性方程的数值求解fzero(f,x0):
求方程f=0在x0附近的根。
方程可能有多个根,但fzero只给出距离x0最近的一个x0是一个标量,不能缺省fzero先找出一个包含x0的区间,使得f在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程f=0的根;
如果找不到这样的区间,则返回NaN。
由于fzero是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线仅触及横轴但不穿越的零点,如|sin(x)|的所有零点。
非线性方程的根,fzero的另外一种调用方式fzero(f,a,b)或fzero(f,x0)求方程f=0在a,b区间内或x0附近的根。
方程在a,b内可能有多个根,但fzero只给出一个参数f可通过以下三种方式给出:
fzero(x3-3*x+1,2)%字符串f=inline(x3-3*x+1);
fzero(f,2)%内联函数fzero(x)x3-3*x+1,2)%匿名函数的函数句柄特别注意:
f不是方程!
也不能使用符号表达式!
如,symsx;
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求零点时,通常先通过作图确定零点的大致范围,符号求解,符号求解方程:
solves=solve(f,v):
求方程关于指定自变量的解;
s=solve(f):
求方程关于默认自变量的解。
f可以是用字符串表示的方程,或符号表达式;
若f中不含等号,则表示解方程f=0。
解方程x3-3*x+1=0symsx;
s=solve(f,x)s=solve(x3-3*x+1,x)s=solve(x3-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,.x2+3*y2=28,x,y,z),输出变量的顺序要书写正确!
solve在得不到解析解时,会给出数值解。