符号运算

符号运算分为以下几类:

符号表达式和符号矩阵的操作整体定义为

符号微积分

符号线性方程

符号微分方程

A、符号变量、符号表达式和符号方程的分解

一、 生成符号变量要使用sym和syms:

使用sym函数可以定义符号表达式,此时有两种定义方法:

1、使用sym函数将表达式中的每一个变量定义为符号变量;

2、使用sym函数将表达式整体定义为符号变量(但并没有将式子中的变量也定义为符号变量);

方式一的应用举例:

>> a=sym('a');

>>

b=sym('b');

>>

c=sym('c');

>>

x=sym('x');

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

f

=

a*x^2 + c +

b*c

方式二的应用举例:

>>

f=sym('a*x^2+b*c+c')

f

=

a*x^2 + c +

b*c

>>

g=f^2+4*f-2

g

=

4*c + 4*b*c + 4*a*x^2

+ (a*x^2 + c + b*c)^2 - 2

一、使用syms函数定义符号变量和符号表达式

Syms函数的功能比sym函数的功能更为强大,它可以一次创建多个符号变量;而且,使用的格式很简单:(即将sym函数进行系统化,对变量进行统一的转化)

Syms var1 var2 var3

………

应用实例:

>> syms a b c x

>>

f=sym('a*x^2+b*x+c')

f

=

a*x^2 + b*x +

c

>>

g=f^2+4*f-2

g

=

4*c + 4*b*x + 4*a*x^2

+ (a*x^2 + b*x + c)^2 - 2

三、符号方程的生成

方程与函数的区别在于一个有数字和变量组成的表达式,而方程则是由函数和等号组成的等式;

应用实例:

>> %符号方程的生成

>> %使用是sym函数生成符号方程

>>

fch=sym('sin(x)+cos(x)=1')

fch =

cos(x) + sin(x) =

1

B、符号变量的基本操作

一、findsym函数用于寻找符号变量

Fundsym函数用于寻找一个变量表达式中存在的符号变量,

实例应用:

>> syms x n

>> f=sym('x^n')

f

=

x^n

>>

syms a b t

>> g=sym('a*t+b')

g

=

b

+ a*t

>>

findsym(f)

ans

=

n,x

>> findsym(g)

ans

=

a,b,t

二、任意精度的符号表达式

MATLAB提高了digits和vpaliang函数来实现任意精度的符号运算

(1)、digits函数设定所使用的精度

单独使用digits命令将在‘命令’窗口中显示当前设定的精度值;

Digits(D)命令用于设定数值的精确度为D;

D=digits命令也是用于“命令”窗口中返回当前设定的数值精度;

(2)、vpa函数进行可控精度运算

R=vpa(s)命令用于将显示符号表达式s在当前精度D下的值,其中D是使用digits函数设定的精度值

Vpa(S,D)命令用于显示s值在当前精度D下的值;

应用实例:

>> digits

Digits = 32

>>

a=vpa(pi)

a

=

3.1415926535897931159979634685442

>>

b=vpa(pi,100)

b

=

3.141592653589793115997963468544185161590576171875

>>

digits(100)

>> b=vpa(pi,100)

b

=

3.141592653589793115997963468544185161590576171875

三、数值型变量与符号型变量的转换形式

对于任意数值型变量t,使用sym函数可以将其转换为4种形式的符号变量,分别为有理数形式:sym(t)或、sym(t,‘r’)

、浮点型sym(t,‘f’)

、指数型sym(t,‘e’)

、数值精度形式sym(t,‘d’)

应用实例:

>> t=0.01

t

=

0.0100

>> sym(t)

%有理数形式

ans =

1/100

>>

sym(t,'r')

%有理数形式

ans =

1/100

>>

sym(t,'f')

%浮点型形式

ans =

5764607523034235/576460752303423488

>>

sym(t,'e') %指数型形式

ans =

eps/1067 +

1/100

>>

sym(t,'d')

%数值精度形式

ans =

0.01000000000000000020816681711721685132943093776702880859375

使用如上所述的方法可以将数值型矩阵转换符号型矩阵,注意此时只能将其转换为有理数形式;

>> A=hilb(4)

A

=

1.0000

0.5000

0.3333

0.2500

