第三讲MATLAB的符号运算
MATLAB应用第三章-符号计算

3. 1 数据类型 3.2 符号运算
数学运算中除了数值运算外,还有大量抽象运算(计算式中带有符号变 量、表达式的运算)。Matlab就是利用maple软件的符号运算功能来实 现这些符号运算的。 Maple : 通用的数学和工程软件,是世界上最值得信赖、最完整的数学 软件之一,被高等院校、研究机构和公司广泛应用,用户渗透超过97% 的世界主要高校和研究所,超过81%的世界财富五百强企业。 Maple提供世界上最强大的符号计算,无与伦比的数值计算,支持 用户界面开发和网络发布,内置丰富的数学求解库,覆盖几乎所有的数 学分支,所有的操作都是在一个所见即所得的交互式技术文档环境中完 成,完成计算的同时也生成了专业技术文件和演示报告。 Maple不仅仅提供编程工具,更重要的是提供数学知识。Maple是 教授、研究员、科学家、工程师、学生们必备的科学计算工具,从简单 的数字计算到高度复杂的非线性问题,Maple都可以帮助您快速、高效 地解决问题。用户通过Maple产品可以在单一的环境中完成多领域物理 系统建模和仿真、符号计算、数值计算、程序设计、技术文件、报告演 示、算法开发、外部程序连接等功能,满足各个层次用户的需要,从高 中学生到高级研究人员。
格 Eg 3-2 补充。 补充。 2)char函数创建:char(‘string1’,’string2’, …); Eg 3-3 各个字符串不须同大小, 各个字符串不须同大小,该函数自动补充空白 字符。 字符。 Eg 3-4
字符串与单元 1)cellstr将字符数组转换成单元数组。 2)char函数将单元数组转换成字符数组。 数组的转换 字符串的比较 1)strcmp(a,b):比较两个字符串所有字符是
Grand total is 33 elements using 462 bytes
matlab中的数学符号与运算

matlab中的数学符号与运算MATLAB(Matrix Laboratory)是一种用于数值计算和科学工程应用的高级编程语言和环境。
MATLAB中包含了丰富的数学符号和运算,用于进行矩阵操作、线性代数、微积分等数学计算。
以下是MATLAB中一些常见的数学符号和运算:1. 数学符号:-矩阵:MATLAB 中的基本数据类型是矩阵,可以使用方括号`[]` 来表示。
例如,`A = [1, 2; 3, 4]` 表示一个2x2的矩阵。
-向量:向量可以表示为一维矩阵,例如,`v = [1, 2, 3]` 表示一个包含3个元素的行向量。
-转置:使用单引号`'` 来进行转置操作。
例如,`A'` 表示矩阵A的转置。
-点乘和叉乘:点乘使用`.*`,叉乘使用`.*`。
例如,`A .* B` 表示矩阵A和B的对应元素相乘,`A * B` 表示矩阵A和B的矩阵乘法。
2. 数学运算:-基本算术运算:MATLAB支持基本的算术运算,如加法、减法、乘法和除法。
例如,`result = 2 + 3`。
-元素-wise 运算:MATLAB 支持元素-wise 的运算,即对矩阵或向量中的每个元素进行运算。
例如,`C = A .* B` 表示矩阵A和B的对应元素相乘。
-矩阵操作:MATLAB 提供了许多用于矩阵操作的函数,如`inv`(求逆矩阵)、`det`(求行列式)、`eig`(求特征值)等。
-积分和微分:MATLAB 提供了`int`(积分)和`diff`(微分)等函数,用于进行积分和微分运算。
-方程求解:MATLAB 提供了`solve` 函数,用于求解方程组。
这些是MATLAB中一些常见的数学符号和运算。
MATLAB 的强大之处在于它的矩阵操作能力,使得它非常适用于数学和工程领域的计算和建模。
如果你有特定的数学运算需求,可以查阅MATLAB 的官方文档或在线资源以获取详细信息。
第3章 MATLAB符号计算

复数函数。在符号计算中,复数的共轭conj、求实部real、求虚部 imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号 计算中,MATLAB没有提供求相角的命令。
2.使用syms命令创建符号变量和符号表达式
语法:
syms('arg1', ' arg2',…,参数) syms arg1 arg2 … 参数
%把字符变量定义为符号变量 %把字符变量定义为符号变量的简洁形式
说明:syms用来创建多个符号变量,以上两种方式创建的符号对象是相同的。参数设置和前面的sym命令 相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】 使用syms命令创建符号变量和符号表达式。
>> syms x y real >> z=x+i*y; >> real(z) ans = x >> sym('x','unreal'); >> real(z) ans = x/2 + conj(x)/2
%创建实数符号变量 %创建z为复数符号变量 %复数z的实部是实数x
%清除符号变量的实数特性 %复数z的实部
符号运算中的运算符有以下2种。 (1)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。
MATLAB符号运算运用

