在日常求解数学题目的时候常常需要对于进行对于带有符号的变量进行运算,比如最经典的就是求解方程,求出方程中所有变量的解。本文主要对于MATLAB中符号对象的函数进行解释,包括sym函数、syms函数、symfun函数和symvar函数。

目录

1、sym函数

2、syms函数

3、symfun函数

4、symvar函数


1、sym函数

在MATLAB中提供了sym和syms函数用来定义符号,这两种定义符号变量的方式是不同的。下面对其逐一介绍。

首先是sym函数,sym函数用来定义一个变量最简单的方式如下所示:

a=sym('a')

此时变量a所表示的就是字符a,下面举一个简单的示例:

x=sym('x');
y=sin(x)
z=tan(x)
w=3*x^2+4^x+2
p=log(x)
q=exp(x)

结果如下所示:

y =sin(x)
z =tan(x)
w =3*x^2 + 4^x + 2
p =log(x)
q =exp(x)

通过上面的运行结果可以看出y、z、w、p和q是与字符变量x相关的符号变量。

sym函数的符号变量不仅可以赋值为符号,同样也可以赋值为数字,例如:

x=sym('x');
y=sym('3');
z=2*x^3+4*x+3
w=2*y^3+4*y+3

运算结果如下所示:

z =2*x^3 + 4*x + 3
w =69

通过运算结果可以看出,当把数值赋值给符号变量时,MATLAB对于数字会进行化简并且计算。将数值赋值给符号变量个人感觉更接近于人工计算的过程。下面举个例子:

x=sym('3')
y=3
z=x*sin(x)/((x)^2*tan(x))
w=y*sin(y)/((y)^2*tan(y))

结果返回如下所示:

z =sin(3)/(3*tan(3))
w =-0.3300

通过上面的运算的最终结果可以看出,z返回的是将值带入式子后化简的结果,这种结果基本与人工化简的最简形式是类似的(MATLAB只是没有对与sin(x)和tan(x)进行约分计算,MATLAB不提供三角函数之间的化简操作),因为对于大部分人来说并不知道sin(3)和tan(3)的具体数值是为多少,所以这是MATLAB可以化简的最简形式。而结果w返回的是数值计算,计算过程是直接将3带入到公式中,MATLAB计算出sin(3)和tan(3)的数值后最终得到整个式子的数值结果。

sym函数还有其他的用法包括:

a=sym('a',real)
b=sym('b',position)
c=sym('c',integer)
d=sym('d',rational)
%上面为MATLAB中四种不同的用法

上面四种用法区别在于定义了不同的所属集合:real、integer、position和rational。分别表示建立实数、整数、正数和有理数的符号变量。

同时MATLAB还提供了下面的运算,例如:

x=sym('a',4);
y=sym('b',[3,4]);
x(3,3)
y(2,3)

运算结果如下所示:

ans =a3_3
ans =b2_3

上面的运算中是创建了一个符号矩阵,其中x是一个4行4列的符号矩阵,而y是一个3行4列的符号矩阵。将符号矩阵的进行输入可以得到:

x=sym('a',4);
x

结果如下所示:

x =
[a1_1, a1_2, a1_3, a1_4]
[a2_1, a2_2, a2_3, a2_4]
[a3_1, a3_2, a3_3, a3_4]
[a4_1, a4_2, a4_3, a4_4]

通过上面的结果可以看到该符号矩阵的所有元素。

MATLAB还可以有如下用法:

x=sym(num,flag)

其中flag的值可以取值为r、d、e和f,分别表示的是将num转会为有理数、十进制数、带估计误差的有利适合与精确值对应的分式。

比如将数学中的无理数e四种形式表示出来:

a=sym(exp(1),'r')
b=sym(exp(1),'d')
c=sym(exp(1),'e')
d=sym(exp(1),'f')

结果如下所示:

a =3060513257434037/1125899906842624
b =2.7182818284590455348848081484903
c = 3060513257434037/1125899906842624
d =3060513257434037/1125899906842624

2、syms函数

在MATLAB中syms函数可以一次性定义多个符号常量。syms的用法如下所示:

syms var1,var2,var3,...varn

其中上面的var1、var2、var3、...varn所表示的是变量名字,通过syms函数可以轻松定义多个符号变量,而使用sym函数的话,就需要定义多次。

例如,我们来比较sym函数和syms函数的不同:

当使用syms函数时:

syms x y
z=sin(x)*sin(y)

当使用sym函数时:

x=sym('x')
y=sym('y')
z=sin(x)*sin(y)

在上面两段的代码所返回的结果是相同的,均为z=sin(x)*sin(y),但是使用syms函数定义相对简便,当在式子中需要定义n个变量的时候,使用syms可以有效节约时间,减少冗余的代码,而使用sym函数就较为麻烦。

同样,针对syms函数也和sym函数相同有四个所属集合:real、positive、integer和rational。用法与sym函数接近。

在使用编写代码的时候,syms函数使用次数非常多。

3、symfun函数

在MATLAB中,symfun函数用于构造符号函数。

在学习symfun函数之前我们一般会使用下面的方式来构造符号函数:

syms x y
f(x,y)=3*x^2+4*y^2+1

在学习symfun函数之后就可以使用symfun函数来构造函数:

syms x y
f=symfun(3*x^2+4*y^2+1,[x,y])

这两种方式返回的结果是相同的,均为f(x,y)=3*x^2+4*y^2+1,使用symfun在MATLAB比较常见的方式。

4、symvar函数

