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

这篇具有很好参考价值的文章主要介绍了MATLAB中的sym函数、syms函数、symfun函数以及symvar函数的简单介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在日常求解数学题目的时候常常需要对于进行对于带有符号的变量进行运算,比如最经典的就是求解方程,求出方程中所有变量的解。本文主要对于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的接近程度返回最终的结果。文章来源地址https://www.toymoban.com/news/detail-778436.html

到了这里,关于MATLAB中的sym函数、syms函数、symfun函数以及symvar函数的简单介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB中滤波函数、频率响应函数以及频率响应函数不同表达形式的转换

            频率响应函数的表达式:         对应的z变换的多项表达式:         Z变换的零极点表达形式:         Z变换的二阶因子级联形式: filter函数,仅可以用于零状态响应系统。         y=filter(b,a,x) ;                %b为z变换多项表达式公式中[b0,b1...bM]的矩阵

    2024年02月07日
    浏览(46)
  • MATLAB数值计算介绍以及GUID界面的简单介绍

    文章目录 一、MATLAB数值计算介绍 二、GUID简单案例1 1. 主窗口设计 2. 菜单栏和工具栏设计 3. 操作函数和结果输出 4. 图标和其他文件 三 、GUID案例介绍2 1. 创建GUI界面 2. 添加按钮控件 3. 添加文本框控件 4. 添加列表框控件 5. 添加菜单控件 6. 编写代码实现数值计算 7. 将计算结果

    2024年02月11日
    浏览(39)
  • MATLAB中的函数句柄 理解

    https://zhuanlan.zhihu.com/p/266263265 https://blog.csdn.net/kevinhg/article/details/8861774 函数句柄也是MATLAB中的一种常见的数据类型,它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C++),或者函数引用(Perl)。 它的作用是将一个函数封装成一个变量,使其能够像其它变量

    2024年02月03日
    浏览(33)
  • Matlab中的fftshift函数详解

    Matlab中的fftshift函数详解 在Matlab中,fftshift函数是一个用于执行频谱转换的有用工具。它通过重新排列频谱数据,使得频谱的零频分量位于频谱的中心位置。本文将详细解释fftshift函数的使用方法,并提供相应的源代码示例。 1. fftshift函数概述 fftshift函数是Matlab中的一个信号处

    2024年02月06日
    浏览(40)
  • Matlab 拉格朗日(lagrange)插值 以及 poly、conv函数理解

    https://songshanhu.csdn.net/643f5384986c660f3cf93c13.html?spm=1001.2101.3001.6661.1utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-36407923-blog-83212763.235%5Ev32%5Epc_relevant_increate_t0_download_v2depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1

    2024年02月07日
    浏览(42)
  • MATLAB中的pinv函数:矩阵伪逆计算

    MATLAB中的pinv函数:矩阵伪逆计算 在MATLAB中,pinv函数是用于计算矩阵的伪逆(pseudo-inverse)的工具。矩阵的伪逆在线性代数和数值计算中具有广泛的应用。本文将详细介绍pinv函数的用法,并提供相应的源代码示例。 伪逆是对于非方阵而言的一种类似逆矩阵的概念。对于一个

    2024年02月06日
    浏览(36)
  • MOSFET开关管的结构以及在MATLAB中的连接

    MOSFET:金属-氧化物半导体场效应晶体管,简称金属半场效应晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET);它是由金属(M)层的栅极隔着氧化层(O)利用电场来控制半导体(S)的场效应晶体管,可以广泛使用在模拟电路与数字电路中。 MOSFET按照场效应分为:增强型和耗尽

    2024年02月06日
    浏览(33)
  • python中的seek函数和tell函数详解(以及包含seek函数报错)

    seek函数用于移动文件中指针位置和指定指针移动偏移量大小。 seek()函数格式为: file. seek(offset[, whence]) offset是偏移量,可正可负,正数表示向后面移动offset位,负数表示向前面移动offset位; whence有0,1,2三个参数,0表示将指针移动到文件开头,1表示将指针移动到当前位置,

    2024年02月09日
    浏览(58)
  • Matlab中的zeros函数表示创建一个由零组成的矩阵或数组

    Matlab中的zeros函数表示创建一个由零组成的矩阵或数组。它是Matlab中的一个内置函数,用于快速生成元素全为零的矩阵。在本文中,我们将探讨zeros函数的用法以及如何使用它来创建零矩阵。 在Matlab中,zeros函数的语法如下: 其中,sz或sz1、sz2等参数表示所需矩阵的大小。可以

    2024年02月04日
    浏览(62)
  • MySQL数据库中的存储过程以及存储函数练习

     字段名       数据类型       主键    外键    非空   唯一    自增       id             INT               是      否       是       是           否    name    VARCHAR(50)   否      否       是       否           否    glass   VARCHAR(50)     否   

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包