MATLAB符号运算运用MATLAB 是一种数值计算和编程环境,它可以进行符号运算,即对代数表达式进行操作和计算。
在 MATLAB 中,符号运算的主要工具是符号计算工具箱(Symbolic Math Toolbox),它提供了一系列函数和命令,用于处理和求解符号表达式。
1.创建符号表达式首先,我们可以通过使用符号变量来创建符号表达式。
符号变量可以使用 sym 函数定义。
例如,创建一个符号变量 x:```syms x```然后,可以使用这个符号变量来创建符号表达式。
例如,创建一个简单的二次多项式表达式:```f=x^2+2*x+1;```2.符号表达式运算一旦有了符号表达式,就可以对其进行各种运算,包括求导、积分、求解方程等。
- 求导:使用 diff 函数可以对符号表达式进行求导。
例如,对上述的 f 求导:```df = diff(f, x);```- 积分:使用 int 函数可以对符号表达式进行积分。
例如,对 f 在区间 [0, 1] 上进行积分:```I = int(f, 0, 1);```- 求解方程:使用 solve 函数可以对符号表达式进行求解。
例如,求解方程 f = 0:```sol = solve(f == 0, x);```3.简化符号表达式有时,符号表达式可能过于复杂,可以使用 simplify 函数对其进行简化。
例如,简化一个复杂的三角函数表达式:```syms xf = sin(x)^2 + cos(x)^2;sf = simplify(f);```4.数值近似符号表达式可以通过使用 vpa 函数进行数值近似。
例如,将一个符号表达式近似为 5 位小数:```syms xf = exp(x);f_num = vpa(f, 5);```在MATLAB中,符号运算可以应用于各种数学问题,包括求解方程、微积分、矩阵计算等。
它提供了一种便捷的方式来处理代数表达式,而不需要将其转化为数值形式进行计算。
符号运算 matlab

符号运算 matlab符号运算是一种在数学上进行推导和计算的重要方法,在Matlab 中也有相应的符号运算功能。
通过符号运算,可以进行高精度计算、求解方程、求导积分、代数化简等操作。
本文将介绍 Matlab 中符号运算的基本使用方法和相关函数。
1. 符号变量的定义和赋值在 Matlab 中,可以使用 syms 函数定义符号变量,并使用等号将其赋值。
例如,定义符号变量 x 和 y:syms x yx = 2;y = x + 3;这里,定义了两个符号变量 x 和 y,并将 x 赋值为 2,y 赋值为 x+3。
需要注意的是,符号变量和数值变量在 Matlab 中是不同的类型,不能直接进行运算。
2. 符号表达式的运算在 Matlab 中,可以使用符号表达式进行各种运算,包括加减乘除、幂运算、三角函数、指数函数等。
例如,定义符号表达式 f(x) = 2*x^3 + 3*x^2 - 5*x + 1:syms xf(x) = 2*x^3 + 3*x^2 - 5*x + 1;然后可以对 f(x) 进行各种运算,如求导、积分、代数化简等。
例如,求 f(x) 的一阶导数:diff(f(x), x)这里使用 diff 函数求 f(x) 的一阶导数,结果为 6*x^2 + 6*x - 5。
3. 方程求解在 Matlab 中,可以使用 solve 函数求解方程。
例如,求解方程 x^2 + 3*x + 2 = 0:syms xsolve(x^2 + 3*x + 2 == 0)solve 函数返回的是符号变量的解,需要使用 double 函数将其转换为数值变量。
4. 代数化简在 Matlab 中,可以使用 simplify 函数对符号表达式进行代数化简。
例如,代数化简表达式 (x^2 + 2*x + 1)/(x + 1):syms xsimplify((x^2 + 2*x + 1)/(x + 1))simplify 函数会自动将表达式化简为最简形式。
第3章 MATLAB符号计算-习题讲解

