MATLAB 符号数学工具箱

入门

创建符号数字,变量和表达式

创建符号数字

创建符号变量

创建符号表达式

重复使用符号对象名

创建符号函数

创建符号矩阵

使用存在的符号变量

创建矩阵的同时生成元素

创建元素为符号数字的矩阵

符号计算

符号表达式的微分

符号表达式的积分

解方程

化简符号表达式

符号表达式中的替换

绘制符号函数

入门

创建符号数字,变量和表达式

下面将展示如何创建符号数字,变量和表达式。

创建符号数字

你可以使用sym创建符号数字。符号数字用精确的有理数表示。

通过sym创建符号数字并与相同的浮点数对比

sym(1/3)

1/3

ans =

1/3

ans =

0.333

符号结果不缩进,数值结果缩进。

符号计算的结果是精确的,而数值计算的结果是近似的。

sin(sym(pi))

sin(pi)

ans =

0

ans =

1.2246e-16

创建符号变量

你有两种方法创建符号变量,分别是syms和sym。syms是sym的简写。

分别使用syms和sym创建符号变量x和y

syms x

y = sym('y')

第一条命令创建了一个值为x的符号变量x。第二条命令创建了一个值为y的符号变量y。

你可以使用syms在一条命令中创建多个变量

syms a b c

你也可以使用sym在一条命令中创建多个变量

A = sym('a', [1 20])

A =

[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,...

a11, a12, a13, a14, a15, a16, a17, a18, a19, a20]

当你所创建的符号变量的变量名和变量值不相同时,或者要创建符号数字时,则要使用sym。

创建符号表达式

黄金比例

1 + 5 2 \frac{1+\sqrt{5}}{2}21+5​​

使用下面这条命令即可用符号变量表示黄金比例

phi = (1 + sqrt(sym(5)))/2;

你可以对phi执行各种数学运算。例如

f = phi^2 - phi - 1

f =

