当前位置:文档之家› 符号计算与符号微积分

符号计算与符号微积分


2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
1.
数值类型
matlab的浮点算术运算
2.
有理数类型 maple的精确符号运算
vpa类型 maple的任意精度算术运算
3.

浮点算术运算
format long --(定义输出格式) 1/2+1/3
ans =
0.83333333333333

总结:符号表达式运算
括号,这是与 Matlab数值矩阵的
一个重要区别。
用字符串直接创建矩阵

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

(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( )更简洁一些。

Funtool计算器存有一张函数列表fxlist 这7个功能键分别是: Insert:把当前激活窗的函数写入列表 Cycle:依次循环显示fxlist中的函数 Delete:从fxlist列表中删除激活窗的函 数 Reset:使计算器恢复到初始调用状态 Help:获得关于界面的在线提示说明 Demo:自动演示 Close:关闭整个计算器
符号常量
当数值常量作为sym( )的输入参量时,就 建立了一个符号对象——符号常量。 虽然看上去是一个数值量,但已经是一 个符号对象了。 例:a=3/4; b='3/4'; c=sym(3/4); d=sym('3/4'); whos 查看变量类型 a为实双精度浮点数值类型;b为实字符类 型;c和d都是符号对象类型。

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

符号运算的功能
符号计算与符号微积 分
Matlab的符号计算



科学与工程技术中的数值运算固然重要,但自然 科学理论分析中各种各样的公式、关系式及其推 导就是符号运算要解决的问题。 在Matlab7.0中,符号计算虽以数值运算的补充身 份出现,但它们都是科学计算研究的重要内容。 Matlab开发了实现符号计算的工具包Symbolic Math Toolbox 。
函数调用格式: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]
‘ ’ 里的内容可以是函数表达式,也 可以是方程。 例: f1='a*x^2+b*x+c' —— 二次三项式 f2= 'a*x^2+b*x+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程 ※函数表达式或方程可以赋给字符串 或符号变量,以后方便调用。
符号变量
符号变量是内容可变的符号对象。 符号变量通常是指一个或几个特定的字符, 不是指符号表达式,甚至可以将一个符号 表达式赋值给一个符号变量。 符号变量有时也称自由变量,它的命名规 则和数值变量的命名规则相同。 相关指令为: sym( ) 和 syms( )
符号矩阵

运算函数(可用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,有

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

2. 字符串与符号变量、符号常量
字符串对象 f = 'sin(x)+5x' f —— 字符串名 sin(x)+5x—— 函数表达式 ' '—— 字符串标识 字符串表达式一定要用' '单引号 括起来Matlab才能识别。 用class( )来返回对象的数据类型。
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]
符号表达式、符号矩阵的创建
符号线性代数
因式分解、展开和简化
符号代数方程求解
符号微积分
符号微分方程
一、符号运算的基本操作
1. •
什么是符号运算 与数值运算的区别 ※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
命令格式:A=sym('[ ]') '标识
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义,需用'
※ 注意与'[a,b;c,d]'的区别
例如:A = sym('[a , 2*b ; 3*a , 0]') A=
[
a, 2*b]
0]
[3*a,
这就完成了一个符号矩阵的创建。
注意:符号矩阵的每一行的两端都有方

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

图示化符号计算器 (由命令funtool引出) 泰勒级数逼近分析界面 (由命令taylortool引出)

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

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)

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创建矩阵
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)
符号矩阵

相关主题