matlab radsimp,[转载]MATLAB学习笔记(八)
符号运算
符号运算分为以下几类:
符号表达式和符号矩阵的操作整体定义为
符号微积分
符号线性方程
符号微分方程
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学习笔记(八)相关推荐
- s matlab toolbox,Matlab Robotic Toolbox工具箱学习笔记(一 )
Matlab Robotic Toolbox工具箱学习笔记(一) 软件:matlab2013a 工具箱:Matlab Robotic Toolbox v9.8 Matlab Robotic Toolb ...
- matlab入门之旅,MATLAB 入门之旅学习笔记
MATLAB 入门之旅学习笔记 https://matlabacademy.mathworks.com/R2019a/cn/portal.html?course=gettingstarted 1.概述 ...
- MATLAB simulink 模型验证学习笔记
MATLAB simulink 模型验证学习笔记 一.静态验证 1.Model Advisor 模型验证意思是用matlab自带的规范检查工具来检查自己画的模型是否符合规范. 进行模型验证需要用到的模 ...
- ReactJS学习笔记八:动画
ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件? 当我们点开下载页时, 一 ...
- ROS学习笔记八:创建ROS msg和srv
ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...
- Halcon 学习笔记八:颜色识别
Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...
- ZooKeeper学习笔记(八):ZooKeeper集群写数据原理
写数据原理 写流程直接请求发送给Leader节点 这里假设集群中有三个zookeeper服务端 ACK (Acknowledge character)即是确认字符,在数据通信中,接收站发给发送站的一种 ...
最新文章
- Redis知识点汇总
- linux下如何修改根口令
- CodeForces 390E Inna and Large Sweet Matrix(树状数组改段求段)
- 00029_引用数据类型
- android videoview属性,Android VideoView
- python输入一个数组输出24进制式的时间_【翻译】《利用Python进行数据分析·第2版》第4章(下)NumPy基础:数组和矢量计算...
- mysql判断表存在的sql语句_SQL 语句判断已知表是否存在_MySQL
- and or not 优先级_快速划分测试用例优先级
- python实现视频关键帧提取(基于帧间差分)
- nutch,hbase,zookeeper兼容性问题
- RHEL5 怎么装vim
- 吴恩达机器学习系列23:基于内容的推荐算法
- AI需要你帮忙 | 把两栖爬行动物框出来,提高AI识别准确率
- 微软警告:警惕新型勒索软件 PonyFinal,已现身印度、伊朗和美国
- python 基础学习1
- 手机app测试用例考虑测试点
- 系统稳定性建设实践总结
- What Could Kill Testing?(什么可以终结测试)
- matlab:matlab神经网络工具的使用
- Mysql Spatial 索引
热门文章
- 【渝粤题库】国家开放大学2021春2238个案工作题目
- php soap debug,php soap客户端调试实例
- C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针
- 戏说 .NET GDI+系列学习教程(三、Graphics类的方法的总结)
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
- SPOJ QTREE5 lct
- 《Effective Java》读书笔记 - 5.泛型
- [SoapUI] How to create a random UUID in each Request's Headers
- ARM的编程模式和7种模式
- 转:巧用搜狗输入法输入英文单词