第7章 符号计算——7.3 符号表达式操作

简介: 第7章 符号计算——7.3 符号表达式操作

7.3  符号表达式操作


符号表达式的基本操作包括显示、展开、分解、化简等。这些操作是对数学、物理及各种工程问题进行理论分析时不可缺少的环节。

本节将介绍符号数学工具箱中符号表达式的显示、合并、展开、嵌套、分解和化简操作。


7.3.1  符号表达式显示


在符号表达式的显示过程中,默认采用MATLAB式的显示。除了默认的显示方式,MATLAB符号工具箱中提供了显示函数pretty,允许用户将符号表达式显示为符合一般数学表达习惯的数学表达式。


7-15:符号表达式显示示例。

在命令行窗口中输入:

syms a b c d e f g h x;
f = sym(a * x^3 + b * x^2 + c * x + d + e * x^-1 + f * x^-2 + g * x^-3)
pretty(f)

输出结果:

f =
d + c*x + a*x^3 + b*x^2 + e/x + f/x^2 + g/x^3


6319072522a0ea04267f114ebba0786e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png



7.3.2  符号表达式合并


MATLAB提供函数实现将符号表达式中的同类项合并的功能,具体调用格式有如下两种。

● R=collect(S):将表达式S中的相同次幂的项合并。其中S可以是一个表达式,也可以是一个符号矩阵。

● R=collect(S,v):将表达式Sv的相同次幂的项进行合并。如果v没有指定,则默认将含有x的相同次幂的项进行合并。


7-16:符号表达式合并示例。

在命令行窗口中输入:

sym x;
f1 = sym((x - 1)^3)
collect(f1)

输出结果:

f1 =
(x - 1)^3
ans =
x^3 - 3*x^2 + 3*x - 1


在命令行窗口中输入:

syms x y t;
f2 = sym(x * cos(t) + y * sin(t) + (x^2 + 2 * x * y + 3 * y^2) * t)
collect(f2, x)

输出结果:

f2 =
t*(x^2 + 2*x*y + 3*y^2) + x*cos(t) + y*sin(t)
ans =
t*x^2 + (cos(t) + 2*t*y)*x + 3*t*y^2 + sin(t)*y


在命令行窗口中输入:

collect(f2, y)

输出结果:

ans =
3*t*y^2 + (sin(t) + 2*t*x)*y + t*x^2 + cos(t)*x


7.3.3  符号表达式展开


MATLAB提供函数实现将表达式展开的功能,其调用格式如下。

● R=expand(S):将表达式S中的各项进行展开。如果S包含函数,则利用恒等变形将它写成相应的和的形式。该函数多用于多项式,有时也用于三角函数、指数函数和对数函数。


7-17:符号表达式展开示例。

在命令行窗口中输入:

syms x y;
f1 = sym((x - 1)^2 * (y - 1))
expand(f1)

输出结果:

f1 =
(x - 1)^2*(y - 1)
ans =
2*x + y - 2*x*y + x^2*y - x^2 - 1


在命令行窗口中输入:

f2 = sym(tan(2 * x^2 + y))
expand(f2)

输出结果:

f2 =
tan(2*x^2 + y)
ans =
(tan(y) - (2*tan(x^2))/(tan(x^2)^2 - 1))/((2*tan(x^2)*tan(y))/(tan(x^2)^2 - 1) + 1)

在命令行窗口中输入:

f3 = sym(exp((x + y)^2))
expand(f3)

输出结果:

f3 =
exp((x + y)^2)
ans =
exp(x^2)*exp(y^2)*exp(2*x*y)


在命令行窗口中输入:

f4 = sym(log((x / y)^2))
expand(f4)
expand(f4, 'IgnoreAnalyticConstraints', true)

输出结果:

f4 =
log(x^2/y^2)
ans =
log(x^2/y^2)
ans =
2*log(x) - 2*log(y)



7.3.4  符号表达式嵌套


MATLAB提供函数实现将符号表达式转换成嵌套形式的功能,其调用格式如下。

● R=horner(S):其中S是符号多项式矩阵,函数horner将其中的每个多项式转换成它们的嵌套形式。


7-18:符号表达式嵌套示例。

在命令行窗口中输入:

syms x y;
f1 = sym(x^3 - 6 * x^2 + 11 * x - 6)
horner(f1)

输出结果:

