使用Solve的输出

时间:2011-12-02 10:53:13

标签: wolfram-mathematica

我有一个数学问题,我解决了这个问题:

In[1]:= Solve[2x(a-x)==0, x]
Out[1]= {{x->0}, {x->a}}

In[2]:= Integrate[2x(a-x), {x,0,a}]
Out[2]= (a^3)/3

In[3]:= Solve[(a^3)/3==a, a]
Out[3]= {{a->0}, {a->-Sqrt[3]}, {a->Sqrt[3]}}

我的问题是,如果我可以重写这个来一步计算它,而不是必须手动输入前一行的结果。我可以使用第二步中的Integrate命令轻松替换第三步中使用的积分。但我无法弄清楚我将如何使用步骤1中的结果作为积分中的积分限制。

2 个答案:

答案 0 :(得分:6)

您可以通过执行类似

的操作来合并第1步和第2步
Integrate[2 x (a - x), {x, ##}] & @@ (x /. Solve[2 x (a - x) == 0, x]);

答案 1 :(得分:2)

如果您同意将(正面导向)域名的选择委托给Integrate,请使用ClipBoole

In[77]:= Solve[
 Integrate[
   Clip[2 x (a - x), {0, Infinity}], {x, -Infinity, Infinity}] == a, a]

Out[77]= {{a -> 0}, {a -> Sqrt[3]}}

In[81]:= Solve[
 Integrate[
   2 x (a - x) Boole[2 x (a - x) > 0], {x, -Infinity, Infinity}] == 
  a, a]

Out[81]= {{a -> 0}, {a -> Sqrt[3]}}

仅发现非负根的原因是Integrate将从最小根到最大根集成,即从{x,0,a}积极a和{{1} }对于否定{x,a,0}