您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > matlab多项式运算与代数方程求解
1多项式运算与代数方程求解数学软件MatlabMatlab基础及应用2多项式转化为符号表达式:poly2sym四则运算:conv、deconv导数与积分:ployder、polyint求值与零点:polyval、polyvalm、roots、poly多项式运算主要内容代数方程求解线性方程组求解:linsolve非线性方程组求解:fzero、solve3Matlab多项式运算在Matlab中,n次多项式是用一个长度为n+1的向量来表示,缺少的幂次项系数为01110()nnnnpxaxaxaxa在Matlab中表示为向量:110[,,,,]nnaaaa注:系数中的零不能省!将多项式转化成符号表达式:poly2sympoly2sym([2,-1,0,3])例:2x3-x2+3[2,-1,0,3]Matlab中多项式的表示方法4多项式四则运算Matlab没有提供专门进行多项式加减运算的函数多项式的加减就是其所对应的系数向量的加减运算对于次数相同的多项式,可以直接对其系数向量进行加减运算;如果两个多项式次数不同,则应该把低次多项式中系数不足的高次项用0补足,然后进行加减运算。例:p1=2x3-x2+3p2=2x+1p1+p2=2x3-x2+2x+4[2,-1,0,3][2,1][0,0,2,1][2,-1,2,4]多项式加减运算5多项式四则运算k=conv(p,q)例:计算多项式2x3-x2+3和2x+1的乘积p=[2,-1,0,3];q=[2,1];k=conv(p,q);多项式除法运算:[k,r]=deconv(p,q)其中k返回的是多项式p除以q的商,r是余式。[k,r]=deconv(p,q)p=conv(q,k)+r多项式乘法运算:6多项式的求导k=polyder(p):多项式p的导数;k=polyder(p,q):p*q的导数;[k,d]=polyder(p,q):p/q的导数,k是分子,d是分母k1=polyder([2,-1,0,3]);k2=polyder([2,-1,0,3],[2,1]);[k3,d]=polyder([2,-1,0,3],[2,1]);例:已知p1=2x3-x2+3,p2=2x+1求:p1’,(p1p2)’,(p1/p2)’多项式的导数:polyder7多项式的积分I=polyint(p,c):多项式p的不定积分,常数项为cI=polyint(p):多项式p的不定积分,常数项为0I=polyint([2,-1,0,3]);例:已知p1=2x3-x2+3求,常数项取01()dpxx多项式的积分:polyint8多项式的值计算多项式的值代数多项式求值y=polyval(p,x):计算多项式p在x点的值注:若x是向量或矩阵,则采用的是数组运算!p=[2,-1,0,3];x=2;y=polyval(p,x)x=[-1,2;-2,1];y=polyval(p,x)例:已知p1=2x3-x2+3,分别取x=2和一个22矩阵,求p1在x的每个分量上的值9多项式的值矩阵多项式求值Y=polyvalm(p,X)采用的是普通矩阵运算X必须是方阵例:已知p=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;-2,1];polyval(p,x)polyvalm(p,x)10多项式的零点x=roots(p):若p是n次多项式,则输出是p=0的n个根组成的n维向量12()()()()npxxxxxxx若已知多项式的全部零点,则可用poly函数给出该多项式p=poly(x)p=[2,-1,0,3];x=roots(p)例:已知p=2x3-x2+3,求p(x)的零点多项式的零点11k=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),poly(x)I=polyint(p,c)I=polyint(p)12多项式的表示方法:poly2sym四则运算:conv、deconv导数与积分:ployder、polyint求值与零点:polyval、polyvalm、roots、poly多项式运算主要内容代数方程求解线性方程组数值求解:linsolve非线性方程数值求解:fzero非线性方程符号求解:solve13线性方程组求解线性方程组求解linsolve(A,b):解线性方程组Ax=b例:解方程组A=[12–1;101;130];b=[2;3;8];x=linsolve(A,b)22338xyzxzxyb是列向量!14非线性方程的根非线性方程的数值求解fzero(f,x0):求方程f=0在x0附近的根方程可能有多个根,但fzero只给出x0附近的一个fzero先找出一个包含x0的区间,使得f在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程f=0的根;如果找不到这样的区间,则返回NaNx0是一个标量,为参考点,不能缺省由于fzero是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线仅触及横轴但不穿越的零点,如|sin(x)|的所有零点15非线性方程的根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不是方程!也不能使用符号表达式!16fzero('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)Xfzero('x^3-3*x+1',[-2,0])f=inline('x^3-3*x+1');fzero(f,[-2,0])用fzero求零点时可以先通过作图确定零点的大致范围例:fzero举例17符号求解s=solve(f,v):求方程关于指定自变量的解s=solve(f):求方程关于默认自变量的解f可以是用字符串表示的方程,或符号表达式若f是字符串,可以不含等号,表示解方程f=0若f是符号表达式,不能含等号例:解方程x^3-3*x+1=0symsx;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')非线性方程的符号求解18符号求解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')222273328xyzxzxy输出变量的顺序要书写正确!solve在得不到解析解时,会给出数值解19roots(p):多项式的所有零点,p是多项式系数向量。fzero(f,x0):求f=0在x0附近的根,f可以使用inline、字符串、或@,但不能是方程或符号表达式!solve(f,v):求方程关于指定自变量的解,f可以是用字符串表示的方程、符号表达式或符号方程;solve也可解方程组(包含非线性);得不到解析解时,给出数值解。linsolve(A,b):解线性方程组。求解方程函数小结20上机作业2、已知多项式(a)求出p(x)的所有零点;(b)用fzero计算p(x)的第二大零点32()816383560003125pxxxx3、求方程组的解22241xyxy1、已知多项式423()65,()61pxxxxqxx计算及它们的导数()()(),()(),()pxpxqxpxqxqx(将所用命令写入文件m61.m)(将所用命令写入文件m62.m)(将所用命令写入文件m63.m)21上机作业4、已知Chebyshev多项式定义如下:5、编写一个函数文件:m65.m,实现两个向量的加运算(在长度较短的向量前面添0,使得两个向量长度相等)试编程计算T20(x)的导数(注:Tn(x)为n阶多项式)0111()1,(),()2()(),1,2,nnnTxTxxTxxTxTxn(将程序取名为m64.m)(注:不要使用符号计算!)22上机要求将完成每题所用的命令或程序写入相应的文件将所有M文件作为附件,以邮件形式发给wangrujun711@163.com邮件主题为:专业-学号-姓名三个字段之间用英文状态下的减号链接上机要求
本文标题:matlab多项式运算与代数方程求解
链接地址:https://www.777doc.com/doc-5180421 .html