9.微分 对x、y、c、d进行微分: f=sym('a*x^3+b*y^2+c*z+d') diff(f) //x为自由变量,可缺省 diff(f,'y') diff(f,'c') diff(f,'d') 求y趋向于1的极限: limit(f,'y',1) 对x的2、3次微分: diff(f,2) diff(f,3)
P296: 1,3,4,5,7,8,9,11,15
>> A.*B ans = [ a*c, b*d] [ c*e, d*f]
1. f=sym(‘a*x^3+b*x^2+c* x+d’) 3. A=sym('[a b;c d]')
B=sym('[c d;e f]') A+B ans = [ a+c, b+d] [ c+e, d+f] >> A-B ans = [ a-c, b-d] [ c-e, d-f]
7.复合函数/逆函数f =1-sin(x)^2 算值:
g=2*x+1
f=sym('1-sБайду номын сангаасn(x)^2')
g=sym('2*x+1') subs(f,1) 复合: compose(f,g) 逆函数: finverse(g)
8.多项式转换 多项式系数形式: f=sym('x^3+3*x^2-6*x+5') sym2poly(f) 代替: subs(f,'a') subs(f,5)
11.泰勒级数展开式 >> syms x; >> taylor(sin(x),10) ans = x-1/6*x^3+1/120*x^5-1/5040*x^7+1/362880*x^9
3.符号运算

2.非线性方程组的符号解法 (1).非线性方程求解: solve(‘fun’),求得解析解 x=solve(‘x^2+3*x+4=0’) %得解析解 x1=vpa(x,6) %化为数值解 (2).非线性方程组求解 fsolve(‘fun’,x0) fun由M文件给出函数, x0为初值,是一种迭代解法.
2. 绘制函数图函数 fplot fplot(fun,lims) %fun为M文件的函数名或是对 变量x的可执行字符串. fplot(fun,lims,n) %n--线条的宽度 fplot(fun,lims,’LinSpec’) %LinSpec线条的类型 演示8: fuhao08.m
22
3.10 图示化函数计算器
23
3.11 Maple接口
相对于Maple软件的2000多条的符号计算命令来说, 前面介绍的内容只是利用了Maple中最常用的计算命令中 的一部分。为了在Matlab的工作环境下进一步熟悉Maple 的其他符号计算功能,本节将介绍如何在Matlab中直接调 用Maple的内部命令进行计算。 在Matlab中实现Maple函数的直接调用可由maple和 mfun两个命令来实现。
1. maple命令 在Matlab的环境下,为了实现对Maple绝大多数的 符号计算命令的调用,Symbolic Toolbox工具箱中提 供了一个通用的命令maple。
实验三MATLAB的符号运算

实验三 MATLAB 的符号运算一 实验目的:1.掌握符号对象的创建及符号表达式化简的基本方法;2.掌握符号微积分、符号方程的求解的基本方法。
二 实验装置:计算机三 实验内容:1.符号对象的创建(1) 建立符号变量使用sym 函数把字符表达式'2*sin(x)*cos(x)'转换为符号变量。
2.符号表达式的化简(1)因式分解对表达式f=x 3-1 进行因式分解。
(2) 符号表达式的展开对符号表达式f=cos(x+y)进行展开。
(3)符号表达式的同类项合并对于表达式f=(2x 2*(x+3)-10)*t ,分别将自变量x 和t 的同类项合并。
(4)符号表达式的化简(5)符号表达式的分式通分对表达式 进行通分。
(6)符号表达式的替换用新变量替换表达式a+b 中变量b 。
3.符号微积分(1) 符号极限计算表达式 的极限。
(2)符号微分计算表达式f=sinx 的微分。
(3)符号积分。
例:简化32381261+++=xx x f 22x y y x f +=xtgx x lim 0→()⎰+dzz x31计算表达式 的积分。
(4)符号求和计算表达式 4.符号方程的求解求解代数方程组 四 实验要求:1.按照要求预习实验;2.在MATLAB 中运行实验程序验证仿真结果;3. 按照要求完成实验报告。
.10005∑k⎪⎩⎪⎨⎧=--=-+=+-043035218472z y x z y x z y x。
实验三 MATLAB符号计算

