Matlab基础入门手册(第六章 符号运算)

第六章 符号运算

1.53 符号对象

1.符号数值变量表达式的创建方法

2.认识函数

sym、syms

3.说明

符号数学工具箱

符号数学工具箱引入了一种特殊的数据类型 – 符号对象

该数据类型包括符号数字,符号变量,符号表达式和符号函数,还包含符号矩阵及上述变量组成的符号数组。

符号数学工具箱提供求解、绘图和操作符号数学方程的功能

4.实例演示

%1_53%freexyn1/6 %双精度浮点型1/6,在Matlab中使用小数表达x=sym(1/6) %创建符号变量,分数形式表达class(x) %测试x类型为符号对象sin(pi) %对双精度浮点pi值求sin值,有舍入误差sin(sym(pi)) %对符号对象数值pi求sin值,完整表达%% 创建符号变量sym(‘x’) %方法1syms x %方法2 声明后可直接使用,无输出结果,但工作区会存储syms x y zsym(‘x’,[1 5]) %方法1的形式也可赋值多个符号变量,并自动编号%% 创建符号表达式f=2*x+1g=x*y+z

1.54 符号函数和符号矩阵

1.符号函数和符号矩阵的创建和应用

2.说明

符号函数和符号矩阵的用法与常规的矩阵和函数相同,差异在于处理的数据类型不同,用符号对象运算时,需要首先声明符号对象。

3.实例演示

%1_54syms x %声明符号对象xf=2*x+1 %符号表达式f(x)=2*x+1 %符号函数f(1) %结果是符号对象3,与双精度3不同syms f(x,y) %直接创建(声明)没有函数表达式的函数f(x,y) %调用f(1,2) %运算结果%% 符号矩阵syms a b c d %声明符号变量A=[a b;c d] %符号矩阵,结果每行用中括号单独表达B=[a 1;c 3] %混合类型符号矩阵sum(A) %符号矩阵运算,与常规矩阵算法相同sum(B)sym(‘x’,[2 2]) %创建2行2列矩阵,自动添加下标sym(‘x%d%d’,[2 2]) %分别引用2个下标sym(‘x%d2018%d’,[2 2]) %2个下标中间添加数字%% 普通矩阵转化为符号矩阵C=hilb(3) %创建3阶希尔伯特矩阵sym(C) %转化为符号矩阵

1.55 基本运算

1.符号对象的算术运算、关系运算和逻辑运算

2.认识函数

isAlways %判断符号表达式是否为真

3.说明

符号对象的基本代数运算与浮点型数据的运算大体相同

4.实例演示

%1_551+1sym(1)+1syms a b x %声明符号变量a+1a+bf=a+b+1f+xg(x)=a*x+b %函数运算g(10)m=[a b;b a] %符号矩阵运算m+1m.*2 %每个元素都乘2m*m %矩阵乘法%% 关系运算1<2 %浮点型关系运算返回逻辑值sym(1)<2 %先转换为符号型再运算,返回符号型表达式isAlways(sym(1)<2) %用符号表达式的判断函数,返回逻辑值a<b %未知参数关系运算f=a=0)isAlways(abs(a)*abs(b)>=abs(a*b))isAlways(abs(a)>=0 | 1>2) %第一项为真,取或运算后,结果为真isAlways(abs(a)>=0 & 1>2) %结果为假a | ba & b

1.56 使用假设

1.符号变量使用假设

2.认识函数

设置assume

添加assumeAlso

显示assumptions

3.说明

在符号数学工具箱中,符号变量默认是复数变量

若要运算中不使用全体复数域,可以为变量添加假设指定范围

可以通过假设设置变量属于集合:整数、正数和实数

4.实例演示

