当前位置:文档之家› 第三讲MATLAB的符号运算

第三讲MATLAB的符号运算

例:syms a x
f=sin(a*x)
df=diff(f)
dfa=diff(f,a,2)
符号表达式的极限
• limit(F,x,a) 求当x→a时,表达式F的极限
• limit(F, a) 默认自变量时,趋于a的极限
• limit(F)
默认自变量,默认a=0
• limit(F,x,a, 'left') 取F的左极限
泰勒级数逼近分析
• 该界面用于观察函数f(x)在给定区间被N
阶泰勒多项式Tn(x)逼近的情况。
• f(x)的输入可由命令taylortool(fx)引入,
或者在栏中直接输入表达式,回车确定。
• N默认值为7,a是级数的展开点。 • 函数的观察区间默认为(-2piபைடு நூலகம்2pi)。
符号运算的功能
• 符号表达式、符号矩阵的创建 • 符号线性代数 • 因式分解、展开和简化 • 符号代数方程求解 • 符号微积分 • 符号微分方程
vpa(x,n) —— 求符号解的近似解,该近似解的有 效位数由n来决定。
digits(25) vpa(1/2+1/3) ans = .8333333333333333333333333
vpa(5/6,40) ans = .8333333333333333333333333333333333333333
第三讲 MATLAB的符号运算
• 科学与工程技术中的数值运算固然重要,但自
然科学理论分析中各种各样的公式、关系式及 其推导就是符号运算要解决的问题。
• 在Matlab7.0中,符号计算虽以数值运算的补充
身份出现,但它们都是科学计算研究的重要内 容。
• Matlab开发了实现符号计算的工具包Symbolic
例:用函数命令sym( )和syms( )来创建符号对 象并检测数据类型。
a=sym('a')
注意两个 a的区别
b=sym('c')
classa=class(a)
classb=class(b) 可看出两个变量均为符号对象
syms a b c d e f g h
whos
也可以查看所有变量类型
从上述比较来看:当需要同时定义多个符号 变量时,使用syms( )更简洁一些。
行是自变量 x 的取值范围和常数 a 的值。
• 第四行只对 f 起作用,如求导、积分、简
化、提取分子和分母、倒数、反函数。
• 第五行是处理 f 和 a 的加减乘除等运算。
• 第六行前四个进行 f 和 g 之间的运算,后
三个分别是:求复合函数;把 f 传递给 ; swap是实现 f 和 g 功能的交换。
• 虽然并非表达式中的字符越少,表达式
就越简单,但采用这个标准往往能够得 到满意的结果,尤其是对于包含三角函 数的表达式。
例:sym x
simple(cos(x)^2+sin(x)^2)
• 从结果看出,simple比较这些不同函数的
结果,最终把最少字符作为标准。
4. 符号微积分与积分变换
• diff(f) — 对缺省变量求f的微分 • diff(f,v) — 对指定变量v求微分 • diff(f,n) — 对默认变量求n阶微分 • diff(f,v,n) —对指定变量v求f的n阶微分
多项式,三角函数、指数函数、对数函数。 例:syms x y;
f=(x+y)^3; f1=expand(f) f1 = x^3+3*x^2*y+3*x*y^2+y^3 例:h=cos(x-y) expand(h)
• factor(S) 将系数为有理数的多项式(矩
阵)S,表示成低阶多项式相乘的形式, 如果不能分解,则返回S本身。 例:syms x y
符号常量
• 当数值常量作为sym( )的输入参量时,就
建立了一个符号对象——符号常量。
• 虽然看上去是一个数值量,但已经是一
个符号对象了。
例:a=3/4; b='3/4'; c=sym(3/4); d=sym('3/4'); whos 查看变量类型
a为实双精度浮点数值类型;b为实字符类 型;c和d都是符号对象类型。
• 最后一行是对计算器自身进行操作。
• Funtool计算器存有一张函数列表fxlist
这7个功能键分别是:
• Insert:把当前激活窗的函数写入列表 • Cycle:依次循环显示fxlist中的函数 • Delete:从fxlist列表中删除激活窗的函数 • Reset:使计算器恢复到初始调用状态 • Help:获得关于界面的在线提示说明 • Demo:自动演示 • Close:关闭整个计算器
一、符号运算的基本操作
1. 什么是符号运算 • 与数值运算的区别
※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
• 特点:
运算对象可以是没赋值的符号变量,以推理解析的方 式进行,因此不受计算误差累积所带来的困扰。
可以给出完全正确的封闭解或任意精度的数值解(当封 闭解不存在时)。
1.符号矩阵运算
数值运算中,所有矩阵运算操作指令都比 较直观、简单。例如:a=b+c; a=a*b ; A=2*a^2+3*a-5等。
符号运算中,很多方面在形式上同数值计 算都是相同的,没必要重新学习新的规则。
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
1. 数值类型 matlab的浮点算术运算 2. 有理数类型 maple的精确符号运算 3. vpa类型 maple的任意精度算术
A(2,2)='4*b' A1 = [ a, 2*b]
[3*a, 4*b] A2=subs(A1, 'c', 'b') A2 =[ a, 2*c]
[3*a, 4*c]
符号矩阵与数值矩阵的转换
❖将数值矩阵转化为符号矩阵
函数调用格式:sym(A) clear A=[1/3,2.5;1/0.7,2/5] A=
由符号变量构成的符号函数和 符号方程
• 符号表达式是由符号常量、符号变量、符号函
数运算符以及专用函数连接起来的符号对象。
• 包括:符号函数和符号方程。判断看带不带等
号。 例:syms x y z; f1=x*y/z;
f2=x^2+y^2+z^2; f3=f1/f2;
e1=sym('a*x^2+b*x+c')
※ 注意与'[a,b;c,d]'的区别
例如:A = sym('[a , 2*b ; 3*a , 0]') A= [ a, 2*b] [3*a, 0]
这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方
括号,这是与 Matlab数值矩阵的 一个重要区别。
用字符串直接创建矩阵
❖ 模仿Matlab数值矩阵的创建方法 ❖ 需保证同一列中各元素字符串有相
Math Toolbox 。
图示化符号计算器
• 由三个独立的窗口构成,通过函数运算
控制窗口来演示另外两个图形窗口,任 何时候,只有一个窗口属于激活状态。 而被激活的函数图像可随运算控制窗口 的操作而做相应的变化。
• 下面给出运算控制窗口的键位功能。
• 前两行是函数 f 和 g 的具体解析式,第三
f —— 字符串名
sin(x)+5x—— 函数表达式
'
'—— 字符串标识
❖字符串表达式一定要用' '单引
号括起来Matlab才能识别。
❖用class( )来返回对象的数据类型。
‘ ’ 里的内容可以是函数表达式,也 可以是方程。
例:
f1='a*x^2+b*x+c' —— 二次三项式 f2= 'a*x^2+b*x+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程
运算
• 浮点算术运算
format long --(定义输出格式) 1/2+1/3 ans = 0.83333333333333
• 符号运算
sym(1/2)+(1/3) 或sym(1/2+1/3) ans = 5/6 --精确解
• 任意精度算术运算
digits(n) —— 设置近似解的精读为n位有效数字, 默认32位有效数字。
③符号计算指令的调用简单,和经典教科书公式相近。
④计算所需的时间较长。
• Symbolic Math Toolbox——符号运算工具包通过调用
Maple软件实现符号计算的。
• Maple软件——主要功能是符号运算,它占据符号软件
的主导地位。
2. 字符串与符号变量、符号常量
字符串对象 f = 'sin(x)+5x'
• limit(F,x,a, 'right') 取F的右极限
例:syms h n x
dc=limit((sin(x+h)-sin(x))/h,h,0)
%按照导数的定义求sin的导数
注意:对于极限不存在,返回NaN 例: limit(1/x,x,0)
limit(1/x,x,0, 'left') limit(1/x,x,0, 'right') 结果分别为:
factor(x^3-y^3)
• simplify( ) 该函数是一个强有力的具有
普遍意义的工具,它利用Maple化简规则 对表达式进行简化。
例:S=sym('[(x^2+5*x+6)/(x+2);sqrt(16)]')
相关主题