2010-05-27 9 views
6

Jestem obecnie jakiejś normalizacji wzdłuż linii:Take dodatni pierwiastek kwadratowy w Mathematica

J = Integrate[Psi[x, 0]^2, {x, 0, a}] 
sol = Solve[J == 1, A] 
A /. sol 

Dla tego typu normalizacji, negatywny pierwiastek kwadratowy jest obcy. Wynik tego obliczenia jest:

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

Nawet jeśli próbuję daje on Zakładając [...] lub uproszczenie [...], to nadal daje mi takie same wyniki:

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

Czy ktoś może mi powiedzieć, co robię źle?

Używam programu Mathematica 7 w systemie Windows 7 w wersji 64-bitowej.

Odpowiedz

4

Solve nie działa w ten sposób. Zamiast tego możesz wypróbować Reduce, np.

In[1]:= Reduce[{x^2 == 1, x > 0}, x] 
Out[1]= x == 1 

To wtedy trochę skomplikowany, aby przekształcić to wyjście z zasadami zamiennych, przynajmniej w ogólnym przypadku, ponieważ Reduce może korzystać dowolna wiele logicznych spójników. W tym przypadku, możemy po prostu włamać:

In[2]:= Solve[Reduce[{x^2 == 1, x > 0}, x], x] 
Out[2]= {{x->1}} 
5

ToRules co robi skrzynka mówi: przekształca równania (jak w Reduce wyjściu) do reguł. W twoim przypadku:

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

przypadku bardziej skomplikowanych przypadkach, mam często, że warto po prostu sprawdzić wartość symbolicznych rozwiązań po pluging w typowych wartości parametrów. Oczywiście nie jest to niezawodne, ale jeśli wiesz, że istnieje jedno i tylko jedno rozwiązanie, to jest to prosta i skuteczna metoda:

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

Świetnie, dziękuję! Zapomniałem o ToRules. –