符号计算与符号微积分

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


特点:
运算对象可以是没赋值的符号变量,以 推理解析的方式进行,因此不受计算误 差累积所带来的困扰。
可以给出完全正确的封闭解或任意精度 的数值解(当封闭解不存在时)。
③符号计算指令的调用简单,和经典教科 书公式相近。 ④计算所需的时间较长。

2. 字符串与符号变量、符号常量
字符串对象 f = 'sin(x)+5x' f —— 字符串名 sin(x)+5x—— 函数表达式 ' '—— 字符串标识 字符串表达式一定要用' '单引号 括起来Matlab才能识别。 用class( )来返回对象的数据类型。
A=U*S*V
符号矩阵

例子:查看运行结果
syms
abcd A=[a c b d;d c b a ;b c a d]; v=diag(A) B=diag(v,0) c=diag(V,-2) rank(A)
符号矩阵





例子:查看运行结果 A=sym([1 0 2 4;0 2 4 5;1 4 5 3]); >> A=sym('[1 0 2 4+0;0 2 4 5;1 4 5 3]') A= [ 1, 0, 2, 4+0] [ 0, 2, 4, 5] [ 1, 4, 5, 3] >> rank(A) ans = 3 >> diag(A,3) ans = 4+0

符号表达式

符号表达式是由符号常量、符号变量、符号函数运算符以 及专用函数连接起来的符号对象。 包括:符号函数和符号方程。判断看带不带等号。 单引号定义

>>f1=‘a*x^2+b*x+c=0’ %这种方法a,x,b,c可以不用先定义成符号 向量 >>f2=sym(‘x*log(x)-sin(x)’)

sym:建立单个符号量 例如: >> a=sym('a');b=sym('b');c=sym('c');d=sym('d'); >> A=[a,b;c,d] A= [ a, b] [ c, d] >> det(A) ans = a*d-b*c

syms,一次定义多个符号变量,例如:
>>
括号,这是与 Matlab数值矩阵的
一个重要区别。
用字符串直接创建矩阵

模仿Matlab数值矩阵的创建方法 需保证同一列中各元素字符串有相 同的长度。
例:A =['[ a,2*b]'; '[3*a, 0]'] A= [ a, 2*b] [3*a, 0]
符号矩阵与数值矩阵的转换
将数值矩阵转化为符号矩阵

expand(s) 将s中的各项进行展开,用 于多项式,三角函数、指数函数、对数函 数。 例: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 factor(x^3-y^3) simplify( ) 该函数是一个强有力的具有 普遍意义的工具,它利用Maple化简规则 对表达式进行简化。 例:S=sym('[(x^2+5*x+6)/(x+2);sqrt(16)]') simplify(S)

Funtool计算器存有一张函数列表fxlist 这7个功能键分别是: Insert:把当前激活窗的函数写入列表 Cycle:依次循环显示fxlist中的函数 Delete:从fxlist列表中删除激活窗的函 数 Reset:使计算器恢复到初始调用状态 Help:获得关于界面的在线提示说明 Demo:自动演示 Close:关闭整个计算器

(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( )更简洁一些。
符号表达式、符号矩阵的创建
符号线性代数
因式分解、展开和简化
符号代数方程求解
符号微积分
符号微分方程
一、符号运算的基本操作
1. •
什么是符号运算 与数值运算的区别 ※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
1.
数值类型
matlab的浮点算术运算
2.
有理数类型 maple的精确符号运算
vpa类型 maple的任意精度算术运算
3.

浮点算术运算
format long --(定义输出格式) 1/2+1/3
ans =
0.83333333333333
函数调用格式:sym(A) clear 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]
将符号矩阵转化为数值矩阵
函数调用格式:eval(A) A= [ 1/3, 5/2] [10/7, 2/5]

sym/syms定义


f3=sym('sin(x)^2+2*cos(x)=1') 方法三


syms a,b,c,x f3=a*x^2+b*x+c symsvar(f3)
3.符号矩阵的创建
数值矩阵 clear clc A=[1,2;3,4] A=[a,b;c,d] —— 不识别
用Matlab函数sym创建矩阵

前两行是函数 f 和 g 的具体解析式,第三 行是自变量 x 的取值范围和常数 a 的值。 第四行只对 f 起作用,如求导、积分、简 化、提取分子和分母、倒数、反函数。 第五行是处理 f 和 a 的加减乘除等运算。 第六行前四个进行 f 和 g 之间的运算,后 三个分别是:求复合函数;把 f 传递给 ; swap是实现 f 和 g 功能的交换。 最后一行是对计算器自身进行操作。
两个数学分析的可视化界面
ห้องสมุดไป่ตู้
图示化符号计算器 (由命令funtool引出) 泰勒级数逼近分析界面 (由命令taylortool引出)

图示化符号计算器
由三个独立的窗口构成,通过函数运算控 制窗口来演示另外两个图形窗口,任何时 候,只有一个窗口属于激活状态。而被激 活的函数图像可随运算控制窗口的操作而 做相应的变化。 下面给出运算控制窗口的键位功能。

