我有一个非常复杂的mathematica表达式,我想通过使用一个新的,可能无量纲的参数来简化.
我的表达的一个例子是:
K=a*b*t/((t+f)c*d);
Run Code Online (Sandbox Code Playgroud)
(实际表达式是巨大的,数千个字符).我想用p替换所有出现的表达式t /(t + f)
p=t/(t+f);
Run Code Online (Sandbox Code Playgroud)
这里的目标是找到一个替代品,以便所有的t和f都被p代替.在这种情况下,替换p是一个无量纲化的参数,因此它似乎是一个很好的候选替代品.
我无法弄清楚如何在mathematica中做到这一点(或者如果可能的话).我试过了:
eq1= K==a*b*t/((t+f)c*d);
eq2= p==t/(t+f);
Solve[{eq1,eq2},K]
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,这不起作用.如果有一种方法可以强制它用p,a,b,c,d来解决K ,这可能会起作用,但我也无法弄清楚如何做到这一点.思考?
编辑#1(11/10/11 - 1:30)[删除以简化]
好的,新机智.我采用了p = ton /(ton + toff)并将p乘以几个表达式.我知道p可以完全消除.新表达式(以p表示)是
testEQ = A B p + A^2 B p^2 + (A+B)p^3;
Run Code Online (Sandbox Code Playgroud)
然后我替换p,并调用(正常)FullSimplify,给我这个表达式.
testEQ2= (ton (B ton^2 + A^2 B ton (toff + ton) +
A (ton^2 + B (toff + ton)^2)))/(toff + ton)^3;
Run Code Online (Sandbox Code Playgroud)
最后,我尝试了下面的所有建议,除了最后一个(不知道它是如何工作的!)
只有消除选项有效.所以我想我会从现在开始尝试这种方法.谢谢.
EQ1 = a1 == (ton (B ton^2 + A^2 B ton (toff + ton) +
A (ton^2 …Run Code Online (Sandbox Code Playgroud) 我有四个变量(w,x,y和z)中的整数多项式,我知道这些变量可以写成这六个变量中的整数多项式:
如何使用Mathematica(或者Java)轻松地对变量进行这种更改?
我如何告诉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 7.0似乎不喜欢在分母中有空白.谁能解释为什么会这样?
输入:
ClearAll["Global`*"];
(*Without blanks:*)
a^2 / b^2 /. a^2 / b^2 -> d
(*with:*)
a^2 / b^2 /. a^c_ / b^c_ -> d
(*Without blanks:*)
a^2 / b^2 /. (a / b)^2 -> d
(*With:*)
a^2 / b^2 /. (a / b)^c_ -> d
(*Without blanks:*)
a^2 / b^2 /. a^2 * b^(-2) -> d
(*With:*)
a^2 / b^2 /. a^c_ * b^(-c_) -> d
Run Code Online (Sandbox Code Playgroud)
输出:
d
a^2/b^2
d
a^2/b^2
d
a^2/b^2
Run Code Online (Sandbox Code Playgroud)
我正在努力解决一个更复杂的问题.我要做的替换是在表单中:
(a ^ c_. * Coefficient1_. …Run Code Online (Sandbox Code Playgroud)