MATLAB2:符号对象的创建及符号计算

您所在的位置:网站首页 matlab定义符号变量的函数 MATLAB2:符号对象的创建及符号计算

MATLAB2:符号对象的创建及符号计算

2024-07-08 10:56:14| 来源: 网络整理| 查看: 265

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法

一、实验目的

  1.理解符号对象和数值对象之间的差别,以及它们之间的互相转换。   2.了解符号运算和数值运算的特点、区别和优缺点。   3.掌握符号对象的基本操作和运算,以及符号运算之间的基本应用。

二、实验内容

  1. 用syms定义具有“限定性”的参数属性:

syms x‘Flag’; %定义符号参数x Flag表示参数属性,可取以下“限定性”选项:   A、‘positive’ % 表示那些符号参数取正实数。   B、‘real’ % 表示那些符号参数限定为实数。   C、‘unreal’ % 表示那些符号参数为不限定的复数

  2.符号变量定义只能用“空格”隔离

  3.findsym自动认定表达式中的独立自变量的使用方式:

指令说明findsym(EXPR)确认表达式EXPR中所有“自由”符号变量findsym(EXPR,N)确认出靠x最近的N个独立自变量;x为首选自由变量,其后排列规则为:与x的ASCII码值之差的绝对值小的字母优先;差值相同时, ASCII码值大的字母优先

注:EXPR可以是符号矩阵,确认是对整个矩阵进行的,不是矩阵元素

  4. findsym的使用规范(新版本中使用symvar函数):

指令说明findsym所确认的是表达式中的“自由”,“独立”的符号变量。k不自由,z不独立,所以不被该指令认作自由变量。findsym(EXPR,N)把EXPR表达式中N个最靠近x的自由符号变量确认为“独立自由变量”。注意大小写。大写字母离小写x的距离总是比其他小写字母远

  5.矩阵的简单指令:

指令说明det(A)矩阵A的行列式inv(A)矩阵A的逆eig(A)矩阵A的特征值

  6.符号计算中的算符:   A、 基本运算符

指令说明+ - * \ / ^矩阵运算.* .\ ./ .^数组运算’ .’共轭转置、非共轭转置

  B、关系运算符   只有是否等于的概念:== ~=。没有大于、大于等于、小于、小于等于的概念。

  7.符号计算中的基本函数

A、三角函数、双曲函数及反函数:除atan2仅用于数值计算外,其他函数使用方法相同 B、指数、对数函数:没有数值计算中的log2,log10,其它如sqrt,exp,自然对数log使用方法都相同。 C、复数函数:MATLAB没有提供相角angle指令。 D、矩阵代数指令:使用方法几乎完全相同。

  8. 符号对象的识别

A、用class获得每种矩阵的类别 B、用isa判断每种矩阵的类别(若返回1,表示判断正确) C、利用whos观察内存变量的类别和其它属性

  9. 符号对象的置换操作

指令说明RES=subs(ES,old,new)用new置换ES中的old后产生RES。RES=subs(ES,new)用new置换ES中的自由变量后产生RES。

  10. 符号微分

指令说明dfdvn=diff(f,v,n)f为矩阵时,求导对元素逐个进行,但自变量定义在整个矩阵上;v缺省时,自变量由findsym自动辨认;n缺省为1;在数值计算中,diff是求差分的

  11. 符号序列的求和

指令说明s=symsum(f,v,a,b)f若为矩阵,求和对每个元素进行,但自变量定义在整个矩阵上;v缺省,自变量由findsym自动辨认;b可以取有限整数或无穷大;a,b缺省,默认求和区间为[0,v-1]

  12. 符号积分

指令说明intf=int(f,v)f对v的不定积分(不带积分常数)intf=int(f,v,a,b)f对v的定积分;f若为矩阵,积分对每个元素进行;v缺省,自变量由findsym自动辨认;a,b是积分上下限,可以取任何值或符号表达式

  13. 符号表达式的极限

指令说明limit(f,x,a)求符号表达式f对x趋近于a的极限limit(f,‘x’,‘a’,‘left’)求符号表达式f对x趋近于a的左极限limit(f,‘x’,‘a’,‘right’)求符号表达式f对x趋近于a的右极限

  14.符号变换和符号卷积

指令说明F=fourier(f,t ,w)求以t为符号变量f的fourier变换Ff=ifourier (F,w,t)求以w为符号变量的F的fourier反变换f

  15.表达式化简

指令说明simplify(f)对表达式化简,注意不是simple函数

  16.sym()涉及到表达式的一律用str2sym(),例如:

A、str2sym(pi + sqrt(5)) B、f1 = subs(f,sin(x),str2sym(‘log(y)’))

三、仿真结果