%1_56%作者:freexynsyms xassumptions(x) %x不存在假设,属于复数域assume(x>=0) %设置假设assumptions(x) %查看假设% assume(x<=5)% assumptions(x) %会覆盖前面假设内容assumeAlso(x<=5) %追加假设assumptions(x)%% 设置x属于集合assume(x,'integer') %假设x属于整数assumptions(x)assume(x,'positive') %假设x为正数assume(x,'real') %假设x属于实数assumptions(x)%% 符号变量声明时同时设置假设sym('x')sym('x','real') %创建(声明)符号变量并假设属于实数assumptions(x)syms y positive %另一方法,创建(声明)符号变量并假设属于正数assumptions(y)assumptions %不给定参数时,会显示所有假设%% 设置假设的用法solve(y+1==0,y) %solve函数用来解方程,solve(x+1==0,x)

1.57 清除假设

1.清除假设和重置符号引擎

2.认识函数

reset

3.说明

符号变量和它们的假设是分开存储的

符号引擎工作空间通常是空的,Matlab工作空间记录符号变量并在需要时把他们传递到符号引擎工作空间进行计算

符号引擎空间存储了所有的关于符号变量的假设,这些假设会影响方程的求解、化简和变换

清除变量和清除假设是两个过程,运算结束后注意清除假设

4.实例演示

%1_57syms x y z positive %假设不存在工作区中,而在符号引擎工作空间中assumptions %查看所有假设whos %查看所有变量clear x %清除变量x,并不会清除掉假设assumptionswhos% assume(x,’clear’) %清除假设:变量x是访问和调用x假设的桥梁,变量若被清除了,则无法访问或清除假设syms x %重新声明假设xassume(x,’clear’)assumptionswhosassume([x y],’clear’) %可同时清除多个假设,以数组形式assumptionsreset(symengine) %重制符号引擎工作空间:清理所有符号假设assumptions

1.58 可变精度算术

1.可变精度算术的应用

2.认识函数

vpa

3.说明

默认的,Matlab双精度浮点数使用16位数字精度

而符号数学工具箱的vpa函数,提供了无限大的可变精度

它默认使用32位数字精度,32位指的是有效数字的位数

4.实例演示

%1_58pi %默认双精度浮点型pi值,16位精度,默认short格式小数点后4位vpa(pi) %pi转换为可变精度数值,32位精度vpa(pi)+1 %先转换为可变精度数值再运算vpa(pi,100) %通过输入第2个参数指定精度vpa(sqrt(2),100)%% 让整个运行环境使用可变精度digits %获取当前运行环境的精度i=digits(100) %设置运行环境精度100,i返回设置前的精度值digitsvpa(pi) %显示pi的可变参数值,已变为100位vpa(pi)+1digits(32)digitsvpa(pi)

1.59 运算精度的选择

1.分别在以下三种算术条件下求sin(pi)的值

符号运算

可变精度运算

双精度浮点型运算

2.说明

2.1 符号算术

默认的,符号数学工具箱使用确切的数字,进行精确的符号计算

2.2 可变精度算术

是符号数学工具箱的功能,是符号计算的近似数值计算

通过控制数值显示的有效位数实现可变精度

默认32位,运算速度稍快,内存消耗量依赖于设定的精度

2.3 双精度浮点数算术

双精度浮点运算就是常规的Matlab数值计算

有舍入误差,精确到16位精度,运算速度最快,内存消耗最少

3.实例演示

%1_59a=sym(pi) %符号型sin(a)b=vpa(pi) %可变精度型sin(b)c=pi %双精度sin(c)

1.60 数值型的转换

1. 符号型和数值型之间的转换

2.说明

符号数学工具箱允许实现符号对象和常规Matlab数据类型的转换(如数值、字符等)

也可以借助符号变量的精度控制方法实现高精度的数值计算

数值型转换成符号型用sym,返回数值表达式的有理近似值

转换的原理是,通过匹配p/q, pπ/q, (p/q)^1/2,2^q和10^q(其中p和q是中等大小的整数)这样的形式来修正舍入误差(符号型为精确值)

3.实例演示

%1_600.3 %双精度sym(0.3) %转化为符号型sym(0.333333333333333333333333333) %转化为符号型a=1/6 %取小数后4位sym(a)a=pi/6sym(a)a=3^(1/3) %开立方近似值sym(a) %转换成符号型时,无法将近似值转换成精确值的a=3^(1/2) %开平方近似值sym(a) %可以转换成符号型,常规近似值能够精确转换回去sym(0.333333333333333333333333333) %转回符号型1/3sym(‘0.333333333333333333333333333’) %变为符号型sym(‘x’) %上式形式类似于创建符号变量

