Matlab 通过自动引入时态变量或以任何其他方式简化非常长的符号表达式

Matlab 通过自动引入时态变量或以任何其他方式简化非常长的符号表达式,matlab,wolfram-mathematica,maple,symbolic-math,Matlab,Wolfram Mathematica,Maple,Symbolic Math,在尝试解决一个符号数学问题后,我得到了一个大约17000个字符的表达式。我正在使用Matlab的符号工具箱,但我愿意接受任何建议(Mathematica,随便什么) 出于显而易见的原因,我不会直接将表达式复制粘贴到问题中 运行Matlab命令simplify和simple,甚至尝试collection也没有改善情况(有些情况更糟) 但是我想知道,我不在乎表达式是否是用时间参数逐步计算的。比如: z1 = a^2*y1; %Now the expression can be simplifie

在尝试解决一个符号数学问题后,我得到了一个大约17000个字符的表达式。我正在使用Matlab的符号工具箱,但我愿意接受任何建议(Mathematica,随便什么)

出于显而易见的原因,我不会直接将表达式复制粘贴到问题中

运行
Matlab
命令
simplify
simple
,甚至尝试
collection
也没有改善情况(有些情况更糟)

但是我想知道,我不在乎表达式是否是用时间参数逐步计算的。比如:

 z1 = a^2*y1;
 %Now the expression can be simplified by using z1 as alias!
 z1+z1^2 ....

有没有一种自动的方法可以用时间变量一步一步地简化?此外,您可以想到的任何其他方法都是合理的。

可以尝试公共子表达式消除(CSE)。下面是一个从

==>


正如我在评论中所写,Mathematica的简化工具似乎比Matlab中的类似命令更有效。 由于您似乎是Matlab用户,我在这里向您详细说明如何使用Mathematica的两个简化命令。 如果将长表达式定义为

longExpression = (x3^2*(y2+y3-a*y1-a*y2-2*a*y3-...
然后你可以用

Simplify[longExpression]  
and 
FullSimplify[longExpression]
最后一个生成了一个漂亮而清晰的表达式,它只有1535个字符(听起来很多,但是没有那么多变量)。
也许这对于你的问题来说已经足够简单了。如果没有,请告诉我们。

@巫师先生同意。我差点给你买了一个,直到我看了看价格标签(他们把一切都夸大了…)@Daniel我还没决定是感谢你还是收费。O_oI无法直接将其与Matlab进行比较(我没有这个程序),但Mathematica的Simplify和FullSimplify似乎比Matlab中的类似命令更有效。Simplify之后,表达式有2192个字符,FullSimplify之后只有1535个字符。也许这对你来说已经足够简化了,或者这将是进一步简化尝试的一个很好的新起点。谢谢你的反馈!你问题的一个要点是关于时间变量的简化。我在回答时完全忽略了这一点。所以,在我看来,我的评论只是一个评论,而不是一个答案。但也许你可以用一些论据来说服我;-)也许你的表达式经过Mathematica的简化后足够简单,那么我的评论将是一个(随机)答案。你能建议我Maple中是否有任何等效函数。有没有办法将这些变量
Compile**
设置为简单变量,如c1、c3、c4、c5等?
longExpression = (x3^2*(y2+y3-a*y1-a*y2-2*a*y3-...
Simplify[longExpression]  
and 
FullSimplify[longExpression]