当前位置:文档之家› Matlab+符号运算

Matlab+符号运算


>> 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 点的值
p( x) ( x x1 )(x x2 )( x xn )
多项式运算小结
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)
例如:A = sym('[a , 2*b ; 3*a , 0]') A= [ a, 2*b] [3*a, 0] 这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方 括号,这是与 matlab数值矩阵的 一个重要区别。
符号对象的建立
符号对象的建立:sym 和 syms
syms 命令用来建立多个符号变量,一般调用格式

f (v)
v a
b
symsum(f,a,b): 关于默认变量求和
1 例:计算级数 S 2 及其前100项的部分和 n 1 n >> syms n; f=1/n^2; >> S=symsum(f,n,1,inf) >> S100=symsum(f,n,1,100) x 例:计算函数级数 S 2 n 1 n
例: >> y=sym('sin(x)+cos(x)')
>> x=sym('x'); >> y=sin(x)+cos(x)
符号对象的基本运算
Matlab 符号运算采用的运算符和基本函数,在形状、名称 和使用上,都与数值计算中的运算符和基本函数完全相同
基本运算符
普通运算:+ 、- 、* 、\ 、/ 、^ 数组运算:.* 、.\ 、./ 、.^ 矩阵转置:' 、.'
x M, lim1 n n
n
>> syms x h n; >> L=limit((log(x+h)-log(x))/h,h,0) >> M=limit((1-x/n)^n,n,inf)
计算导数
diff g=diff(f,v):求符号表达式 f 关于 v 的导数 g=diff(f):求符号表达式 f 关于默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数
(2) fplot(格式相对ezplot单一)
fplot(‘fun’,lims)
(3)空间曲面绘图: ezmesh、ezsurf
Matlab 符号运算举例
求一元二次方程 ax2 + bx + c = 0 的根 >> solve('a*x^2+b*x+c') 求的根 f (x) = (cos x)2 的一次导数 >> x=sym('x'); >> diff(cos(x)^2)(为什么引号可以去掉) 计算 f (x) = x2 在区间 [a, b] 上的定积分
3 2 p 2 x x 3 例: 1 p2 2 x 1 p1 p2 2 x 3 x 2 2 x 4
[2, 1, 0, 3] [ 0, 0, 2, 1] [2, 1, 2, 4]
多项式四则运算
多项式乘法运算: k = conv(p,q)
例:计算多项式 2 x 3 x 2 3 和 2 x 1 的乘积
例:>> X=sym('[x11,x12;x21,x22;x31,x32]');
>> Y=sym('[y11,y12,y13;y21,y22,y23]'); >> Z1=X*Y; Z2=X'.*Y;
六类常见符号运算
因式分解、展开、合并、简化及通分等 计算极限 计算导数 计算积分 符号求和 代数方程和微分方程求解
>> p=[2,-1,0,3]; >> q=[: [k,r] = deconv(p,q)
其中 k 返回的是多项式 p 除以 q 的商,r 是余式。 [k,r]=deconv(p,q) <==> p=conv(q,k)+r
多项式的求导
polyder
多项式运算中, 使用的是多项式
系数向量,
不涉及符号计算!
为:
syms 符号变量1 符号变量2 ... 符号变量n
>> a=sym('a'); >> b=sym('b'); >> c=sym('c');
例: >> syms a b c
符号表达式的建立
符号表达式的建立:
建立符号表达式通常有以下2种方法: (1) 用 sym 函数直接建立符号表达式。 (2) 使用已经定义的符号变量组成符号表达式。
因式分解
因式分解
factor(f)
>> syms x; f=x^6+1; >> factor(f)
函数展开
函数展开
expand(f)
多项式展开
>> syms x; f=(x+1)^6; >> expand(f)
三角函数展开
>> syms x y; f=sin(x+y); >> expand(f)
多项式的值
矩阵多项式求值
Y=polyvalm(p,X)
采用的是普通矩阵运算 X 必须是方阵
3 2 例:已知 p( x) 2 x x 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)
>> syms x; >> f=sin(x)+3*x^2; >> g=diff(f,x)
计算积分
int(f,v,a,b): 计算定积分

b
a
f ( v )dv
int(f,a,b): 计算关于默认变量的定积分
int(f,v): 计算不定积分
f (v )dv
int(f): 计算关于默认变量的不定积分
多项式的零点
x=roots(p):若 p 是 n 次多项式,则输出是 p=0 的 n 个根组成的 n 维向量。
3 2 例:已知 p( x) 2 x x 3,求 p(x) 的零点。
>> p=[2,-1,0,3]; >> x=roots(p) 若已知多项式的全部零点,则可用 poly 函数给出该多项式 p=ploy(x)
注:若 x 是向量或矩阵,则采用数组运算 (点运算)! 例:已知 p( x) 2 x 3 x 2 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)
合并同类项
合并同类项
collect(f,v): 按指定变量 v 进行合并 collect(f): 按默认变量进行合并
>> syms x y; >> f= x^2*y + y*x - x^2 + 2*x ; >> collect(f) >> collect(f,y)
函数简化
函数简化
y=simple(f): 对 f 尝试多种不同的算法进行
Matlab 符号运算
所谓符号计算是指在运算时,无须事先 对变量赋值,而将所得到结果以标准的符号 形式来表示。 如y=a*x^2+b*x a,b,x就是以a, b , x的形式出现,这时a \b\ x都是符号对象。
Matlab 符号运算介绍
Matlab 符号运算是通过符号数学工具箱 (Symbolic Math Toolbox)来实现的。此工具 箱已默认安装。
>> syms a b x; >> int(x^2,a,b)
符号对象与符号表达式
在进行符号运算时,必须先定义基本的符号对象,可以是 符号常量、符号变量、符号表达式等。
含有符号的表达式称为符号表达式,Matlab 在内部把符 号表达式表示成字符串,以与数字变量相区别。 符号矩阵/数组:元素为符号表达式的矩阵/数组。
Matlab 的符号数学工具箱可以完成几乎所有得符号运算 功能。主要包括:符号表达式的运算(加减等),符号表达 式的化简,符号矩阵的运算,符号微积分、符号作图,符 号代数方程求解,符号微分方程求解等。
复习:符号函数(显函数、隐函数和参数方程)画图
(1) ezplot
ezplot(‘f(x)’,[a,b]) ezplot(‘f(x,y)’,[xmin,xmax,ymin,ymax]) ezplot(‘x(t)’,’y(t)’,[tmin,tmax])
相关主题