1.61 查找符号变量

1.查找符号变量

2.认识函数

symvar

3.说明

在符号表达式、符号函数和符号矩阵中查找符号变量

symvar函数自动把查找到的符号变量按字母顺须排列并输出

如果不是查找所有符号变量,那么靠近字母x的变量优先查找

特别的,对于符号函数,作为函数输入参数的符号变量优先查找

大多应用在当没有指定运算变量时,用于确定默认符号变量

4.实例演示

%1_61%freexynsyms a b n t x yf=sin(a*x+b)+x^n+log(y) %符号表达式symvar(f) %查找函数表达式f中的符号变量symvar(f,1) %优先查找靠近x的符号变量symvar(f,2) %查找2个符号变量f(t)=sin(a*t+b)+x^n+log(y) %符号函数symvar(f) %优先查找自变量,然后,查找靠近x的变量symvar(f,1)symvar(f,2)m=[a b n;t x y] %符号矩阵symvar(m)symvar(m,2) %查找2个靠近x的变量

1.62 变量替代

1.符号变量的代入和替代

2.认识函数

subs

3.说明

把符号变量替代为数值

把符号变量替代为矩阵

替换符号矩阵中的元素

4.实例演示

%1_62syms x yf=x+ysubs(f,x,1) %将符号表达式f中变量x替换为1subs(f,y,2)subs(f,1) %符号表达式f中默认符号变量替换为1,默认符号变量即x,或者靠近x最近的变量subs(f,x,y) %x替换为ysubs(f,[x y],[1 2]) %将x和y分别替换成1和2subs(f,x,[1 2]) %x替换为矩阵[1 2]m=[x y x;y x y] %2行3列的符号变量m(1,3)=sym(‘a’) %下标索引替换法subs(m,x,sym(‘a’)) %x替换为asubs(m,m(1,1),sym(‘a’))subs(m,x,x^2+x+1+y) %将x替换为符号表达式subs(m,x,[2*x 2*y])

1.63 长表达式的缩写

1.长表达式的缩写

2.认识函数

pretty

subexpr

3.说明

长表达式可能含有多个相同的子表达式

可以把这样的子表达式替换并缩写

pretty使用内部算法来选择要缩写的子表达式,可以嵌套缩写

subexpr函数只做一个子表达式的缩写,它不支持嵌套缩写

它默认使用变量sigma来缩写子表达式

4.实例演示

%1_63syms xs=(sqrt(5)+x)/2pretty(s)ss=(s^2+s+1)*(s^2+s-1)/((s^2-s-1)*(s^2-s+1)^2)pretty(ss) %嵌套缩写,将表达式中重复出现的子表达式缩写并拎出说明,子表达式符号无法更改[s1,t]=subexpr(ss,’t’) %嵌套缩写,返回表达式名称可指定,且是单行表达

1.64 符号函数绘图

1.简单介绍符号函数、方程和表达式的绘图方法

2.认识函数

fplot

3.实例演示

%1_64% fplot(@sin) %函数句柄调用% fplot(sin) %直接传递函数名,报错% fplot(sin(x)) %函数名传入自变量,报错%%Matlab是一个综合运行环境,上述为Matlab中基础工作模块中的函数%% 符号函数工具箱中,也有fplot% Matlab会根据输入数值类型区别调用工具箱,输入数值型会调用基础模块,输入符号型调用符号函数工具箱syms xfplot(sin(x)) %符号工具箱中可以直接调用函数名称fplot(exp(x))fplot(sin(x)+x^4*log(x))fplot(sin(x)+x^4*log(x),[0 10]) %第二个参数指定绘图范围% f=x^2+x+1 %符号表达式% fplot(f) %传入符号表达式绘图f(x)=x^2+x+1 %符号函数fplot(f) %传入符号函数绘图