f1 =
x^3 - 6*x^2 + 11*x - 6
ans =
x*(x*(x - 6) + 11) - 6


在命令行窗口中输入:

f2 = sym([x^2 + x; y^3 - 2 * y])
horner(f2)

输出结果:

f2 =
   x^2 + x
 y^3 - 2*y
ans =
   x*(x + 1)
 y*(y^2 - 2)



7.3.5  符号表达式分解


MATLAB提供函数实现将符号多项式进行因式分解的功能,其调用格式如下。

● factor(X):如果X是一个多项式,系数是有理数,那么该函数将把X表示成系数为有理数的低阶多项式相乘的形式;如果X不能分解成有理多项式乘积的形式,则返回X本身。


7-19:符号表达式分解示例。

在命令行窗口中输入:

clear
syms x y;
f1 = sym(2 * x^2 - 7 * x * y - 22 * y^2 - 5 * x + 35 * y - 3)
factor(f1)

输出结果:

f1 =
2*x^2 - 7*x*y - 5*x - 22*y^2 + 35*y - 3
ans =
[ 2*x - 11*y + 1, x + 2*y - 3]

在命令行窗口中输入:

f2 = sym('1234567890')
factor(f2)

输出结果:

f2 =
1234567890
ans =
[ 2, 3, 3, 5, 3607, 3803]



7.3.6  符号表达式化简


MATLAB根据一定的规则对符号表达式进行化简,化简的函数为simplifysimplify函数的调用格式如下。

● R=simplify(S):该函数是一个强有力的具有普遍意义的工具。它应用于包含和式、方根、分数的乘方、指数函数、对数函数、三角函数、Bessel函数及超越函数等的表达式,并利用Maple化简规则对表达式进行化简。其中S可以是符号表达式矩阵。


7-20:符号表达式化简示例。

在命令行窗口中输入:

syms x;
f1 = sym((x^3 - 1) / (x - 1))
simplify(f1)

输出结果:

f1 =
(x^3 - 1)/(x - 1)
ans =
x^2 + x + 1


在命令行窗口中输入:

f2 = sym(sin(x)^2 + cos(x)^2)
simplify(f2)

输出结果:

f2 =
cos(x)^2 + sin(x)^2
ans =
1

相关文章
03 通过集线器组网
03 通过集线器组网
115 0
03 通过集线器组网
|
存储 安全 Java
美团面试:String 为什么 不可变 ?(90%答错了,尼恩来一个绝世答案)
45岁老架构师尼恩分享Java面试心得,涵盖String不可变性、字符串常量池、面试技巧等内容。尼恩强调,掌握深层技术原理,如String不可变性的真正原因,可在面试中脱颖而出,赢得高薪Offer。此外,尼恩还提供了大量技术资源和面试指导,帮助求职者提升技术水平,顺利通过大厂面试。
|
网络协议 中间件 Python
使用代理IP的几种方案
使用代理IP的几种方案
497 2
|
XML 前端开发 JavaScript
React 中render()的用途是什么?
【8月更文挑战第30天】
486 1
|
存储 Linux 数据安全/隐私保护
|
存储 传感器 编解码
图像格式:常见图像格式RAW, RGB, YUV&&图像格式的解析、格式转换和看图软件
图像格式:常见图像格式RAW, RGB, YUV&&图像格式的解析、格式转换和看图软件
3924 1
|
存储 程序员 Python
python的文件操作方法
python的文件操作方法
|
存储 缓存 前端开发
开发播放器框架之边下边播边存方案分享
开发播放器框架之边下边播边存方案分享
开发播放器框架之边下边播边存方案分享
|
JavaScript
VUE3(二十二)vue-router 开启路由懒加载
懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载。 常用的懒加载方式有两种:即使用vue异步组件 和 ES中的import
625 0
VUE3(二十二)vue-router 开启路由懒加载
|
机器学习/深度学习 人工智能 计算机视觉
Inception-v2/v3模型
Inception-v2和Inception-v3都是出自同一篇论文《Rethinking the inception architecture for computer vision》,该论文提出了多种基于 Inception-v1 的模型优化 方法,Inception-v2 用了其中的一部分模型优化方法,Inception-v3 用了论文中提到的所有 优化方法。相当于 Inception-v2 只是一个过渡版本,Inception-v3 一般用得更多。
466 0
Inception-v2/v3模型