总结:符号表达式运算

simple( ) 用几种不同的算术简化规则对 符号表达式进行简化,使其用最少的字 符来表示。 虽然并非表达式中的字符越少,表达式 就越简单,但采用这个标准往往能够得 到满意的结果,尤其是对于包含三角函 数的表达式。 例:sym x simple(cos(x)^2+sin(x)^2) 从结果看出,simple比较这些不同函数 的结果,最终把最少字符作为标准。

符号运算
sym(1/2)+(1/3) 或sym(1/2+1/3) ans = 5/6 --精确解
任意精度算术运算
digits(n) —— 设置近似解的精读为n位有效数字, 默认32位有效数字。 vpa(x,n) —— 求符号解的近似解,该近似解的有 效位数由n来决定。 digits(25)
vpa(1/2+1/3)
syms a b c >> U=[a,b,c]; >> A=[[1,1,1];U;U.^2] A = [ 1, 1, 1] [ a, b, c] [ a^2, b^2, c^2] >> det(A) ans = b*c^2-c*b^2-a*c^2+a*b^2+a^2*c-a^2*b
‘ ’ 里的内容可以是函数表达式,也 可以是方程。 例: f1='a*x^2+b*x+c' —— 二次三项式 f2= 'a*x^2+b*x+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程 ※函数表达式或方程可以赋给字符串 或符号变量,以后方便调用。
符号变量
符号变量是内容可变的符号对象。 符号变量通常是指一个或几个特定的字符, 不是指符号表达式,甚至可以将一个符号 表达式赋值给一个符号变量。 符号变量有时也称自由变量,它的命名规 则和数值变量的命名规则相同。 相关指令为: sym( ) 和 syms( )
符号常量
当数值常量作为sym( )的输入参量时,就 建立了一个符号对象——符号常量。 虽然看上去是一个数值量,但已经是一 个符号对象了。 例:a=3/4; b='3/4'; c=sym(3/4); d=sym('3/4'); whos 查看变量类型 a为实双精度浮点数值类型;b为实字符类 型;c和d都是符号对象类型。
eval(A) ans = 0.3333 1.4286
2.5000 0.4000
符号矩阵

运算符
+、-、*、.* \ 左除 AX=B A\B相当于求解矩阵方程AX=B的解 .\ 、 ./
右除 / XA=B B/A相当于求解矩阵方程XA=B的解 ^ A^B A为方阵、B为整数 表示A*A*…*A (共B个) .^ A.^B 对应分量进行幂运算 ‘ .’ 矩阵转置(当为复数矩阵时有区别)
符号矩阵

运算函数(可用help 查看具体含义和使用方法)
det(A) 行列式 inv(A) 逆矩阵 rank(A) 秩 diag(A) 主对角元素 diag(A,k) 第k对角元素 [V,D]=eig(A) 特征值组成的列向量V和对角阵D
sigma=svd(A) 计算奇异值向量 [U,S,V]=svd(A),奇异矩阵U和V包含奇异值D,有

泰勒级数逼近分析
该界面用于观察函数f(x)在给定区间被N阶 泰勒多项式Tn(x)逼近的情况。 f(x)的输入可由命令taylortool(fx)引入,或者 在栏中直接输入表达式,回车确定。 N默认值为7,a是级数的展开点。 函数的观察区间默认为(-2pi,2pi)。

符号运算的功能
命令格式:A=sym('[ ]') '标识
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义,需用'
※ 注意与'[a,b;c,d]'的区别
例如:A = sym('[a , 2*b ; 3*a , 0]') A=
[
a, 2*b]
0]
[3*a,
这就完成了一个符号矩阵的创建。
注意:符号矩阵的每一行的两端都有方
3.符号表达式的化简
可以对符号计算结果进行简化,诸如因 式分解、同类项合并、符号表达式的展 开、符号表达式的化简和通分等等。 合并同类项 collect(v) ----将表达式v的 相同次幂的项合并。 例:syms x t % 定义基本变量 f=(x-1)*(x-2)*(x-3) %定义符号表达式 collect(f) %合并f中x的同类 项
ans =
.8333333333333333333333333
vpa(5/6,40) ans = .833333333333333333333333333333333333 3333
a=sym('[1/4,exp(1);log(3),3/7]') a= [ 1/4,exp(1)] [log(3), 3/7] vpa(a,10) ans = [.2500000000, 2.718281828] [1.098612289, .4285714286]
符号计算与符号微积 分
Matlab的符号计算



科学与工程技术中的数值运算固然重要,但自然 科学理论分析中各种各样的公式、关系式及其推 导就是符号运算要解决的问题。 在Matlab7.0中,符号计算虽以数值运算的补充身 份出现,但它们都是科学计算研究的重要内容。 Matlab开发了实现符号计算的工具包Symbolic Math Toolbox 。
相关文档
最新文档