(本章结束,本书结束)

欢迎交流和留言

作者/旺旺/ UP:freexyn(邮箱:freexyn@163.com)

整理/注释:韩松岳(邮箱:colincooper@sina.com)

建议、提问、合作、供稿等,请发邮件。

附本书相关链接:

Matlab基础入门手册(第一章 入门)

Matlab基础入门手册(第二章 矩阵)

Matlab基础入门手册(第三章 运算符)

Matlab基础入门手册(第四章 数据类型)

Matlab基础入门手册(第五章 函数/脚本)

【本文】Matlab基础入门手册(第六章 符号函数)

End

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月19日
下一篇 2022年6月19日

相关推荐

  • 阔腿裤人人有,为什么你穿就丑?犯了这“四大忌”,难怪显矮胖

    阔腿裤是夏季里不可或缺的一款基础单品,它兼具时尚与休闲的属性,而且在穿搭体验上也非常强,宽松的版型对身材的包容性极强,不管是腿粗还是腿型不好的女生都可以轻松驾驭,小个子也可以利用阔…

    2022年7月8日
  • 皮肤偏黄偏黑的女人,夏季远离这3种“显黑色”,俗气又廉价

    亚洲人的肤色整体都偏向于暖色调,某些程度上也就限制了我们对于颜色的选择。尤其是在夏季,想要通过不同的颜色搭配来营造出时髦的气质。但是由于肤色的原因,更加需要去精准的挑选适合我们黄黑…

    2022年5月19日
  • visual studio code C语言必备扩展插件

    visual studio code是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对…

    2022年8月16日
  • 头条涨薪秘籍-全网没有之一的pytest 玩转数据驱动测试框架

    前言:嗨咯铁汁们,很久不见,我还是你们的老朋友,这里也感谢各位小伙伴的点赞和关注,你们的三连是我最大的动力哈,我也不会辜负各位的期盼,这里呢给大家出了一个我们废话少说直接开始正文【…

    2022年6月17日
  • 章子怡最新全家福!大女儿近照太漂亮,换造型大抢章子怡的风头

    不久前正好是汪峰51岁的生日,他也在自己的社交平台上晒出了全家人的合照,而照片上的章子怡素颜出镜,状态依旧很出色,醒醒看上去也长大了不少,身穿白色裙装被爸爸抱着太可爱了。 最让大家…

    2022年7月3日
  • DBG玩法得靠大厂拯救?继杀戮尖塔、弈仙牌之后,漫威对决也入局

    在游戏行业中,大厂与小厂之间基本上是有着不可逾越的沟壑,但却各自有着自身的优缺点,比如大厂就由于试错成本的问题,基本上没有玩法上的创新,但却有着将玩法转化为爆款的能力,而小厂,虽然…

    2022年7月14日
  • 营销原来如此简单

    营销不应该如此复杂 作者简介 赵晟泉 30年资深营销专家,服务工行,银联,华为,阿里等大量知名企业;前世界3强营销高管,曾任职于亚马逊,领英,甲骨文,惠普,戴尔等公司 ;畅销书《银…

    2022年8月1日
  • 单引号怎么打在电脑上(键盘上的单引号)

    电脑单引号怎么打?方法如下: 在键盘上都会有引号的符号”,在使用时,一般需要同时按住shift键和引号键,这样就会在呈现出引号。在中文状态下,一般会直接出现双引号和引回。如果是在英…

    2022年5月6日
  • vlookup函数的使用方法教程注意事项!

    vlookup函数想学好并不容易,需要不断的学习和使用,让大脑记住这些公式。 Hello,大家好,这一章我们开始学习函数,函数可以说是excel的精髓,它们能够帮助我们快速的处理数…

    2022年8月13日
  • 《红警》居然出新Mod了

    还有《红色警戒》的RTS老粉吗? 粉丝们计划为庆祝西木工作室经典即时战略游戏举办直播活动,包括两场新Mod在线对战演示。 一款Mod名为“Dawn of the Tiberium …

    2022年8月25日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息