MATLAB08:符号运算
pdf版本笔记的下载地址: MATLAB08_符号运算(访问密码:3834)
MATLAB08:符号运算
- 创建符号变量
- 创建符号数字
- 创建符号变量
- 符号运算
- 符号表达式的化简与代入
- 符号表达式的化简
- 符号表达式的代入
- 求方程的解析解
- 解单变量方程
- 解多变量方程
- 解方程组
- 符号微积分运算
- 求极限
- 微分
- 积分
- 级数求和
- 泰勒展开
- 绘制图像
MATLAB强大的符号运算基于符号运算工具箱,具体请见其 官方文档.
创建符号变量
创建符号数字
使用sym
函数可以创建符号数字.使用符号数字可以精确地保存无理数,不会产生误差.
sym(1/3) % 得到 1/3
1/3 % 得到 0.3333
将无理数保存为符号数字可以避免将其转换为浮点数的误差:
使用符号数字计算 sin ( π ) \sin(\pi) sin(π)
sin(sym(pi)) % 得到 0 sin(pi) % 得到 1.2246e-16
使用符号数字计算 ϕ = 1 + 5 2 \phi = \frac{1+\sqrt{5}}{2} ϕ=21+5
symphi = (1 + sqrt(sym(5)))/2; % 得到 5^(1/2)/2 + 1/2 symf = symphi^2 - symphi - 1; % 得到 (5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2numphi = (1 + sqrt(5))/2; % 得到 1.6180 numf = numphi^2 - numphi - 1; % 得到 0
创建符号变量
使用sym
和syms
可以创建符号变量,区别在于:
sym
每次只能创建一个符号变量,而syms
一次可以创建多个符号变量.syms a % sym命令只能创建一个符号变量 syms b c d % syms命令可以创建多个符号变量
若所指定的符号变量已存在,
sym
不会保留其原有的值,而syms
会清空其值.syms x y f = x+y; % 隐式创建符号变量f sym f % 不清空变量f原有的值,即f = x + y
syms x y f = x+y; % 隐式创建符号变量f syms f % 清空变量f原有的值,即f = f
使用
sym
可以创建符号变量矩阵.A = sym('a', [2 5]) % 创建一个2*5的符号变量矩阵 whos
得到的输出如下:
A = [ a1_1, a1_2, a1_3, a1_4, a1_5] [ a2_1, a2_2, a2_3, a2_4, a2_5]Name Size Bytes Class AttributesA 2x5 112 sym
联合使用
sym
和syms
可以快速创建一系列带下标的变量clear all syms(sym('a', [1 5])) whos
得到输出如下:
Name Size Bytes Class Attributesa1 1x1 8 sym a2 1x1 8 sym a3 1x1 8 sym a4 1x1 8 sym a5 1x1 8 sym
符号运算
符号表达式的化简与代入
符号表达式的化简
使用simplify()
函数可以化简符号表达式.
syms x a b csimplify(sin(x)^2 + cos(x)^2); % 得到 1
simplify(exp(c*log(sqrt(a+b)))); % 得到 (a + b)^(c/2)
表达式化简的标准是不确定的,下面三个函数分别按照不同标准化简表达式:
expand()
函数可以展开表达式syms xf = (x ^2- 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2 - x + 1); expand(f); % 得到 x^10 - 1
factor()
函数可以分解因式syms xg = x^3 + 6*x^2 + 11*x + 6; factor(g); % 得到 (x + 3)*(x + 2)*(x + 1)
horner()
函数可以将多项式变为嵌套形式syms xh = x^5 + x^4 + x^3 + x^2 + x; horner(h); % 得到 x*(x*(x*(x*(x + 1) + 1) + 1) + 1)
符号表达式的代入
使用sub(expr, old, new)
函数可以将符号表达式expr
中的old
替换为new
.
syms xf = 2*x^2 - 3*x + 1;
subs(f, 1/3) % 得到 2/9
syms x yf = x^2*y + 5*x*sqrt(y);
subs(f, x, 3); % 得到 9*y + 15*y^(1/2)
求方程的解析解
使用solve(eqn,var)
和solve(eqns,vars)
可以求取方程式的解析解.
解单变量方程
使用==
定义一个方程,并对其调用solve
函数求解.
syms xeqn = x^3 - 6*x^2 == 6 - 11*x;
solve(eqn); % 得到 [1 2 3]
若不指定==
符号右边的值,则默认等式右边为0.
syms xeqn = x^3 - 6*x^2 + 11*x - 6;
solve(eqn); % 得到 [1 2 3]
解多变量方程
对于多变量方程,我们需要指定针对哪个变量进行求解.
syms x yeqn = [6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0];
solve(eqn, y); % 得到 [1, 2*x, -3*x]
解方程组
向solve()
函数传入方程组可以解方程.
syms u veqns = [2*u + v == 0, u - v == 1];
S = solve(eqns,[u v]);
可以通过变量名索引方程的解,并可以将该解代入其他表达式中.
S.u; % 得到 1/3
S.v; % 得到 -2/3
subs(3*v + u, S); % 得到 -5/3
符号微积分运算
求极限
使用limit(expr, var, a)
函数可以求取符号表达式expr
在变量var
趋近于a
时的极限,添加参数'left'
或'right'
可以指定左极限或右极限.
syms x;
expr = 1/x;limit(expr,x,0); % 得到NaN
limit(expr,x,0,'left'); % 得到-Inf
limit(expr,x,0,'right'); % 得到Inf
微分
使用diff(expr, var, n)
函数可以求取符号表达式expr
对变量var
的n
阶微分.
syms a b c x;
expr = a*x^2 + b*x + c;diff(expr, a); % 得到 x^2
diff(expr, b); % 得到 x
diff(expr, x); % 得到 b + 2*a*x
diff(expr, x, 2); % 得到 2*a
积分
使用int(expr, var)
函数可以求取符号表达式expr
对变量var
的不定积分.使用int(expr, var, [a, b])
函数可以指定上下限求定积分,a
和b
可以是符号表达式.
syms x a b
expr = -2*x/(1+x^2)^2;int(expr, x); % 得到 1/(x^2 + 1)
int(expr, x, [1, 2]); % 得到 -0.3
int(expr, x, [1, Inf]); % 得到 -0.5
int(expr, x, [a, b]); % 得到 1/(b^2 + 1) - 1/(a^2 + 1)
对于一些函数,MATLAB不能求出其积分,这时MATLAB会返回一个未解析(unsolved)的积分形式.
syms x
int(sin(sinh(x))); % 一个无解的积分,MATLAB返回 int(sin(sinh(x)), x)
级数求和
使用symsum(expr, k, [a b])
计算级数expr
的索引k
从a
到b
的加和.
syms k xsymsum(k^2, k) % 得到 k^3/3 - k^2/2 + k/6
symsum(k^2, k, [0 10]) % 得到 385
symsum(x^k/factorial(k),k,1,Inf) % 得到 exp(x) - 1
泰勒展开
使用taylor(expr,var,a)
计算表达式expr
在var=a
处的泰勒级数.
syms xtaylor(exp(x)) % 得到 x^5/120 + x^4/24 + x^3/6 + x^2/2 + x + 1
taylor(sin(x)) % 得到 x^5/120 - x^3/6 + x
taylor(cos(x)) % 得到 x^4/24 - x^2/2 + 1
绘制图像
可以对符号表达式绘制图像,常用的绘图函数如下:
函数 | 作用 |
---|---|
fplot()
|
绘制符号表达式的二维线图像 |
fplot3()
|
绘制符号表达式的三维线图像 |
ezpolar()
|
绘制符号表达式的极坐标线图像 |
fmesh()
|
绘制网状面图像 |
fsurf()
|
绘制带颜色的面图像 |
fcontour()
|
绘制轮廓图像 |
fimplicit()
|
绘制隐含函数关系的图像 |
下面例子展示二维和三维线图像的绘制
subplot(1, 2, 1) syms x f = x^3 - 6*x^2 + 11*x - 6; fplot(f, x)subplot(1, 2, 2) syms t fplot3(t^2*sin(10*t), t^2*cos(10*t), t)
下面例子演示三维面的绘制
syms x y fsurf(x^2 + y^2)
下面例子演示隐含函数关系图像的绘制
syms x y eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2; fimplicit(eqn, [-1 1])
pdf版本笔记的下载地址: MATLAB08_符号运算(访问密码:3834)
MATLAB08:符号运算相关推荐
- python中符号计算输出数学_Python科学计算与数据处理—符号运算库.doc
Python 科学计算与数据处理 - 符号运算库 符号运算库目录从示例开始欧拉恒等式球体体积数学表达 式符号数值运算符和函数符号运算表达式转换和简化方程目录微分 方程积分其他函数符号运算库. 它的目标 ...
- 【MATLAB】符号数学计算(二):符号运算中的运算符和函数
一般的这里就不再列举 1.算术运算符号 运算符号" ' "." .' "分别实现矩阵的共轭转置和非共轭转置. >> syms a b c d; &g ...
- java8 无符号_Java8包装类 新增 无符号运算方法
Java8为整型包装类,增加类支持无符号运算的方法. Java8为Integer,Long新增如下方法 static String toUnsignedString(int/long i):该方法将指 ...
- matlab求xk符号解,matlab符号运算习题
matlab符号运算习题 第 3 讲 MATLAB 符号计算符号计算则是可以对未赋值的符号对象(可以是常数.变量.表达式)进行运算和处理.MATLAB 具有符号数学工具箱(Symbolic Math ...
- Matlab符号运算总结
matlab符号运算功能强大,在帮一师兄校对矩阵推导的时候使用到.暂时没有仔细研究,做一个标记. http://blog.chinaunix.net/uid-20559667-id-1924747.h ...
- x86架构下 CF与OF标志位 带符号和无符号运算 详解
针对能够影响OF和CF标志位的指令,一般来说是涉及到数据运算的指令,这里使用add举例,即不区分有无符号的加法指令,参与运算的数据,从二进制层级去考虑. CF标志位 对于CF,它是carry flag ...
- latex 符号_sympy: 符号运算-1
本文主要参考资料来自sympy的官网: Introduction - SymPy 1.4 documentationdocs.sympy.org 一般,我们使用计算机软件进行数学计算,主要是数值计算 ...
- java 无符号运算_java位运算和无符号运算
计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进 ...
- MATLAB中符号运算和数值运算的区别
两者的根本区别是 : 数值计算的表达式.矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量.对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符 ...
最新文章
- 【问题收录】[ubuntu]startx doesn't work
- 农牧行业销售经理生存手册(二)
- find 命令_linux中find命令的使用
- python到底怎么学-学 Python 到底能帮你解决什么问题 ?
- Welcome email
- Atitit RSA非对称加密原理与解决方案
- 联想服务器开启虚拟化,联想电脑虚拟化开启方法
- Selenium Web 自动化 - 项目实战(三)
- NLP《词汇表示方法(七)BERT》
- 什么样的两个矩阵相似_Lecture 27 | 相似矩阵
- [Java] 蓝桥杯ALGO-103 算法训练 完数
- 专科python应届生工资多少-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...
- java captcha 验证码_java生成图片验证码的示例代码
- WPE制作游戏外挂 更改封包
- Nmap库ICMP主机探测
- 业务流程图和数据流程图、流程图
- 微信分享返回 错误码 -6 的情况!
- 有时候你只是看起来很努力
- 微软自带远程控制桌面软件
- scala成长之路(1)基本语法和数据类型
热门文章
- java线程状态——java线程状态图
- Hibernate 中 SessionFactory的创建
- Windows资源管理器占用CPU过高
- LCD12864驱动(Proteus中用51单片机驱动AMPIRE128X64)
- python爬虫—Requests
- 手机计算机应用会横屏,北京市大学生计算机应用大赛——3g智能手机创意设计作品提交书模板(游戏类).pdf...
- SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)
- CaptureScreenshot捕捉画面截图截屏
- IIS服务器安全配置[摘]
- 20154312 曾林 EXP9 Web安全基础