1.观察一个数(在此处@记述)在以下四条不同指令作用下的异同:    a=@   b=sym(@)    c=sym(@,‘d’)    d=sym(‘@’) %这给出完全准确值   在此,@分别代表具体数值7/3,pi/3,pi*3^(1/3);而异同通过vpa(abs(a-d)),vpa(abs(b-d)),vpa(abs(c-d))等来观察。 答:分析:d=sym(‘@’)对应的是完全准确值,通过上述程序观察a,b,c和d 的误差,可以得到:a,b的输出结果是一致的,但与d对应的完全准确值不完全一样,在a,b取值7/3,pi/3时,a,b,d对应结果是等价的,没有误差;而c=sym(@,‘d’)为数值类数字@的‘十进制浮点’近似表达,默认为32位,与d的误差绝对不是0。

>> a=7/3;b=sym(7/3);c=sym(7/3,'d');d=sym('7/3'); x1=vpa(abs(a-d)), x2=vpa(abs(b-d)),x3=vpa(abs(c-d)) x1 = 0.0 x2 = 0.0 x3 = 0.00000000000000014802973661668756666666667788716 >> a=pi/3;b=sym(pi/3);c=sym(pi/3,'d');d=str2sym('pi/3'); x1=vpa(abs(a-d)),x2=vpa(abs(b-d)),x3=vpa(abs(c-d)) x1 = 0.0 x2 = 0.0 x3 = 0.00000000000000011483642827992216762806615818554 >>a=pi*3^(1/3);b=sym(pi*3^(1/3));c=sym(pi*3^(1/3),'d');d=str2sym('pi*3^(1/3)'); x1=vpa(abs(a-d)),x2=vpa(abs(b-d)),x3=vpa(abs(c-d)) x1 = 0.00000000000000026601114166290944374842393221638 x2 = 0.00000000000000026601114166290944374842393221638 x3 = 0.0000000000000002660111416629094726767991785515

2.说出以下三条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”对象?3/7+0.1,sym(3/7+0.1),vpa(sym(3/7+0.1)) 答:

>> class(3/7+0.1) class(sym(3/7+0.1)) class(vpa(sym(3/7+0.1))) ans = 'double' ans = 'sym' ans = 'sym'

故3/7+0.1是“双精度”对象,而sym(3/7+0.1),vpa(sym(3/7+0.1)) 是“符号”对象。

3.在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是独立自由变量?sym(‘sin(wt)’),sym(‘aexp(-X)’),sym(‘zexp(jtheta)’)。 答:在MATLAB中运行指令(-8)(1/3)后,不会得到-2,结果是1.0000 + 1.7321i。它的全部方根有3个,分别为1.0000 + 1.7321i,-2.0000 + 0.0000i,1.0000 - 1.7321i。计算(-8)(1/3)全部方根的M脚本文件为:

>> symvar(str2sym('sin(w*t)')) symvar(str2sym('a*exp(-X)')) symvar(str2sym('z*exp(j*theta)')) ans = [ t, w] ans = [ X, a] ans = [ theta, z]

4.计算二重积分int(int(x2+y2,y,1,x^2),x,1,2)。 答:

>> syms x y; >> int(int(x^2+y^2,y,1,x^2),x,1,2) ans = 1006/105 四、实践中遇到的问题及解决方法

  1.问题:在MATLAB中输入sym(‘pi/3’),findsym(sym(‘sin(wt)’))等,总是不能运行   解决方法:新版本的MATLAB中:   a、sym()涉及到表达式的一律用str2sym()   b、取消findsym函数,建议使用symvar函数。故问题中涉及的表达式应该为:str2sym()str2sym(‘pi/3’),symvar(str2sym(‘sin(w*t)’))   2.问题:分不清数据类型是“双精度”对象,还是“符号”对象?   解决方法:二者不同点在于:   a、精度不同:双精度对象大约是16位有效数字,而符号对象是无误差的。   b、能够进行的运算不同:尽管二者可以调用的部分数学函数名字相同,但真正的函数其实是不一样的。双精度数可以进行比较大小等关系运算,符号对象不能(较新的版本也可以,但结果一般是表达式而非逻辑值)。符号对象里面可以包括未知数,可以进行微积分等各种公式推导,双精度对象不能。   c、占用内存和运算速度不同:符号对象占用的存储空间比双精度数据大得多,一个双精度数一般是8字节,而一个符号量至少是100多个字节。运算速度方面双精度数据也快得多。   3.问题:不知道如何定义变量x为正实数?   解决方法:在syms定义时,加上具有“限定性”的参数属性。该题可以定义为syms(x,’ positive’)   4.问题:不会求某个点的左右极限   解决方法:熟记求左右极限的公式

a、limit(f,'x','a','left') %求符号表达式f对x趋近于a的左极限 b、limit(f,'x','a','right') %求符号表达式f对x趋近于a的右极限

  其中,需要注意与求某点极限的不同:求左右极限需要将自变量以及该点用单引号‘’括起来   5.问题:不知道如何求绝对值?   解决方法:一开始,我认为abs()只有求解复数的模的功能,其实不然,它还可以用来求解绝对值。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