相关疑难解决方法(0)

获取mathematica以使用另一个等式简化表达式

我有一个非常复杂的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)

wolfram-mathematica simplify

16
推荐指数
3
解决办法
2万
查看次数

在v7中使用GroebnerBasis的奇怪行为

我在使用时遇到了一些奇怪的行为GroebnerBasis.在m1下面,我使用希腊字母作为我的变量,在里面m2,我使用了拉丁字母.它们都没有与之相关的规则.为什么根据我选择的变量得到截然不同的答案?

图片:

在此输入图像描述

可复制代码:

Clear["Global`*"]
g = Module[{x}, 
    x /. Solve[
      z - x (1 - b - 
           b x ( (a (3 - 2 a (1 + x)))/(1 - 3 a x + 2 a^2 x^2))) == 0,
       x]][[3]];
m1 = First@GroebnerBasis[\[Kappa] - g, z]
m2 = First@GroebnerBasis[k - g, z]
Run Code Online (Sandbox Code Playgroud)

编辑:

正如belisarius所指出的,我的使用GroebnerBasis并不完全正确,因为它需要多项式输入,而我的不是.这个由复制意大利面引入的错误直到现在都没有引起注意,因为当我m1从上面使用其余的代码时,我得到了我所期望的答案.但是,我并不完全相信这是一种不合理的用法.考虑以下示例:

x = (-b+Sqrt[b^2-4 a c])/2a;
p = First@GroebnerBasis[k - x,{a,b,c}]; (*get relation or cover for …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mathematica-7

5
推荐指数
1
解决办法
202
查看次数

如何在Mathematica中替换隐式子表达式?

我在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)使用dalpha+betagamma.

最后的表达应该是:

1+d*gamma+a*d*gamma^2
Run Code Online (Sandbox Code Playgroud)

我有更复杂的表达方式,能够做到这一点将大大简化我的工作.

我试过谷歌搜索这个问题,我只找到使用FactorTerms和ReplaceRepeated的答案,但不能一致地工作,并且对于像这样的更复杂的表达.我希望有人在这里有答案.

wolfram-mathematica

5
推荐指数
1
解决办法
4059
查看次数