matlab多项式运算与代数方程求解ppt课件.ppt
1,多项式运算与代数方程求解,数学软件 Matlab,Matlab基础及应用,2,多项式转化为符号表达式:poly2sym 四则运算:conv、deconv 导数与积分:ployder、polyint 求值与零点:polyval、polyvalm、roots、poly,多项式运算,主要内容,代数方程求解,线性方程组求解:linsolve 非线性方程组求解:fzero、solve,3,Matlab 多项式运算,在 Matlab 中,n 次多项式是用一个长度为 n+1的向量来表示,缺少的幂次项系数为 0,注:系数中的零不能省!,将多项式转化成符号表达式:poly2sym, poly2sym(2,-1,0,3),Matlab 中多项式的表示方法,4,多项式四则运算,Matlab 没有提供专门进行多项式加减运算的函数 多项式的加减就是其所对应的系数向量的加减运算,对于次数相同的多项式,可以直接对其系数向量进行加减运算; 如果两个多项式次数不同,则应该把低次多项式中系数不足的高次项用 0 补足,然后进行加减运算。,p1 + p2 = 2x3 - x2 + 2x + 4,2, -1, 0, 3,2, 1,0, 0, 2, 1,2, -1, 2, 4,多项式加减运算,5,多项式四则运算,k = conv(p,q),其中 k 返回的是多项式 p 除以 q 的商,r 是余式。,多项式乘法运算:,6,多项式的求导,k=polyder(p) : 多项式 p 的导数;k=polyder(p,q) : p*q 的导数;k,d=polyder(p,q) : p/q 的导数,k 是分子,d 是分母,多项式的导数: polyder,7,多项式的积分,I=polyint(p,c): 多项式 p 的不定积分,常数项为 cI=polyint(p) : 多项式 p 的不定积分,常数项为 0,多项式的积分: polyint,8,多项式的值,计算多项式的值,代数 多项式求值,y = polyval(p,x): 计算多项式 p 在 x 点的值,注:若 x 是向量或矩阵,则采用的是 数组运算!,9,多项式的值,矩阵 多项式求值,Y=polyvalm(p,X),采用的是普通矩阵运算,X 必须是方阵, 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 维向量,若已知多项式的全部零点,则可用 poly 函数给出该多项式,p=poly(x),多项式的零点,11,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), poly(x),I = polyint(p,c) I = polyint(p),12,多项式的表示方法:poly2sym 四则运算:conv、deconv 导数与积分:ployder、polyint 求值与零点:polyval、polyvalm、roots、poly,多项式运算,主要内容,代数方程求解,线性方程组数值求解:linsolve 非线性方程数值求解:fzero 非线性方程符号求解:solve,13,线性方程组求解,线性方程组求解,linsolve(A,b):解线性方程组 Ax = b,例:解方程组, A=1 2 1; 1 0 1; 1 3 0; b=2;3;8; x=linsolve(A,b),b 是列向量!,14,非线性方程的根,非线性方程的数值求解,fzero(f,x0):求方程 f=0 在 x0 附近的根,方程可能有多个根,但 fzero 只给出 x0 附近的一个,fzero 先找出一个包含 x0 的区间,使得 f 在这个区间两个端点上的函数值异号,然后再在这个区间内寻找方程 f=0 的根;如果找不到这样的区间,则返回 NaN,x0 是一个标量,为参考点,不能缺省,由于 fzero 是根据函数是否穿越横轴来决定零点,因此它无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的所有零点,15,非线性方程的根,fzero 的另外一种调用方式,fzero(f,a,b),方程在 a,b 内可能有多个根,但 fzero 只给出一个,求方程 f=0 在 a,b 区间内的根。,参数 f 可通过以下方式给出:,字符串:fzero(x3-3*x+1,2) 内联函数:f=inline(x3-3*x+1); fzero(f,2) 匿名函数:fzero(x)x3-3*x+1, 2),f 不是方程!也不能使用符号表达式!,16, 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=0,1),X, fzero(x3-3*x+1,-2,0) f=inline(x3-3*x+1); fzero(f,-2,0),用 fzero 求零点时可以先通过作图确定零点的大致范围,例:,fzero 举例,17,符号求解,s=solve(f,v) :求方程关于指定自变量的解s=solve(f) :求方程关于默认自变量的解,f 可以是用字符串表示的方程,或符号表达式 若 f 是字符串,可以不含等号,表示解方程 f=0 若 f 是符号表达式,不能 含等号,例:解方程 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),非线性方程的符号求解,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, . x2+3*y2=28,x,y,z),输出变量的顺序要书写正确!,solve 在得不到解析解时,会给出数值解,19,roots(p):多项式的所有零点,p 是多项式系数向量。,fzero(f,x0):求 f=0 在 x0 附近的根,f 可以使用 inline、字符串、或 ,但不能是方程或符号表达式!,solve(f,v):求方程关于指定自变量的解,f 可以是用字符串表示的方程、符号表达式或符号方程; solve 也可解方程组(包含非线性); 得不到解析解时,给出数值解。,linsolve(A,b):解线性方程组。,求解方程函数小结,20,上机作业,2、已知多项式,求出 p(x) 的所有零点; 用 fzero 计算 p(x) 的第二大零点,3、求方程组 的解,1、已知多项式,计算 及它们的导数,( 将所用命令写入文件 m61.m ),( 将所用命令写入文件 m62.m ),( 将所用命令写入文件 m63.m ),21,上机作业,4、已知 Chebyshev 多项式定义如下:,5、编写一个函数文件: m65.m,实现两个向量的加运算 ( 在长度较短的向量前面添 0,使得两个向量长度相等),试编程计算 T20(x) 的导数(注:Tn(x) 为 n 阶多项式),( 将程序取名为 m64.m ),(注:不要使用符号计算!),22,上机要求,将完成每题所用的命令或程序写入相应的文件将所有 M 文件作为附件,以邮件形式发给 邮件主题为:专业-学号-姓名三个字段之间用英文状态下的减号链接,上机要求,