haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 小学数学小学数学

符号运算一

发布时间:2013-12-24 11:39:41  

数学实验

Matlab 符号运算 (一)

Matlab 符号运算介绍
? Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能 强大的 Maple 软件的基础上的,当 Matlab 进行符号运算时, 它就请求 Maple 软件去计算并将结果返回给 Matlab。 ? Matlab 的符号数学工具箱可以完成几乎所有得符号运算 功能。主要包括:符号表达式的运算,符号表达式的复合、 化简,符号矩阵的运算,符号微积分、符号作图,符号代 数方程求解,符号微分方程求解等。此外,该工具箱还支 持可变精度运算,即支持以指定的精度返回结果。

Matlab 符号运算特点
? 计算以推理方式进行,因此不受计算误差累积所带来的 困扰。 ? 符号计算可以给出完全正确的封闭解,或任意精度的数 值解(封闭解不存在时)。 ? 符号计算指令的调用比较简单,与数学教科书上的公式 相近。 ? 符号计算所需的运行时间相对较长。

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] 上的定积分

>> syms a b x; >> int(x^2,a,b)

符号对象与符号表达式
? 在进行符号运算时,必须先定义基本的符号对象,可以是 符号常量、符号变量、符号表达式等。符号对象是一种数据 结构。 ? 含有符号对象的表达式称为符号表达式,Matlab 在内部 把符号表达式表示成字符串,以与数字变量或运算相区别。 ? 符号矩阵/数组:元素为符号表达式的矩阵/数组。

符号对象的建立
? 符号对象的建立:sym 和 syms ? sym 函数用来建立单个符号变量,一般调用格式为:
符号变量 = sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串

例: >> a=sym('a')
>> b=sym(1/3)

a 是符号变量 b 是符号常量 c 是符号矩阵

>> c=sym('[1 ab; c d]')

符号对象的建立
? 符号对象的建立:sym 和 syms ? syms 命令用来建立多个符号变量,一般调用格式为:

syms 符号变量1 符号变量2 ... 符号变量n
例: >> syms a b c
>> a=sym('a'); >> b=sym('b'); >> c=sym('c');

符号表达式的建立
? 符号表达式的建立:
建立符号表达式通常有以下2种方法: (1) 用 sym 函数直接建立符号表达式。 (2) 使用已经定义的符号变量组成符号表达式。

例: >> y=sym('sin(x)+cos(x)')
>> x=sym('x'); >> y=sin(x)+cos(x)

符号对象的基本运算
Matlab 符号运算采用的运算符和基本函数,在形状、名称 和使用上,都与数值计算中的运算符和基本函数完全相同

? 基本运算符
? 普通运算:+ 、- 、* 、\ 、/ 、^ ? 数组运算:.* 、.\ 、./ 、.^ ? 矩阵转置:' 、.'

例:>>

X=sym('[x11,x12;x21,x22;x31,x32]');
>> Y=sym('[y11,y12,y13;y21,y22,y23]'); >> Z1=X*Y; Z2=X'.*Y;

符号对象的基本运算
? 基本函数
三角函数与反三角函数、指数函数、对数函数等 sin、cos、tan、cot、sec、csc、… asin、acos、atan、acot、asec、acsc、… exp、log、log2、log10、sqrt abs、conj、real、imag rank、det、inv、eig、lu、qr、svd diag、triu、tril、expm

查找符号变量
? 查找符号表达式中的符号变量 findsym(expr)
按字母顺序列出符号表达式 expr 中的所有符号变量

findsym(expr, N) 按顺序列出 expr 中离 x 最近的 N 个符号变量
若表达式中有两个符号变量与 x 的距离相等, 则ASCII 码大者优先。

常量 pi, i, j 不作为符号变量

findsym 举例
例: >> f=sym('2*w-3*y+z^2+5*a')
>> findsym(f) >> findsym(f,3) >> findsym(f,1)

符号表达式的替换
? 用给定的数据替换符号表达式中的指定的符号变量

subs(f,x,a) 用 a 替换字符函数 f 中的字符变量 x a 是可以是 数/数值变量/表达式 或 字符变量/表达式
若 x 是一个由多个字符变量组成的数组或矩阵, 则 a 应该具有与 x 相同的形状的数组或矩阵。

subs 举例
? 例:指出下面各条语句的输出结果 >> f=sym('2*u'); >> subs(f,'u',2) >> f2=subs(f,'u','u+2') >> a=3; >> subs(f2,'u',a+2) >> subs(f2,'u','a+2') >> syms x y >> f3=subs(f,'u',x+y) >> subs(f3,[x,y],[1,2])
下面的命令运行结果会是什么? f=2*u ans=4 f2=2*(u+2) ans=14 ans=2*((a+2)+2)) f3=2*x+2*y ans=6

>> subs(f3,[x,y],[x+y,x+y])

上机作业
? 指出下面的 M1,M2,M3 分别是什么,并上机验证。
>> a=1; b=2; c=3;d=4; >> M1=[a,b;c,d]; eval(M1) >> M2='[a,b;c,d]'; eval(M2) >> M3=sym('[a,b;c,d]'); eval(M3) ? 下面语句计算出来的 c1,c2 相等吗,为什么?上机验证。

>> a1=1e10; b1=1e-10; >> c1=(a1+b1-a1)/b1; >> a2=sym(a1); b2=sym(b1); >> c2=(a2+b2-a2)/b2;
补充:class(x) 查看指定变量 x 的类型


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com