expr1 =
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 = x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
expand使用指令 y=0.14-(1.2e+002)*(-2.4005*(0.445-x)^7+4.2505*(0.445x)^6-2.2336*(0.445-x)^5+0.4993*(0.445-x)^40.0514*(0.445-x)^3+0.0025*(0.445-x)^2);
符号矩阵的生成
符号矩阵可通过函数sym来生成。符号矩阵中的元素是任何不带等号的符 号表达式,各符号表达式的长度可以不相同;符号矩阵中,以空格或逗号 分隔的元素指定的是不同列的元素而分号分隔的元素指定的是不同行的元 素。 例:
syms x; A=sym(‘[cos(x),sin(x),x;-x+1 x^2+x+1 tan(x)]’) A= [ cos(x), sin(x), x] [ -x+1, x^2+x+1, tan(x)] >> size(A) %求符号矩阵的大小 ans = 2 3 > a=[1 2 3 4;4 5 6 7]; >> b=sym(a) b= [ 1, 2, 3, 4] [ 4, 5, 6, 7]
第三讲MATLAB的符号运算

④计算所需的时间较长。
• Symbolic Math Toolbox——符号运算工具包通过调用
Maple软件实现符号计算的。
• Maple软件——主要功能是符号运算,它占据符号软件
的主导地位。
2. 字符串与符号变量、符号常量
字符串对象 f = 'sin(x)+5x'
由符号变量构成的符号函数和 符号方程
• 符号表达式是由符号常量、符号变量、符号函
数运算符以及专用函数连接起来的符号对象。
• 包括:符号函数和符号方程。判断看带不带等
号。 例: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')
factor(x^3-y^3)
• simplify( ) 该函数是一个强有力的具有
普遍意义的工具,它利用Maple化简规则 对表达式进行简化。
例:S=sym('[(x^2+5*x+6)/(x+2);sqrt(16)]')
simplify(S)
• simple( ) 用几种不同的算术简化规则对
符号表达式进行简化,使其用最少的字 符来表示。
行是自变量 x 的取值范围和常数 a 的值。
• 第四行只对 f 起作用,如求导、积分、简
化、提取分子和分母、倒数、反函数。
• 第五行是处理 f 和 a 的加减乘除等运算。
• 第六行前四个进行 f 和 g 之间的运算,后
三个分别是:求复合函数;把 f 传递给 ; swap是实现 f 和 g 功能的交换。
MATLAB第三讲符号运算及绘

化简根号表达式
使用`sqrt`函数化简根号表达式,例如 `sqrt(x^2)`化简为`abs(x)`。
符号函数的计算
1 2
符号函数的求值
使用`subs`函数将符号表达式中的变量替换为具 体数值进行计算,例如`subs(expr, x, 2)`。
符号函数的复合
使用函数句柄和参数列表定义符号函数,例如`f = @(x) x^2 + 2*x + 1`。
符号方程求解
使用solve函数求解代数方程,例如 solve(x^2 - 4*x + 4)。
绘图实例
线性图
使用plot函数绘制线性图,例如plot(x, y)。
柱状图
使用bar函数绘制柱状图,例如bar(x, y)。
散点图
使用scatter函数绘制散点图,例如scatter(x, y)。
曲面图
使用surf函数绘制曲面图,例如surf(x, y, z)。
三维等高线图
使用contour函数绘制三维等高线 图,可以展示三维空间中数据点的 等高线分布。
图形标注与修饰
标题和轴标签
使用title和xlabel、ylabel、 zlabel函数添加标题和轴标签,
以解释图形含义和坐标轴意义 。
网格线和参考线
使用grid on和hold on命令添 加网格线和参考线,以增强图 形可读性和比较不同数据系列 。
趋势。
条形图
使用bar函数绘制条形图, 可以展示分类数据的大
小比较。
饼图
使用pie函数绘制饼图, 可以展示各类数据占总
体的比例。
绘制三维图形
三维散点图
使用scatter3函数绘制三维散点 图,可以展示数据点在三维空间
第三章_MATLAB的符号运算

%创建符号表达式
符号运算与数值运算的区别主要有以下几点: A 传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采 用计算机硬件提供的 8 位浮点表示法, 因此每一次运算都会有一定的截断误差, 重复的多次 数值运算就可能会造成很大的累积误差。 符号运算不需要进行数值运算, 不会出现截断误差, 因此符号运算是非常准确的。 B 符号运算可以得出完全的封闭解或任意精度的数值解。 C 符号运算的时间较长,而数值型运算速度快。 3.2.1 提取分子分母 如果符号表达是有理分式形式或可展开为有理分式形式,则可通过函数 numden 来提取符号 表达式中的分子分母。numden 函数的调用形式如下: [n,d]=numden(a) 提取符号表达式 a 的分子与分母,并分别将其存放在 n 与 d 中 n=numden(a) 提取符号表达式 a 的分子与分母,但只把分子存放在 n 中 例 提取符号表达式的分子与分母 >> f=sym('a*x^2/(b-x)'); [n,d]=numden(f) n= -a*x^2 d= -b+x 3.2.2 符号表达式的基本代数运算 符号表达式的加、减、乘、除四则运算及幂运算等基本的代数运算,与矩阵的数值运算几乎 完全一样。 其中, 符号表达式的加、 减、 乘、 除运算可分别有函数 symadd、 symsub、 symmul、 symdiv 来实现,也可与矩阵的数值运算一样,用“+” 、 “-” 、 “×” 、 “÷”符号进行运算, 而符号表达式的幂运算也可以由函数 sympow 来实现,也可以由幂运算符“^”来实现。 例 >> f='4*x+5'; g='2*x^2+5*x+6'; symadd(f,g) ans = 9*x+11+2*x^2 symsub(f,g) ans = -x-1-2*x^2 symmul(f,g) ans =
matlab符号运算 多项式

