我有一个数学问题,我是这样解决的:
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结合起来,如
Integrate[2 x (a - x), {x, ##}] & @@ (x /. Solve[2 x (a - x) == 0, x]);
如果您同意将(正取向)域的选择委托给Integrate
,则通过使用Clip
或Boole
:
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
会从最小根到最大根积分,即对于正的a
从{x,0,a}
积分,对于负的a
从{x,a,0}
积分。