我目前正在进行一些规范化:
J = Integrate[Psi[x, 0]^2, {x, 0, a}]
sol = Solve[J == 1, A]
A /. sol
对于这种类型的归一化,负平方根是无关的。计算结果如下:
In[49]:= J = Integrate[Psi[x, 0]^2, {x, 0, a}]
Out[49]= 2 A^2
In[68]:= sol = Solve[J == 1, A]
Out[68]= {{A -> -(1/Sqrt[2])}, {A -> 1/Sqrt[2]}}
即使我尝试给它假设[...]或简化[...],它仍然会给我相同的结果:
In[69]:= sol = Assuming[A > 0, Solve[J == 1, A]]
Out[69]= {{A -> -(1/Sqrt[2])}, {A -> 1/Sqrt[2]}}
In[70]:= sol = FullSimplify[Solve[J == 1, A], A > 0]
Out[70]= {{A -> -(1/Sqrt[2])}, {A -> 1/Sqrt[2]}}
谁能告诉我这里我做错了什么?
我在Windows 7 64位上运行Mathematica 7。
答案 0 :(得分:5)
ToRules
执行框中所说的内容:将等式(如Reduce
输出中)转换为规则。在你的情况下:
In[1]:= ToRules[Reduce[{x^2==1,x>0},x]]
Out[1]= {x->1}
In[2]:= {ToRules[Reduce[{x^2==1},x]]}
Out[2]= {{x->-1},{x->1}}
对于更复杂的情况,我经常发现在插入典型参数值后只检查符号解决方案的值是有用的。当然,这不是万无一失的,但如果您知道只有一个解决方案,那么这是一种简单而有效的方法:
Solve[x^2==someparameter,x]
Select[%,((x/.#)/.{someparameter-> 0.1})>0&]
Out[3]= {{x->-Sqrt[someparameter]},{x->Sqrt[someparameter]}}
Out[4]= {{x->Sqrt[someparameter]}}
答案 1 :(得分:4)
Solve
不能像这样工作。您可以尝试使用Reduce
,例如
In[1]:= Reduce[{x^2 == 1, x > 0}, x]
Out[1]= x == 1
将此输出转换为替换规则是有点棘手的,至少在一般情况下,因为Reduce
可能使用任意多个逻辑连接词。在这种情况下,我们可以破解:
In[2]:= Solve[Reduce[{x^2 == 1, x > 0}, x], x]
Out[2]= {{x->1}}