Возьмите положительный квадратный корень в Mathematica - PullRequest
6 голосов
/ 28 мая 2010

В настоящее время я делаю некоторую нормализацию в соответствии с:

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

Может кто-нибудь сказать мне, что я здесь не так делаю?

Я использую Mathematica 7 в 64-разрядной версии Windows 7.

Ответы [ 2 ]

5 голосов
/ 28 мая 2010

ToRules делает то, что говорит окно: преобразует уравнения (как в Reduce output) в правила. В вашем случае:

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]}}
4 голосов
/ 28 мая 2010

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}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...