MATLAB-符号变量函数的化简

本文详细介绍了如何在MATLAB中使用`simplify()`函数对符号变量表达式进行化简,包括基本应用、忽略分析限制、设置化简步骤以及处理分数形式。作者分享了解决复杂表达式化简问题的方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MATLAB学习记录——符号变量函数的化简

对于复杂的符号变量函数,我们大多希望他能有一个清晰简洁的表达式,以下记录我在学习过程中遇到的问题及解决方法。



前言

对于符号变量表达式的化简,大多数情况都可以使用“simplify()”函数进行化简,simplify()函数功能强大,但有时候也会犯抽,需要进行调整。


一、simplify()函数

1、简单应用simplify()

对于简单的表达式,笔者常直接使用simplify(表达式) 进行化简,一般能取得不错的结果。

syms x y f(x,y)
f = x^2 + y^2 + y*sin(x)^2/x + y/x*cos(x)^2 + (6*x + 1*y^3)*x
%直接应用simplify函数化简
simplify(f)

结果如下图,三角函数可做一定化简,进行合并。
代码结果

2、simplify(X,‘IgnoreAnalyticConstraints’, true)

对于部分稍复杂的符号变量表达式,可以使用“忽视分析限制”以达到一个更好的结果。
例子暂且不放了,如果你觉得简单应用 simplify 函数无法达到一个较好的效果时,可以使用这个option。
对于一些人类觉得应该化简,而MATLAB却顽强地不肯化简的式子,可以使用“steps”这个option。

3、simplify(X,‘steps’,values,…)

默认情况下,simplify 仅使用一个step进行化简。通过增加steps的数量,一般可以获得更简洁的结果。
对于标题中省略号的部分,可以自己help搜索查看一下,其中的option其实和小标题2差不多。
以下这个例子说明了提升steps数量的有效性,但是当steps数量过多,且式子十分复杂时,MATLAB可能会跑不动(笔者有个复杂的式子跑了三个小时都没化简出来):

syms x y f(x,y)
A = f*cos(x)^2 - f
B = simplify(f)
C = simplify(A,"IgnoreAnalyticConstraints",true)
D = simplify(A,"Steps",7,"IgnoreAnalyticConstraints",true)
E = simplify(A,"Steps",8,"IgnoreAnalyticConstraints",true)

结果如下,经过对比,可以很明显地发现,对于1-cos(x)^2这种式子,MATLAB也需要一定化简步数来进行简化。
代码结果

4、simplifyFraction(A)

对于MATLAB另外一种倔强的抵抗,比如分子分母有公因式,却始终不肯化简,你可以在使用完上述函数之后,再添加一行这个函数。simplifyFraction作用为简化有理表达式,使分子和分母没有共同的除数。

%......
%省略部分代码,以下代码仅截取我的代码的一部分
N = PC./PC_mag
N1 = simplify(N,"Steps",300,"IgnoreAnalyticConstraints",true)
N2 = simplifyFraction(N1)

N的部分表达式为:可以看出其中有众多替代符号
表达式
化简后,N1的部分表达式:咳,你们可能觉得更复杂了,但N1表达式只有四个替代符号,且经过我的对比,表达式确实化简了。同时,你们可以发现第一项的分子分母均有公因式4,但却没有约掉,所以使用simplifyFraction(N1)。
表达式
N2表达式如下图,可以发现,公因式约掉了。
N2表达式

记录至此,在解决问题的路上真是遇到越来越多的问题,悲伤~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值