一、介绍matlab符号运算matlab符号运算是指利用matlab软件进行代数表达式的计算和求解。
在matlab中,符号运算可以实现对多项式的加减乘除、导数和积分等操作,非常适用于代数表达式的计算和求解。
在工程、数学和物理等领域,matlab符号运算被广泛应用,能够高效地解决各种代数运算问题。
二、matlab符号运算的基本操作1. 创建符号变量在matlab中,可以使用syms函数来创建符号变量,例如:```matlabsyms x y```这样就创建了两个符号变量x和y,可以用于代数表达式的计算和求解。
2. 代数表达式的运算利用符号变量创建代数表达式,并进行加减乘除等运算,例如:```matlabf = x^2 + 2*x + 1;g = x + 1;h = f * g;```这样就实现了对代数表达式的乘法运算,h为结果表达式。
3. 多项式求导利用diff函数可以对代数表达式进行求导,例如:```matlabf = x^2 + 2*x + 1;df = diff(f,x);```这样就求出了代数表达式f对x的一阶导数df。
4. 多项式积分利用int函数可以对代数表达式进行积分,例如:```matlabf = x^2 + 2*x + 1;F = int(f,x);```这样就求出了代数表达式f对x的不定积分F。
5. 多项式因式分解利用factor函数可以对代数表达式进行因式分解,例如:```matlabf = x^2 + 2*x + 1;factored_f = factor(f);```这样就对代数表达式f进行了因式分解,得到了其因式分解形式。
三、matlab符号运算在工程应用中的实例在工程领域,matlab符号运算被广泛应用于各种代数表达式的计算和求解。
以下以电路分析为例,介绍了matlab符号运算在工程应用中的实例。
1. 电路分析中的符号运算在电路分析中,通常需要对电路中的电压、电流、电阻等元件进行建模和分析。
MATLAB的符号运算

10
③ 符号对象与数值对象的转换
将数值对象转化为符号对象 函数调用格式:sym(A) 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]
2013年8月6日12时46
4
2. 符号变量与符号表达式
syms v1 v2 v3 … vn
—— 定义符号变量 名
syms x f = sin(x)+5*x
f —— 符号变量(矩阵) sin(x)+5*x —— 符号表达式
2013年8月6日12时46
5
3.符号对象的创建
数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别
11
将符号对象转化为数值对象
函数调用格式: numeric(A) A= [ 1/3, 5/2] [10/7, 2/5]
numeric(A)
ans = 0.3333 2.5000 1.4286 0.4000
2013年8月6日12时46
12
二、符号运算
1.符号对象运算 数值运算中,所有对象运算操作指 令都比较直观、简单。例如:a=b+c; a=a*b ;A=2*a^2+3*a-5等。
ans = cos(x)/sin(2*x)+cos(x)*sin(2*x)
x=pi/4;subs(ans)
ans = 1.4142 2013年8月6日12时46
15
例1 f= 2*x^2+3*x-5; g= x^2+x-7;
syms x f=2*x^2+3*x-5; g= x^2+x-7; h=f+g h= 3*x^2+4*x-12 例2 f=cos(x);g= sin(2*x); syms x f=cos(x);g=sin(2*x); f/g+f*g ans = cos(x)/sin(x)+cos(x)*sin(x)
MATLAB的运算符号及函数