(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2

要创建符号表达式f = phi^2 - phi - 1,首先要创建符号变量a, b, c, 和 x:

syms a b c x

然后把表达式赋给f:

f = a*x^2 + b*x + c;

重复使用符号对象名

如果你设置了一个变量等于一个符号表达式,例如

syms a b

f = a + b

f =

a + b

接着输入

syms f

f =

f

MATLAB则会清除符号表达式f的值a + b。

所以你可以使用syms命令清除原先赋给变量的值。

创建符号函数

使用syms创建自变量为x和y的函数f。创建符号函数f的同时会自动创建符号变量x和y

syms f(x,y)

把一个数学表达式赋给f

f(x,y) = x^2*y

f(x, y) =

x^2*y

找到函数f在点(3,2)的值

f(3,2)

ans =

18

符号函数同时也接受数组作为输入

xVal = 1:5;

yVal = 3:7;

f(xVal,yVal)

ans =

[ 3, 16, 45, 96, 175]

你可以对符号函数进行微分,积分,化简,用自变量本身作为输入值,和其他数学运算。例如函数f对x求导

dfx = diff(f, x)

dfx(x,y) =

2*x*y

dfx也是一个符号函数

计算df(x,y)在点x = y + 1处的值

df(y+1,y)

ans =

2*y*(y + 1)

如果你想创建常函数,比如f(x,y) = 1,你可以首先创建f(x,y),然后再进行赋值

syms f(x,y)

f(x,y) = 1

f(x, y) =

1

如果不先创建符号函数f(x,y) 就直接进行赋值 f(x,y) = 1,则会抛出错误。

创建符号矩阵

使用存在的符号变量

创建一个其元素为a, b, c的循环矩阵

syms a b c

A = [a b c; c a b; b c a]

A =

[ a, b, c]

[ c, a, b]

[ b, c, a]

计算矩阵第一行元素的和

sum(A(1, : ))

ans =

a + b + c

使用isAlways函数,验证第一行元素之和等于第二列元素之和

isAlways(sum(A(1, : )) == sum(A( : , 2)))

ans =

logical

1

创建矩阵的同时生成元素

sym函数使你在创建符号矩阵或向量时无需提前定义元素。sym函数在创建符号矩阵的元素的同时创建矩阵。创建一个元

素为A1_1, …, A2_4的2×4符号矩阵:

A = sym('A', [2 4])

A =

[ A1_1, A1_2, A1_3, A1_4]

[ A2_1, A2_2, A2_3, A2_4]

可以在第一个参数中使用%d来控制矩阵元素的名字格式:

A = sym('A%d%d', [2 4])

A =

[ A11, A12, A13, A14]

[ A21, A22, A23, A24]

创建元素为符号数字的矩阵

sym函数的一个特别有用的功能是把数值矩阵转换为符号矩阵。

产生一个3×3希尔伯特矩阵

A = hilb(3)

A =

1.0000 0.5000 0.3333

0.5000 0.3333 0.2500

0.3333 0.2500 0.2000

函数sym作用于A后,可得到一个精确的3×3希尔伯特符号矩阵

A = sym(A)

A =

[ 1, 1/2, 1/3]

[ 1/2, 1/3, 1/4]

[ 1/3, 1/4, 1/5]

符号计算

符号表达式的微分

1. 单变量表达式求导

使用函数diff对符号表达式求导:

syms x

f = sin(x)^2;

diff(f)

ans =

2*cos(x)*sin(x)

2. 偏导数

对于多变量符号表达式,你可以指定对哪个变量进行求导。如果你没有指定任何变量,MATLAB将选

择距离字母x最近的变量进行求导:

syms x y

f = sin(x)^2 + cos(y)^2;

ans =

2*cos(x)*sin(x)

符号表达式f对变量y的偏导数:

syms x y

f = sin(x)^2 + cos(y)^2;

diff(f, y)

ans =

-2*cos(y)*sin(y)

3. 二阶偏导数和混合求导

符号表达式f对变量y的二阶偏导数:

syms x y

f = sin(x)^2 + cos(y)^2

diff(f, y, 2)

ans =

2*sin(y)^2 - 2*cos(y)^2

执行 diff(diff(f, y)) 可以得到相同的结果。

混合求导:

syms x y

f = sin(x)^2 + cos(y)^2;

diff(diff(f, y), x)

ans =

0

符号表达式的积分

1. 单变量符号表达式的不定积分

syms x

f = sin(x)^2;

int(f)

ans =

x/2 - sin(2*x)/4

2. 多变量符号表达式的不定积分

syms x y n

f = x^n + y^n;

int(f)

ans =

x*y^n + (x*x^n)/(n + 1)

符号表达式f也可以对变量y进行积分:

syms x y n

f = x^n + y^n;

int(f, y)

ans =

x^n*y + (y*y^n)/(n + 1)

同理,f对变量n进行积分

syms x y n

f = x^n + y^n;

int(f, n)

ans =

x^n/log(x) + y^n/log(y)

3. 定积分

函数int的最后两个参数用于指定积分上下限(倒数第二个参数指定积分下限,最后一个参数指定积分

上限)

syms x y n

f = x^n + y^n;

int(f, 1, 10)

ans =

piecewise(n == -1, log(10) + 9/y, n ~= -1,...

(10*10^n - 1)/(n + 1) + 9*y^n)

3. 如果MATLAB无法找到积分的闭合形式

如果函数int无法计算出积分,它将返回一个未经处理的积分

syms x

int(sin(sinh(x)))

ans =

int(sin(sinh(x)), x)

解方程

1. 解一元方程

用 == 定义一个方程

syms x

solve(x^3 - 6*x^2 == 6 - 11*x)

ans =

1

2

3

如果不指定方程右半部分,函数solve将假定它为0:

syms x

solve(x^3 - 6*x^2 + 11*x - 6)

ans =

1

2

3

2. 解包含多个元的方程

syms x y

solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)

ans =

1

2*x

-3*x

如果你不指定任何变量,MATLAB将选择距离字母x最近的变量。

3. 解方程组

syms x y z

[x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)

x =

0

2

y =

0

2

z =

0

8

化简符号表达式

符号数学工具箱提供了一套化简函数供你去操作符号表达式。

phi = (1 + sqrt(sym(5)))/2;

f = phi^2 - phi - 1

f =