在MATLAB中symvar函数返回的是表达式中所有符号变量。其中是返回的结果是按照字母表排序,大写字母在小写字母前面。

下面举一个例子:

syms a b c d
x=a+b*c-d;
symvar(x)

运行结果如下所示:

ans =[a, b, c, d]

symvar函数还有另一个用法如下所示:

symvar(x,n)

该结果返回的是x中的n个符号变量,对上面的代码进行修改:

syms a b c d
x=a+b*c-d;
symvar(x,3)

运行的结果如下所示:

ans =[b, c, d]

上面所得结果3个结果是距离x最近的三个符号变量,MATLAB中通过比较各个符号变量与符号变量x的接近程度返回最终的结果。

MATLAB中的sym函数、syms函数、symfun函数以及symvar函数的简单介绍相关推荐

  1. MATLAB基础——设置符号变量sym,syms,symfun,symvar

    在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算:如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数.变量.表达式)进行运算和处理. 这类函数 ...

  2. matlab中多项式拟合如何给出r方,matlap拟合函数后r^2怎么求

    matlab拟合函数 求助 尝试用二次多项式拟合: clearall; x=2:2:20; y=[0.31.232.416.267.958.529.049.179.299.37]; scatter(x ...

  3. matlab awgn矩阵,MATLAB中产生高斯白噪声,涉及到awgn和wgn函数

    MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声. 1. WGN:产生高斯白噪声 y = ...

  4. histeq matlab原理,MATLAB中histeq的原理以及自写的具体实现函数

    1.什么是直方图? 直方图是数字图像处理中一个简单而重要的常用工具,它从总体上刻画了一幅图像的灰度内容. 具体来说,直方图描述的是图像中具有各灰度级的出现的概率(像素的个数),其横坐标为灰度级,纵坐标 ...

  5. matlab double to int,如何将matlab中的sym数据类型转换为double型

    满意答案 a19850429 推荐于 2016.11.30 采纳率:47%    等级:8 已帮助:862人 一般来说用dec2hex及hex2dec就可以. ss='010600001388849C ...

  6. 【 Verilog HDL 】函数(function)与任务(task)简单介绍

    背景 关于函数和任务,是我这几天一直想写的内容,原因在于我上篇博文:Verilog HDL 使用规范(一),最后提到的问题,关于代码书写的规范中,要求:用一个函数(function)来代替表达式的多次 ...

  7. tabulate matlab,matlab中用于统计矩阵数据频率,出现次数的函数

    第一种方法:调用MATLAB自带的函数tabulate统计一个数组中各数字(元素)出现的频数.频率 [例1]统计数值型数组中各元素出现的频数.频率 >> x = [2 2 6 5 2 3 ...

  8. 矩形波 matlab,在MATLAB中, 周期性矩形波(方波)信号 和方波信号函数

    周期性矩形波(方波)信号:在MATLAB中用square函数来表示,其调用形式为 y=square(t,DUTY) 其作用类似于sin(t),用以产生一个时长为t.幅值为±1的周期性方波信号,其中的D ...

  9. matlab中字符串和变量一起显示输出eval()函数用法

    eval()函数的功能:将括号内的字符串视为语句并运行,多在循环中使用,可以对多个名字有规则的变量或文件进行操作 比如 :eval('y1=sin(2)')和语句y1=sin(2)等价 比如: for ...

  10. matlab中的sym

    1.总是会混淆变量名和变量值的关系,有点晕啊 2.a = sym('y') b= sym('7') whos的结果是a和b symvar(a)和symvar(b)的结果是y和7 3.如果直接用syms ...

最新文章

  1. Oralce数据库之存储过程、存储函数、触发器和数据字典
  2. Linux 下 VuePress 的安装使用
  3. Android多种样式的进度条
  4. 如何使用代理服务器上网,从基础到高手--转
  5. 如何给计算机安装驱动程序,电脑系统怎么安装驱动程序
  6. 《你和你的研究》全文
  7. Windows更新 “Install error - 0x80070001”?
  8. 重磅丨中国信通院发布ICT深度观察十大趋势
  9. 线性代数笔记17——正交向量与正交子空间
  10. MarkDown超级教程 Obsidian版_11.4
  11. [C]二维数组的初始化规则
  12. 我究竟适不适合做数据分析师?
  13. PSP 图形处理能力
  14. 贸易顺差与人民币升值的关系
  15. 腾讯云8核16G服务器18M带宽CPU性能可支撑多少人同时在线?
  16. 手机通讯(呼叫流程)
  17. 2022山东省安全员B证考试题模拟考试题库及模拟考试
  18. wordpress加速之wp super cache 插件的使用
  19. 自然语言处理(NLP)学习笔记——分词工具词性对照表
  20. S355JR/S355J0/S355J2/S355K2对应国标材质

热门文章

  1. linux 下 cents os 7 下 安装JDK JRE TOMCAT 并配置环境变量
  2. HPUX 无法启动 卡在EVN_MC_INITIATED
  3. pyecharts 旋转折线图的X轴标签
  4. 51驱动AD9850/AD9851—DDS信号发生器
  5. SAP MM 供应工厂1050和凭证类型ZIC没有定义供货类型
  6. Linux命令学习-ps命令
  7. Android中wifi管理器WifiManager使用方法
  8. ios13 微信提示音插件_iOS13免越狱修改微信提示音教程 iPhoneXS-11修改微信提示音教程...
  9. python中反差分操作
  10. Oracle 数据库表空间容量调整(表空间缩容脚本)脚本