среда, 10 апреля 2013 г.

Булевы алгебры, проекторы и квантовые игры

Размышляя о проекторах, вот, что я придумал! Рассмотрим следующие функции\[n(x)=1-x,\]\[a(x,y)=xy,\]\[o(x,y)=x+y-xy\]На множестве {0,1} эти функции дают обычные логические not,and и or, то есть задают простейшую булеву алгебру.
То же самое можно сказать более вычурно: Функции $n,a,o$ задают булеву алгебру  на множестве корней уравнения $x^2-x=0$.
Кажется, что это утверждение не несет ничего нового, ведь уравнение как раз и имеет два корня --- $0$ и $1$. Однако тут мы вспоминаем, что это уравнение является также определяющим уравнением для проекторов. Легко проверить, что если мы возьмем множество коммутирующих проекторов, замкнутое относительно операций $n$ и $a$, то приведенные выше функции определяют булеву алгебру. Далее операции $n,a,o$ будем обозначать как в логике:$\lnot,\land,\lor$.
Кто-то скажет "что толку в такой булевой алгебре". Попробую объяснить. Вспомним, что в квантовой механике коммутирующие эрмитовы операторы соответствуют одновременно измеримым величинам. Более того, если, скажем, есть у нас проектор $P_0=|\psi_0\rangle\langle\psi_0|$ на какое-нибудь состояние, то вероятность обнаружения этого состояния в состоянии $\psi$ равна среднему от проектора \[\langle\psi|P_0|\psi\rangle\] Ага, теперь все становится понятно. Пусть у нас есть запутанное состояние двух спинов. Например, такое\[|\psi\rangle=\frac1{\sqrt{2}}(|\uparrow\rangle|\downarrow\rangle-|\downarrow\rangle|\uparrow\rangle).\]  И мы, скажем, хотим определить вероятность измерения, которое покажет, что первый спин торчит вдоль оси $z$ или второй спин торчит вдоль оси $x$ (или то и другое). Очень просто,эта вероятность равна:\[\langle\psi|P_1^z\lor P_2^x|\psi\rangle=\frac34,\] где $P_1^z=\frac12(1+\sigma_1^z)$, $P_2^x=\frac12(1+\sigma_2^x)$. То есть наше определение измерения напрямую транслировалось в ответ, даже задумываться не пришлось. Это, конечно, простейший пример, но идея понятна. Например, операторы, соответствующие особо запутанным измерениям можно, перед тем как усреднять, упрощать по правилам логики.

Заметим, между прочим, что определенные функции $n,a,o$ имеют простую классическую вероятностную интерпретацию: если $x$ и $y$ --- вероятности независимых событий, то $n,a,o$, соответственно, вероятности того, что первое не произойдет, что произойдут оба и что произойдет хотя бы одно. Результаты измерения спинов в запутанном состоянии, вообще говоря, не являются независимыми, но для проекторов действуют все те же простые правила.

Дальше воображение рисует кучу приложений, например, в теории квантовых игр или в квантовых компьютерах.

Может кто это уже придумал все, а? Уж больно красиво.

понедельник, 8 апреля 2013 г.

Клин

На прошлой неделе один обед протупил над следующим "парадоксом".

Рассмотрим матрицу \[
\Lambda_{\mathbf{p}}=\frac12\left(1+\frac{\varepsilon+\beta m}{p^2}\boldsymbol{\alpha}\mathbf{p}\right).
\] В голове не укладывались 4 утверждения, касающиеся этой матрицы:
  1. $\Lambda_{\mathbf{p}}$ --- проектор, т.е. $\Lambda_{\mathbf{p}}^2=\Lambda_{\mathbf{p}}$. 
  2.  $\Lambda_{\mathbf{p}}u_{\mathbf{p}}=u_{\mathbf{p}}$,  т.е., это проектор на пространство решений уравнения $[\varepsilon-\boldsymbol{\alpha}\mathbf{p}-\beta m]u_{\mathbf{p}}=0$.
  3. $\Lambda_{\mathbf{p}}+\Lambda_{-\mathbf{p}}=1$, откуда следует, что $\Lambda_{\mathbf{p}}\Lambda_{-\mathbf{p}}=0$.
  4. $u^{\dagger}_{\mathbf{p}}u_{\mathbf{-p}}\neq0$.
