【发布时间】:2011-11-10 00:15:00
【问题描述】:
我有一个非常复杂的数学表达式,我想通过使用一个新的、可能是无量纲的参数来简化它。
我的表达的一个例子是:
K=a*b*t/((t+f)c*d);
(实际表达式非常大,有数千个字符)。我想用 p
替换所有出现的表达式 t/(t+f)p=t/(t+f);
这里的目标是找到一个替换,以便所有的 t 和 f 都被 p 替换。在这种情况下,替换 p 是一个无量纲参数,因此它似乎是一个很好的候选替换。
我无法弄清楚如何在数学中做到这一点(或者如果可能的话)。我试过了:
eq1= K==a*b*t/((t+f)c*d);
eq2= p==t/(t+f);
Solve[{eq1,eq2},K]
毫不奇怪,这不起作用。如果有办法强制它以 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;
然后我替换了 p,并调用了(正常的)FullSimplify,给了我这个表达式。
testEQ2= (ton (B ton^2 + A^2 B ton (toff + ton) +
A (ton^2 + B (toff + ton)^2)))/(toff + ton)^3;
最后,我尝试了以下所有建议,除了最后一个(还不确定它是如何工作的!)
只有消除选项有效。所以我想我会从现在开始尝试这种方法。谢谢。
EQ1 = a1 == (ton (B ton^2 + A^2 B ton (toff + ton) +
A (ton^2 + B (toff + ton)^2)))/(toff + ton)^3;
EQ2 = P1 == ton/(ton + toff);
Eliminate[{EQ1, EQ2}, {ton, toff}]
A B P1 + A^2 B P1^2 + (A + B) P1^3 == a1
我应该补充一点,如果目标是进行所有可能的替换,留下其余部分,我仍然不知道该怎么做。但似乎如果一个替换可以完全消除一些变量,Eliminate[] 效果最好。
【问题讨论】:
-
f 是否也出现在要替换的表达式之外?因为否则只是替换
f->t/p-t应该可以解决问题。 -
celt--替换 f->t/p-t 不会消除 t! f 可能会或可能不会出现在“p”之外的情况中。这是一个 31,000 个字符的表达式,但如果所有的 t、f 都被扩展,它可能只是一个简单的替换。巫师——会看看那些家伙。
-
它应该消除所有
t/(t+f)s(简化后),因为 t/(t+(t/p-t)) = t/(t/p) = p。但无论如何,如果 f 可以出现在该表达式之外,那么这个解决方案当然不适用。 -
好的,这些很有帮助。对 Mathematica 来说还是比较新的,给我一点尝试这些想法。
标签: wolfram-mathematica simplify