3.常用的函数及常量
常用的函数及常量如表7-2所示。
函数名 abc(x)
pi sin(x) asin(x) cos(x)
函数功能 绝对值函数 |x|
圆周率 正弦函数 sin(x) 反正弦函数 arcsin(x) 余弦函数 cos(x)
acos(x)
反余弦函数 arccos(x)
tan(x) cot(x)
经济数学
MATLAB的运算符号及函数
1.基本运算
MATLAB能识别常用的加(+)、减(-)、乘(*)、除(/)及 幂次运算符号(^)等绝大部分数学运算符号。因此,要在 MATLAB中进行基本数学运算,只需在命令窗口中的提示符(>>) 之后直接输入运算式并按Enter键即可。
例如:>>(2 * 3+3 * 4)/10
中(均用小括号),从最里层向最外层逐渐脱开。
2.常用快捷键 常用快捷键如表7-1所示。
快捷键 ↑(Ctrl+P) ↓(Ctrl+N) ←(Ctrl+B) →(Ctrl+F) Esc(Ctrl+U) Del(Ctrl+D)
表7-1
功能 调用上一行 调用下一行 光标左移一个字符 光标右移一个字符 清除当前输入行 删除光标处右侧字符
正切函数 tan(x) 余切函数 cot(x)
函数名 sum(x) sqrt(x)
inf exp(x) log(x)
log10(x)
log2(x) sign(x)
表7-2
函数功能 向量元素求和
平方根 无穷大 指数 ex 自然对数 lnx 以 10 为底的常用对数
lgx 以 2 为底的对数符号 Nhomakorabea数概率学与数理统计
matlab的符号计算

matlab的符号计算符号数学工具箱是操作和解决符号表达式的符号数学工具箱(函数)集合,有复合、简化、微分、积分以及求解代数方程和微分方程的工具。
另外还有一些用于线性代数的工具,求解逆、行列式、正则型式的精确结果,找出符号矩阵的特征值而无由数值计算引入的误差。
工具箱还支持可变精度运算,即支持符号计算并能以指定的精度返回结果。
符号数学工具箱中的工具是建立在功能强大的称作Maple软件的基础上。
它最初是由加拿大的滑铁卢(Waterloo)大学开发的。
当要求MATLAB进行符号运算时,它就请求Maple去计算并将结果返回到MATLAB命令窗口。
因此,在MATLAB中的符号运算是MATLAB处理数字的自然扩展。
8.1 符号表达式符号表达式是代表数字、函数、算子和变量的MATLAB字符串,或字符串数组。
不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。
符号算术是使用已知的规则和给定符号恒等式求解这些符号方程的实践,它与代数和微积分所学到的求解方法完全一样。
符号矩阵是数组,其元素是符号表达式。
MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全象基本的MATLAB命令。
下表列有几则符号表达式例子以及MATLAB等效表达式。
符号表达式 MATLAB表达式'1/(2*x^n)'y='1/sqrt(2*x)''cos(x^2)-sin(2*x)'M=sym('[a,b;c,d]')f=int('x^3/sqrt(1-x)','a','b')MATLAB符号函数使我们能用多种方法来操作符号表达式,比如,>>diff('cos(x)') %differentiate cos(x) with respect to xans=-sin(x)>>M=sym('[a,b;c,d]') %create a symbolic matrix MM=[a,b][c,d]>>determ(M) %find the determinant of the symbolic matrix Mans=a*d-b*c要注意的是,以上第一例的符号表达式是用单引号以隐含方式定义的。
第三章:MATLAB的符号运算

注1:即使利用clear语句删除x,并不能改变MuPAD内存中对x的限制设 定,再引入变量x是,仍然带有这一设定。
注2:sym x clear 只改变x的限定,并没有删除和改变x的值。
例:求 3x2 5x 1 0的解
>> clear >> syms x >> solve(3*x^2+5*x+1) ans =
>> y=solve(f) y= -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
>> y=solve(f,a) y= -(c + b*x)/x^2
符号表达式 符号表达式有两种不同的生成方式: 1、直接由sym函数生成 如: f=sym(‘2*sin(x)+5*cos(x)’) 这样的表达式称为串型表达式。 2、利用符号变量经符号运算生成 如: syms x y f=sin(x)+2*cos(y)
- 13^(1/2)/6 - 5/6 13^(1/2)/6 - 5/6
>> assume(x>=-5/6) >> solve(3*x^2+5*x+1)
ans = 13^(1/2)/6 - 5/6
例:求方程
x3
475 5 x 0 的根 100 2
求第一象限的根
>> syms x 'clear' >> assume(real(x)>=0) >> assumeAlso(imag(x)>=0) >> solve(x^3+475*x/100+5/2) ans = (79^(1/2)*i)/4 + 1/4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)]')