我有四个变量(w,x,y和z)中的整数多项式,我知道这些变量可以写成这六个变量中的整数多项式:
如何使用Mathematica(或者Java)轻松地对变量进行这种更改?
在尝试解决符号数学问题后,我得到了一个大约17000个字符的表达式.我正在使用Matlab的符号工具箱,但我对任何建议(Mathematica,无论如何)都持开放态度.
出于显而易见的原因,我不会将表达式直接复制粘贴到问题中.这是一个链接.
运行Matlab命令simplify和simple,甚至企图collect没有改善的情况(有些我们更糟糕).
但我想知道,我不关心是否使用时间参数逐步评估表达式.就像是:
z1 = a^2*y1;
%Now the expression can be simplified by using z1 as alias!
z1+z1^2 ....
Run Code Online (Sandbox Code Playgroud)
是否有一种自动方法可以通过时间变量逐步简化这种方法?此外,您可以想到的任何其他方法都是合理的.
我如何告诉mathematica巧妙地做这个替换?(或者我如何更聪明地告诉mathematica做我想做的事)
expr = b + c d + ec + 2 a;
expr /. a + b :> 1
Out = 2 a + b + c d + ec
Run Code Online (Sandbox Code Playgroud)
我希望答案是a + cd + ec + 1.在有人建议之前,我不想这样做a :> 1 - b,因为出于审美目的,只要无法进行简化,我就想拥有两者a并且b在我的等式中a+b = 1.
此外,我如何得到它取代的所有实例1-b,-b+1或者-1+b,b-1用a或-a分别,反之亦然?
以下是此部分的示例:
expr = b + c (1 - a) + (-1 + b)(a - …Run Code Online (Sandbox Code Playgroud) 我在Mathematica中有这个表达式:
(a^2 (alpha + beta)^2)/(b^2 + c^2) + (a (alpha + beta))/(b^2 + c^2) + 1
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,表达式中有几个子表达式在整个表达式中重复出现.
我希望能够更换a/(b^2+c^2)使用d和alpha+beta用gamma.
最后的表达应该是:
1+d*gamma+a*d*gamma^2
Run Code Online (Sandbox Code Playgroud)
我有更复杂的表达方式,能够做到这一点将大大简化我的工作.
我试过谷歌搜索这个问题,我只找到使用FactorTerms和ReplaceRepeated的答案,但不能一致地工作,并且对于像这样的更复杂的表达.我希望有人在这里有答案.