第5章 MATLAB符号运算 —— matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic Math Toolbox 符号计算的特点: 一、运算以推理解析的方式进行,因此不受计算误差积累问题困扰; 二、符号计算,或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时); 三、符号计算指令的调用比较简单,经典教科书公式相近; 四、计算所需时间较长,有时难以忍受。 符号运算的功能 符号表达式、符号矩阵的创建 符号线性代数 因式分解、展开和简化 符号代数方程求解 符号微积分 符号微分方程 一、符号运算的基本操作 什么是符号运算 与数值运算的区别 ※ 数值运算中必须先对变量赋值,然后才能参与运算。 ※ 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。 2. 符号常量 sym(A)或 sym(A,flag) flag为可选参数,有’r’、’d’、’e’、’f’ ’r’—用有理数格式表达符号量(如分式,指数式,开方式) 默认形式 ’d’—十进制数格式(32位) 将数值量转换成符号量 f1=sym(‘log(2)’) f1 = log(2) %符 号常量 f2=sym(‘(3*4-2)/5+1’) %表达式形式的符 %号常量 f2 = (3*4-2)/5+1 3、符号变量 (1)使用函数sym() 格式 sym(‘x’)等 举例: (2)使用命令syms 格式 syms arg1 arg2 举例:syms a b c (可以定义多个符号变量,中间用空隔分隔变量) 4、符号表达式 符号表达式:由符号对象参与运算的表达式 syms x y z r s x^2+2*x+1 5、符号矩阵 符号矩阵的元素可以是符号常量、符号变量和符号表达式。 可用函数sym直接创建 符号矩阵的创建 数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别 ?用matlab函数sym创建矩阵(symbolic 的缩写) 命令格式:A=sym('[ ]') ※ 符号矩阵内容同数值矩阵 ※ 需用sym指令定义 ※ 需用' '标识 例如:A = sym('[a , 2*b ; 3*a , 0]') A = [ a, 2*b] [3*a, 0] 这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方括号,这是与 matlab数值矩阵的一个重要区别。 符号矩阵与数值矩阵的转换 将数值矩阵转化为符号矩阵 函数调用格式:sym(A) A=[1/3,2.5;1/0.7,2/5] A = 0.3333 2.5000 1.4286 0.4000 sym(A) ans = [ 1/3, 5/2] [10/7, 2/5] 将符号矩阵转化为数值矩阵 函数调用格式: numeric(A) A = [ 1/3, 5/2] [10/7, 2/5] numeric(A) ans = 0.3333 2.5000 1.4286 0.4000 用函数size( )可得到符号矩阵的大小 二、符号运算 加 减 乘 除 例1:f= 2*x^2+3*x-5; g= x^2+x-7; syms x f=2*x^2+3*x-5; g= x^2+x-7; h=f+g h = 3*x^2+4*x-12 例2:f=cos(x);g= sin(2*x); syms x f=cos(x);g=sin(2*x); f/g+f*g ans = cos(x)/sin(x)+cos(x)*sin(x) syms a b c d e f g h; A=[a b;c d];B=[e f;g h]; A+B ans = [ a+e, b+f] [ c+g, d+h] A*B A/B A.*B syms a b c d e f g h; A=[a b;c d];B=[e f;g h]; C1=A.*B C1 = [ a*e, b*f] [ c*g, d*h] syms a b c d e f g h; A=[a b;c d];B=[e f;g h]; C2=A*B C2 = [ a*e+b*g, a*f+b*h] [ c*e+d*g, c*f+d*h] syms x fx gx; fx=3*x^5-x^4+2*x^3+x^2+3; gx=1/3*x^3+x^2-3*x-1; fx*gx ans = (3*x^5-x^4+2*x^3+x^2+3)*(1/3*x^3+x^2-3*x-1) fx/gx ans = (3*x^5-x^4+2*x^3+x^2+3)/(1/3*x^3+x^2-3*x-1) 三、独立变量与表达式化简 findsym 查找符号表达式中或矩阵中哪一个变量是独立变量。 三、独立变量与表达式化简 【例】对独立自由符号变量的自动辨认。 syms a b x X Y;k=sym('3');z=sym('c*sqrt(delta)+y*sin(theta)'); EXPR=a*z*X+(b*x^2+k)*Y; findsym(EXPR) ans = X, Y, a, b, c, delta, theta, x, y findsym(EXPR,1) ans = x findsym(EXPR,2) ans = x,y 【例】findsym确定自由变量是对整个矩阵进行的。 syms a b t u v x y;A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v] findsym(A,1) A = [ a+b*x, sin(t)+u] [ x*exp(-t), log(y)+v] ans = x 合并同类项collect 多项式展开expand 因式分解factor 不定化简simple 通分numden 书写格式美化pretty 【例】按不同的方式合并同幂项。 EXPR=sym('(x^2+x*exp(-t)+1)*(x+exp(-t))'); expr1=collect(EXPR) expr2=collect(EXPR,'exp(-t)') expr1 = x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t)
第5章_Matlab符号运算.ppt
下载此电子书资料需要扣除0点,