资源描述:
《Matlab 多项式运算与代数方程求解器.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数学实验Matlab多项式运算与代数方程求解器Matlab多项式运算Matlab中多项式的表示方法在Matlab中,n次多项式是用一个长度为n+1的向量来表示,缺少的幂次项系数为0。在Matlab中表示为向量:注:系数中的零不能省!例:多项式显示:poly2sym(p,’x’)多项式四则运算多项式加减运算Matlab没有提供专门进行多项式加减运算的函数,事实上,多项式的加减就是其所对应的系数向量的加减运算对于次数相同的多项式,可以直接对其系数向量进行加减运算;如果两个多项式次数不同,则应该把低次多项式中系数不足的高
2、次项用0补足,然后进行加减运算。例:多项式四则运算多项式乘法运算:k=conv(p,q)例:计算多项式和的乘积>>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<==>多项式的求导polyderk=polyder(p):多项式p的导数;k=polyder(p,q):p*q的导数;[k,d]=polyder(p,q):p/q的导数,k是分
3、子,d是分母>>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=[2,-1,0,3];>>x=2;y=polyval(p,x)>>x=[-1,2;-2,1];y=polyval(p,x)例:已知,分别取x=2和一个22矩
4、阵,求p(x)在x处的值多项式的值矩阵多项式求值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)多项式的零点x=roots(p):若p是n次多项式,则输出是p=0的n个根组成的n维向量。若已知多项式的全部零点,则
5、可用poly函数给出该多项式p=ploy(x)>>p=[2,-1,0,3];>>x=roots(p)例:已知,求p(x)的零点。poly2sym(p,’x’)k=conv(p,q)[k,r]=deconv(p,q)k=polyder(p)[k,d]=polyder(p,q)[k,d]=polyder(p,q)y=polyval(p,x)Y=polyvalm(p,X)x=roots(p)多项式运算小结多项式运算中,使用的是多项式系数向量,不涉及符号计算!线性方程组求解线性方程组求解linsolve(A,b):解线性方
6、程组例:解方程组>>A=[12–1;101;130];>>b=[2;3;8];>>x=linsolve(A,b)b是列向量!非线性方程的根Matlab非线性方程的数值求解fzero(f,x0):求方程f=0在x0附近的根。方程可能有多个根,但fzero只给出距离x0最近的一个fzero先找出一个包含x0的区间,使得f在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程f=0的根;如果找不到这样的区间,则返回NaN。x0是一个标量,不能缺省由于fzero是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线
7、仅触及横轴但不穿越的零点,如
8、sin(x)
9、的所有零点。非线性方程的根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(
10、'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])Matlab符号方程求解器s=solve(f,v):求方程关于指定自变量的解;s=solve(