预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MATLAB的符号运算1.什么是符号运算什么是符号运算 与数值运算的区别 ※数值运算中必须先对变量赋值,然后才能参与运算。 ※符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。运算对象可以是没有赋值的符号变量表示。 2.符号变量与符号表达式的创建 f='sin(x)+5x' f——符号变量名 sin(x)+5x——符号表达式 ''——符号标识 符号表达式一定要用‘’单引号括起来matlab才能识别。 ''的内容可以是符号表达式,也可以是符号方程。 例:f1='ax^2+bx+c'——二次三项式 f2=‘ax^2+bx+c=0’——方程 f3=‘Dy+y^2=1’——微分方程 符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算 MATLAB的符号数学工具箱提供了用于创建符号变量和符号表达式的两种基本函数,即sym和syms。 创建符号类型数值 >>a=3; s1=sym(a) s1= 3 创建符号类型变量 >>a=sym('alpha') a= alpha创建符号表达式 >>symsab; f=a^2+2*b f= a^2+2*b 符号表达式也可以通过sym函数直接创建 >>sym(a^2+2*b) ans= a^2+2*b 对于一个已有的表达式可以通过findsym函数需找该表达式中的符号变量。 >>symsab; f=a^2+2*b; findsym(f) ans= a,b3.符号矩阵的创建 数值矩阵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数值矩阵的一个重要区别。②用matlab函数syms创建矩阵 >>symsab A=[a,2*b;3*a,0] A= [a,2*b] [3*a,0] ③用字符串直接创建矩阵 模仿matlab数值矩阵的创建方法 需保证同一列中各元素字符串有相同的长度。 >>A=['[a,2*b]';'[3*a,0]'] A= [a,2*b] [3*a,0]4.符号矩阵的修改 a.直接修改 可用、键找到所要修改的矩阵,直接修改 b.指令修改 subs用于替换求值 格式:subs(s,new) 含义:s中符号变量用数值型变量或表达式new替换,一般替换的是s中与x接近的符号变量。 例:把x=2带入到表达式f=2x2-3x+1 >>symsx; f=2*x^2-3*x+1; subs(f,2) ans= 3 格式:subs(s,old,new) 含义:s中的符号变量old用数值型变量或表达式new替代。 符号矩阵的数值转换的例子 例:>>symsxyzuvw; F=[sin(x),cos(y),exp(z)]; subs(F,[xyz],[uvw]) ans= [sin(u),cos(v),exp(w)] 例:把表达式f=x2y+3xy1/2中的x用5代替。 >>symsxy; f=x^2*y+3*x*y^(1/2); subs(f,x,5) ans= 25*y+15*y^(1/2) subs(f,y,5) ans= 5*x^2+3*5^(1/2)*x5.符号矩阵与数值矩阵的转换 a.将数值矩阵转化为符号矩阵 函数调用格式:sym(A) >>A=[1/35/2;10/72/5] A= 0.33332.5000 1.42860.4000 sym(A) ans= [1/3,5/2] [10/7,2/5]b.将符号矩阵转化成数值矩阵 函数调用格式:double(A) >>A=sym('[1/35/2;10/72/5]') A= [1/3,5/2] [10/7,2/5] double(A) ans= 0.33332.5000 1.42860.40006.符号矩阵的运算 a.算数符号操作 命令+、-、*、.*、\、.\、/、./、^、.^、’、.’ 用法如下: A+B、A-B符号阵列的加法与减法 若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。 >>symsabcdm; A=[ab;cd]; B=m; A-B ans= [a-m,b-m] [c-m,d-m]A*B符号矩阵乘法 A*B为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数。 A.*B符号数组的乘法 A.*B