2010-05-27 36 views
6

我目前在做線沿線的一些規範化:採取積極平方根數學

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。

回答

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}} 
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}} 

對於更復雜的情況下,我常常發現它有用的典型參數值pluging後,只是檢查象徵性解決方案的價值。這當然不是萬無一失的,但是如果你知道只有一個解決方案,那麼它是一個簡單而有效的方法:

Solve[x^2==someparameter,x] 
Select[%,((x/.#)/.{someparameter-> 0.1})>0&] 

Out[3]= {{x->-Sqrt[someparameter]},{x->Sqrt[someparameter]}} 
Out[4]= {{x->Sqrt[someparameter]}} 
+0

太好了,謝謝!我忘記了ToRules。 – 2010-07-05 12:52:36