Только написав на доске понял в чем дело.

вторник, 2 апреля 2013 г.

Docked Cells в Mathematica

Все, кто программировал в Математике, знают, что одна из самых полезных операций называется Quit Kernel. Удивительно, что для нее нет ни клавиатурного сокращения, ни кнопки. Нужно лезть в меню Evaluation>Quit Kernel>Local, а затем еще жать Ok в появившемся окошке с предупреждением. Есть немного более простой способ, конечно --- ввести Quit и нажать Shift-Enter. Но если ядро занято другими вычислениями, этот способ не работает. Есть и третий способ: создать кнопку командой  Button["Quit", Quit[]] и жать на нее в свое удовольствие. Проблема в том, что кнопочка эта постепенно уплывает из зоны видимости. Можно, конечно, сгенерировать палитру (palette) и для кого-то это будет самый удобный вариант. Понятно, что для настоящего художника в палитре должна быть не только черная краска, так что в палитру можно оформить несколько ваших любимых кнопок.
Однако, в том, что палитра хранится отдельно от файла есть как достоинства, так и недостатки. Достоинства, понятно, в том, что одну палитру можно использовать при работе в любом файле. Недостаток --- в том, что взяв с собой файл на другой компьютер, нужно не забыть взять и установить туда и палитру. Выходом из этого концептуального тупика может стать Docked Cell. По сути, это та же палитра, только определенного вида. Важно, что хранится она  прямо в файле. Вот пример создания Docked Cell-а с тремя кнопками:
SetOptions[InputNotebook[], DockedCells -> {Cell[BoxData[ToBoxes[
      Row[{Button["Quit", Quit[]],
        Button["Abort", FrontEndTokenExecute["FindEvaluatingCell"];
         FrontEndTokenExecute["EvaluatorAbort"]],
        Button["Evaluate", FrontEndTokenExecute["EvaluateCells"];
         SelectionMove[InputNotebook[], Next, Cell]]}]
      ]],
    Background -> RGBColor[0.9, 0.9, 0.9],
    CellMargins -> 0,
    CellFrame -> {{0, 0}, {1, 0}}]}]

Жмем Shift-Enter и вуаля. Кому-то может показаться, что вбивать такую команду в каждом новом файле утомительно. Согласен, но тут можно и палитру сделать:
CreatePalette[Button["Install tools",SetOptions[InputNotebook[], DockedCells -> {Cell[BoxData[ToBoxes[
      Row[{Button["Quit", Quit[]],
        Button["Abort", FrontEndTokenExecute["FindEvaluatingCell"];
         FrontEndTokenExecute["EvaluatorAbort"]],
        Button["Evaluate", FrontEndTokenExecute["EvaluateCells"];
         SelectionMove[InputNotebook[], Next, Cell]]}]
      ]],
    Background -> RGBColor[0.9, 0.9, 0.9],
    CellMargins -> 0,
    CellFrame -> {{0, 0}, {1, 0}}]}]]]

А еще лучше --- сделать такую палитру
CreatePalette[{Row[{Button["Quit", Quit[]],
    Button["Abort", FrontEndTokenExecute["FindEvaluatingCell"];
     FrontEndTokenExecute["EvaluatorAbort"]],
    Button["Evaluate", FrontEndTokenExecute["EvaluateCells"];
     SelectionMove[InputNotebook[], Next, Cell]]}],
  Button["embed tools",
   SetOptions[InputNotebook[],
    DockedCells -> Most@First@NotebookGet[ButtonNotebook[]]],
   ContentPadding -> False, FrameMargins -> 0]}]