(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2

你可以通过函数simplify化简这个答案

simplify(f)

ans =

0

注:本小节未完待续

符号表达式中的替换

注:本小节未完待续

绘制符号函数

符号数学工具箱提供的绘图函数:

- fplot用来在二维笛卡尔坐标系上绘制符号表达式,方程或者函数。

- fplot3用来绘制3D图形

- fsurf用来绘制曲面图

1. 绘制显函数

使用fplot在二维坐标系上绘制表达式x3-6x2+11x-6

syms x

f = x^3 - 6*x^2 + 11*x - 6;

fplot(f)

给x轴和y轴添加标签。使用texlabel(f)生成标题。使用grid on显示网格。

xlabel('x')

ylabel('y')

title(texlabel(f))

grid on

2. 绘制隐函数

使用fimplicit绘制方程和隐函数。

绘制方程(x2+y2)4=(x2-y2)2,其中-1syms x y

eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;

fimplicit(eqn, [-1 1])

3. 3D绘制

使用fplot3绘制3D参数线。

绘制参数线

x = t2sin(10t)

y = t2cos(10t)

z = t

syms t

fplot3(t^2*sin(10*t), t^2*cos(10*t), t)

4. 绘制曲面图

使用fsurf绘制3D曲面图。

绘制抛物面z = x2 + y2。

syms x y

fsurf(x^2 + y^2)

matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解相关推荐

  1. Matlab中提供了符号计算工具箱(Symbolic Math Toolbox),可以进行符号运算

    Matlab中提供了符号计算工具箱(Symbolic Math Toolbox),可以进行符号运算.以下是一些常见的符号运算示例: 定义符号变量 要定义一个符号变量,可以使用 syms 函数.例如,要 ...

  2. matlab中bilinear函数,【Bilinear interpolation】双线性插值详解(转)[组图]

    [Bilinear interpolation]双线性插值详解(转)[组图] 08-08栏目:技术 TAG:双线性插值 双线性插值 [Bilinear interpolation]双线性插值详解(转) ...

  3. MATLAB 绘制sinc函数的简单代码

    MATLAB 绘制sinc函数 MATLAB 绘制sinc函数 函数 y = sinc(x) 简单的代码 clc; clear all; close all; x = [-10:0.1:10]; y ...

  4. Matlab符号数学Symbolic Math Toolbox™帮助文档(全)

    符号数学快速入门 创建符号数.变量和表达式 创建符号数 创建符号变量 创建符号表达式 重用符号对象的名称 创建符号函数 创建符号数组 使用现有符号变量 创建矩阵时生成元素 创建符号数字矩阵 执行符号计 ...

  5. MATLAB Symbolic Math Toolbox

    Symbolic Math Toolbox 是MATLAB进行符号运算的工具箱,其符号运算引擎是MuPAD,具有比较强大的符号计算功能.但与专业的符号运算软件Mathematics比较,还是有欠缺,具 ...

  6. matlab中sign函数的使用(提取符号)

    仅用于记录自己学习过程中遇到的函数 matlab中sign函数的使用,提取符号 一.语法 Y = sign(x) 返回与 x 大小相同的数组 Y,其中 Y 的每个元素是: 1,前提是 x 的对应元素大 ...

  7. cosh matlab中怎么写,用MATLAB绘制cosh函数

    matlab如何绘制参数函数的图像? clear;clc;s=0:0.1:pi/2;t=0:0.1:3*pi/2;[s,t]=meshgrid(s,t);x=cos(s).*cos(t);y=cos( ...

  8. MATLAB绘制主函数动态图,matlab绘制动态图

    mathematica绘制动态图,"绘图之王"争霸赛--Excel才是绘图王道,matlab绘制动态图,动态三维图绘制 matlab动态图画法_数学_自然科学_专业资料.Matla ...

  9. MATLAB绘制xyz的分段函数,matlab绘制分段函数

    几何画板中如何用一个解析式画分段函数的图像_数学_自然科学_专业资料.几何画板中如何用一个解析式画分段函数的图像 几何画板中如何用一个解析式画分 段函数的...... Matlab 绘图强大的绘图功能 ...

最新文章

  1. 5.基于STM32F103+OV7670的网络摄像头
  2. 第三组 通信一班 030 ISISv6
  3. WordPress中输出当前页面SQL语句的方法
  4. TFS 无法找到新加的Windows用户
  5. 把互信息写成KL散度的形式
  6. Java多线程归纳总结
  7. mysql中kill掉所有锁表的进程
  8. reset.css下载
  9. 数据结构遍历顺序栈_[C++]数据结构:栈之顺序栈
  10. 特色十足,FIIL 随身星体验
  11. java.lang.NoClassDefFoundError: org/apache/hive/service/cli/thrift/TCLIService$Iface
  12. leetcode:买卖股票的最佳时机含手续费(python)
  13. CTF-reverse菜鸡想要走出菜狗设计的迷宫
  14. 调和曲线图和轮廓图的比较
  15. 苹果外接屏幕鼠标移动方向问题
  16. 生成两组相互独立服从标准正态分布的随机数(推导过程)
  17. intel至强服务器芯片制程,64核自研芯片性能提升7倍,追平英特尔至强
  18. 新年特供【供应链作战指北】
  19. 关于RGBFusion无法识别和控制技嘉显卡RGB灯的特殊案例和解决办法
  20. Tushare积分不够2000利用日线行情数据计算涨跌停价格

热门文章

  1. Job Processing 工序安排
  2. 软件工厂是否真的可能存在?
  3. 项目经理主要工作职责
  4. 排序算法模板(C语言版)
  5. Springboot对web应用的统一异常处理
  6. 【CentOS 7笔记46】,crondtab任务计划和chkconfig系统服务管理#
  7. ProxySQL MySQL MGR8配置
  8. Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPressGhost、Jenkins、Gitlab)
  9. AIX5安装bash
  10. Brocade NOS学习笔记(第一章——第三章)