第4讲 多项式与符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB还提供了一个fzero函数,可以用来求单变量非线性方程的求根。 该函数的调用格式为: z=fzero(‘fname’,x0) 其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有 多个根,但fzero函数只能给出离x0最近的那个根。
命令如下: fzero('x-10^x+2',0.5) ans = 0.3758 或 建立函数文件f.m。 function y=f(x) y=x-10^x+2; 调用fzero函数求根。 fzero('f',0.5) ans = 0.3758
Байду номын сангаас
x 4 8 x3 10
和
2 x2 x 3
的乘积
命令如下: p1=[1,8,0,0,-10]; p2=[2,-1,3]; c=conv(p1,p2) c= 2 15 -5 24 -20
10 -30
3 多项式除法
函数[q,r]=deconv(p1,p2)用于多项式p1和p2作除法运算,其 中q返回多项式p1除以p2的商式,r返回p1除以p2的余式。这里, q和r仍是多项式系数向量。
命令如下: p=[1,2,1]; x=1:4; y=polyval(p,x) y= 4 9 16
25
roots函数用来求代数多项式的根, 其调用格式为: x=roots(p) 如果x为向量,则p=poly(x)可以建立一个以x为其根的多项式。
命令如下: p=[1,-6,11,-6]; x=roots(p) x= 3.0000 2.0000 1.0000 如果键入命令p=poly(x),则可得到以3,2,1为根的三次多 项式的系数 p= 1.0000 -6.0000 11.0000 -6.0000
p1=[1,8,0,0,-10]; p2=[2,-1,3]; [q,r]=deconv(p1,p2) q= 0.5000 4.2500 1.3750 r= 0 0 0 -11.3750 -14.1250
多项式的求导
对多项式求导数的函数是: p=polyder(p1):求多项式p1的导函数。 p=polyder(p1,p2):求多项式p1和p2乘积的导函数。 [p,q]=polyder(p1,p2):求多项式p1和p2之商的导函数,p、 q是导函数的分子、分母。
2 求矩阵的最大值和最小值 求矩阵A的最大值的函数有三种调用格式,分别是: (1)max(A):返回一个行向量,向量的i个元素是矩阵A的第i列的最大值。 (2)[y,u]=max(A):返回行向量y和u,y纪录A的每列的最大值,u纪录每 列最大值的行号。 求矩阵A的最小值的函数min(A),用法与max(A)完全相同
函数极值
MATLAB提供了求函数极值的函数fminbnd和fminsearch,它 们分别用于求单变量函数和多变量函数的最小值点,其调用格 式为: x=fminbnd(‘fname’,x1,x2) x=fminsearch(‘fname’,x0) 这里,fname是目标函数名,x1和x2限定自变量的取值范围, 而x0是搜索起点的坐标。 MATLAB没有专门提供求函数最大值点的函数,当需要求函数 在区间(a,b)上最大值点时,可将它转化为求-f(x)在(a,b)上的 最小值点。
MATLAB符号计算
MATLAB为用户提供了一种符号数据类型,相应的运算对象称为符号对象。例如,符号常量、 符号变量以及为它们参与的数学表达式等。在进行符号运算前首先要建立符号对象,然后才能 进行符号对象的运算。 1 建立符号变量和符号常量 (1)sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号变量名=sym(‘符号字符串’) 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 例如,a=sym(‘a’)将建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。符 号变量a和在其他过程中建立的非符号变量a是不同的。一个非符号变量在参与运算前必须赋值, 变量的运算实际上是该变量所对应值的运算,其运算结果是一个和变量类型对应的值,而符号 变量参与运算前无须赋值,其结果是一个由参与运算的变量名组成的表达式。下面的命令及其 运算结果,说明了符号变量与非符号变量的差别。 在MATLAB命令窗口,输入以下命令: a=sym('a'); %定义符号变量a,b b=sym('b'); x=3; %定义数值变量x,y y=4; w=a*a+b*b %符号运算 w= a^2+b^2 w=x*x+y*y %数值运算 w= 25
6 排序
对向量元素的进行排序是一种经常性的操作,MATLAB提供了sort函 数对向量x进行排序。 y=sort(x):返回一个对x中元素按升序排列后的向量y。 [y,i]=sort(x):返回一个对x中的元素按升序排列的向量y,而i记录y中 元素在x中的位置。
多项式
多项式的四则运算
多项式之间可以进行四则运算,其运算结果仍为多项式。 1 多项式的加减运算 MATLAB没有提供专门进行多项式加减运算的函数。事实上,多项式的加 减运算就是其所对应的系数向量的加减运算。对于次数相同的两个多项式, 可直接对多项式系数向量进行加减运算。如果多项式的次数不同,则应该 把低次的多项式系数不足的高次项用0补足,使各多项式具有相同的次数。
(3)利用已经定义的符号变量组成符号表达式。 例如 syms x y; z=3*x^2-5*y+2*x*y+6 z= 3*x^2-5*y+2*x*y+6
3 符号表达式中变量的确定 利用函数findsym(s)可以确定符号表达式s中的全部符号变量。例如: syms a b x y; %定义4个符号变量 c=sym('3'); %定义1个符号常量 s=3*x+y; findsym(s) ans = x, y findsym(5*x+2) ans = x findsym(a*x+b*y+c) %符号变量c不会出现在结果中 ans = a, b, x, y
符号表达式运算
1 符号表达式四则运算 符号表达式的加、减、乘、除和幂运算可分别由函数symadd、 symsub、symmul、symdiv和sympow来实现。例如 f='2*x^2+3*x-5' f= 2*x^2+3*x-5 g='x^2-x+7' g= x^2-x+7 symadd(f,g) %加法运算 ans = 3*x^2+2*x+2 sympow(f,'2*x') %乘幂运算 ans = (2*x^2+3*x-5)^(2*x)
4 平均值、标准方差
或
1 n 2 ( xi x) 2 n i 1
MATLAB提供了mean,std函数来计算平均值、标准方差或方差。 这些函数的调用方法如下: mean(x):返回向量x的算术平均值。 std(x):返回向量x的标准方差。 对于矩阵A,mean函数的一般调用格式为: y=mean(A,dim) 这里,dim取1或2。当dim=1时,返回一个行向量y,y的第i个元素 是A的第i列元素的平均值;当dim=2时,返回一个列向量y,y的第i 个元素是A的第i行元素的平均值。 对于矩阵A,std函数的一般调用格式为: y=std(A,flag,dim) 这里,dim取1或2。当dim=1时,求各列元素的标准方差;当dim=2 时,求各行元素的标准方差。flag取0或1,当flag=0时,按计算标准 方差;当flag=1时,按计算方差。缺省flag=0,dim=1。
命令如下: p1=[1,-1]; p2=[1,-1,3]; [p,q]=polyder(p1,p2) p= -1 2 2 q= 1 -2 7 -6 9
多项式的求值和求根
polyval函数用来求代数多项式的值,其调用格式为: y=polyval(p,x) 若x为一数值,则求多项式在该点的值;若x为向量,则对向量中的每 个元素求其多项式的值。
(2)syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供 了另一个函数syms,一次可以定义多个符号变量。syms函数的一 般调用格式为: syms 符号变量名1 符号变量2 … 符号变量n 用这种格式定义符号变量时,变量间用空格而不要用逗号分隔。 例如,用syms函数定义4个符号变量a,b,命令如下: syms a b
2 建立符号表达式
含有符号对象的表达式称为符号表达式。 建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。例如 y='1/sqrt(2*x)' y= 1/sqrt(2*x) (2)利用sym函数建立符号表达式。例如 z=sym('3*x^2-5*y+2*x*y+6') z= 3*x^2-5*y+2*x*y+6 A=sym('[a,b;c,d]') A= [ a, b] [ c, d] 第一条命令建立一个符号函数表达式,第二条命令生成一个符号矩阵。
应用sym函数还可以定义符号变量,使用符号变量进行代数运算时和数值常量 进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差 别 在MATLAB命令窗口,输入命令: p1=sym('pi'); %定义符号常量 a=sym('3'); b=sym('4'); p2=pi; %定义数值常量 x=3; y=4; sin(p1/3) %符号计算 ans = 1/2*3^(1/2) sin(p2/3) %数值计算 ans = 0.8660 cos((a+b)^2)-sin(pi/4) %符号计算 ans = cos(49)-1/2*2^(1/2) cos((x+y)^2)-sin(pi/4) %数值计算 ans = -0.4065 从命令执行情况可以看出,用符号常量进行计算更像在进行数学运算,所得 到的结果是精确的数学表达式,而数值计算将结果近似为一个有限小数。
例2-1 求多项式 命令如下: p1=[1,-2,5,3]; p2=[0,0,6,-1]; c=p1+p2 c= 1 -2 11 2
x3 2 x 2 5 x 3 和 6 x 1
的和
2 多项式的乘法运算
函数conv(p1,p2)用于求多项式p1和p2的乘积。这里,p1、p2是两个 多项式系数向量。 例2-2 求多项式
3 求和与求积 数据序列求和与求积函数是sum和prod,其使用方法类似。设x是一个向 量,A是一个矩阵,函数的调用格式为: sum(x):返回向量x各元素之和。 prod(x):返回向量x各元素的乘积。 sum(A):返回一个行向量,其第i个元素是A的第i列的元素之和。 prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。 sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时,返回 一个列向量,其第i个元素是A的第i行的元素之和。 prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回 一个列向量,其第i个元素是A的第i行的元素乘积。
第4讲 多项式与符号运算
刘雁 三峡大学理学院 2013.3
提纲
数据统计 多项式 函数极值 Matlab符号运算
数据统计
1 求向量的最大值和最小值 求一个向量x的最大值的函数有两种调用格式,分别是: (1)max(x):返回向量x的最大值,如果x中包含复数元素,则按模取最大 值。 (2)[y, i]=max(x):返回向量x的最大值存入y,最大值的序号存入i,如果x 中包含复数元素,则按模取最大值。 求向量x的最小值函数是min(x),用法与max(x)完全相同。
命令如下: fminbnd('x^3-2*x-5', 0, 5) ans = 0.8165
建立函数文件f.m。 function w=f(p) x=p(1); y=p(2); z=p(3); w=x+y^2/(4*x)+z^2/y+2/z; 调用fminsearch函数求多元函数在[1/2,1/2,1/2]附近的最小值点。 w=fminsearch('f ',[1/2,1/2,1/2]) w= 0.5000 1.0000 1.0000 计算多元函数的最小值。 f(w) ans = 4.0000