0.5000

0.3333

0.2500

0.2000

0.3333

0.2500

0.2000

0.1667

0.2500

0.2000

0.1667

0.1429

>> A=sym(A)

%将矩阵中的每一个元素转换为有理数形式

A

=

[ 1,

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

[ 1/2,

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

[ 1/3,

1/4, 1/5, 1/6]

[ 1/4,

1/5, 1/6, 1/7]

C、符号表达式的操作

操作共包括:四则运算、合并同类型、多项式分解和简化

一、四则运算:

符号表达式的四则运算与通常的算术运算式一样,可以进行四则运算:

实例应用:

>> syms x y a b

>>

fun1=sin(x)+cos(x)

fun1 =

cos(x) +

sin(x)

>> fun2=a+b

fun2

=

a

+ b

>>

fun1+fun2

ans =

a

+ b + cos(x) + sin(x)

>>

fun1*fun2

ans =

(a

+ b)*(cos(x) + sin(x))

二、合并同类项

在MATlab中,使用collect函数来合并同类项,其使用格式如下:

Collect(S,V)命令用于将符号矩阵S中所有同类项合并,并以v为符号变量输出;

Collect(s)命令使用findsym函数规定的默认变量代替上式中的V;

应用实例:

>> syms x y

>>

collect(x^2*y+y*x-x^2-2*x)%此处默认x为符号变量

ans =

(y

- 1)*x^2 + (y - 2)*x

>>

collect(x^2*y+y*x-x^2-2*x,y)%此处修改为以y为符号变量

ans =

(x^2 + x)*y - x^2 -

2*x

>>

f=-1/4*x*exp(-2*x)+3/16*exp(-2*x);

>> collect(f)

ans =

(-1/(4*exp(2*x)))*x +

3/(16*exp(2*x))

使用horner函数进行多项式的因式分解

应用实例:

>> syms x

>>

fun1=3*x^3+5*x^2-14*x-26

fun1 =

3*x^3 + 5*x^2 - 14*x -

26

>>

horner(fun1)

ans = x*(x*(3*x + 5) -

14) - 26

四、符号多项式的简化

在MATLAB 7语言中,使用simplify函数和simple函数进行符号表达式的简化;

A、simplify函数的使用:

Simplify(S)命令将符号表达式S中的每一个元素进行简化,缺点是:即使多次使用simplify函数也不一定得道最简形式

用simple函数进行表达式简化得到的结果要比simplify函数得到的结果更加简化和合理,使用格式如下:

Simple(S)命令用于多种代数简化方法对符号表达式S进行简化,并显示其中最简化的结果;

[R,how]=simple(S)命令在返回最简单的结果的同时,返回一个描述简化方法的字符串how

应用实例:

>> syms x

>>

fun1=(1/x+5/x^2+9/x+2)^(1/4)

fun1 =

(10/x + 5/x^2 +

2)^(1/4)

>>

sfy1=simplify(fun1)

sfy1 =

((10*x + 5)/x^2 +

2)^(1/4)

>>

sfy2=simplify(sfy1)

sfy2 =

((10*x + 5)/x^2 +

2)^(1/4)

>>

simplify(sin(x)^2+cos(x)^2)

ans =

1

>>

s=2*cos(x)^2-sin(x)^2;

>> simple(s)

simplify:

2

- 3*sin(x)^2

radsimp:

2*cos(x)^2 -

sin(x)^2

simplify(100):

3*cos(x)^2 -

1

combine(sincos):

(3*cos(2*x))/2 +

1/2

combine(sinhcosh):

2*cos(x)^2 -

sin(x)^2

combine(ln):

2*cos(x)^2 -

sin(x)^2

factor:

2*cos(x)^2 -

sin(x)^2

expand:

2*cos(x)^2 -

sin(x)^2

combine:

2*cos(x)^2 -

sin(x)^2

rewrite(exp):

2*((1/exp(x*i))/2 +

exp(x*i)/2)^2 - (1/2*i*exp(i*x) - 1/2*i*exp(-i*x))^2

rewrite(sincos):

2*cos(x)^2 -

sin(x)^2

rewrite(sinhcosh):

2*cosh(-x*i)^2 +

sinh(-x*i)^2

rewrite(tan):

(2*(tan(x/2)^2 -

1)^2)/(tan(x/2)^2 + 1)^2 - (4*tan(x/2)^2)/(tan(x/2)^2 +

1)^2

mwcos2sin:

2

- 3*sin(x)^2

collect(x):

2*cos(x)^2 -

sin(x)^2

ans =

2

- 3*sin(x)^2

>>

[r,how]=simple(s)

r

=

2

- 3*sin(x)^2

how =

simplify

C、subs函数用于替换求值

使用subs函数可以将符号表达式中的字符型变量用数值型变量替换,格式如下:

Subs(s)命令用于将符号表达式中的所有符号变量用调用函数中的值或是MATLAB 7工作区间的值代替;

Subs(s,new)命令将符号表达式s中的自由符号变量用数值型变量或表达式new替换;

Subs(s,old,new)命令将符号变量s中的符号变量old用数值型变量或表达式new替换

应用实例:

>> syms x y

>>

f=x^2*y+3*x*sqrt(y)

f

=

x^2*y +

3*x*y^(1/2)

>>

subs(f,x,5)

ans =

25*y +

15*y^(1/2)

>>

subs(f)

ans =

x^2*y +

3*x*y^(1/2)

>>

subs(f,y,5)

ans =

5*x^2 +

3*5^(1/2)*x

>> findsym(f,1) %符号表达式f中系统默认的符号变量

ans

=

x

matlab radsimp,[转载]MATLAB学习笔记(八)相关推荐

  1. s matlab toolbox,Matlab Robotic Toolbox工具箱学习笔记(一 )

    Matlab Robotic Toolbox工具箱学习笔记(一) 软件:matlab2013a 工具箱:Matlab Robotic Toolbox v9.8 Matlab Robotic Toolb ...

  2. matlab入门之旅,MATLAB 入门之旅学习笔记

    MATLAB 入门之旅学习笔记 https://matlabacademy.mathworks.com/R2019a/cn/portal.html?course=gettingstarted 1.概述 ...

  3. MATLAB simulink 模型验证学习笔记

    MATLAB simulink 模型验证学习笔记 一.静态验证 1.Model Advisor 模型验证意思是用matlab自带的规范检查工具来检查自己画的模型是否符合规范. 进行模型验证需要用到的模 ...

  4. ReactJS学习笔记八:动画

    ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...

  5. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

  6. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...

  7. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

  8. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  9. ZooKeeper学习笔记(八):ZooKeeper集群写数据原理

    写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...

最新文章

  1. Redis知识点汇总
  2. linux下如何修改根口令
  3. CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段)
  4. 00029_引用数据类型
  5. android videoview属性,Android VideoView
  6. python输入一个数组输出24进制式的时间_【翻译】《利用Python进行数据分析·第2版》第4章(下)NumPy基础:数组和矢量计算...
  7. mysql判断表存在的sql语句_SQL 语句判断已知表是否存在_MySQL
  8. and or not 优先级_快速划分测试用例优先级
  9. python实现视频关键帧提取(基于帧间差分)
  10. nutch,hbase,zookeeper兼容性问题
  11. RHEL5 怎么装vim
  12. 吴恩达机器学习系列23:基于内容的推荐算法
  13. AI需要你帮忙 | 把两栖爬行动物框出来,提高AI识别准确率
  14. 微软警告:警惕新型勒索软件 PonyFinal,已现身印度、伊朗和美国
  15. python 基础学习1
  16. 手机app测试用例考虑测试点
  17. 系统稳定性建设实践总结
  18. What Could Kill Testing?(什么可以终结测试)
  19. matlab:matlab神经网络工具的使用
  20. Mysql Spatial 索引

热门文章

  1. 【渝粤题库】国家开放大学2021春2238个案工作题目
  2. php soap debug,php soap客户端调试实例
  3. C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针
  4. 戏说 .NET GDI+系列学习教程(三、Graphics类的方法的总结)
  5. [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
  6. SPOJ QTREE5 lct
  7. 《Effective Java》读书笔记 - 5.泛型
  8. [SoapUI] How to create a random UUID in each Request's Headers
  9. ARM的编程模式和7种模式
  10. 转:巧用搜狗输入法输入英文单词