quarta-feira, 6 de abril de 2011

Gerando matrizes com Table

O comando para gerar uma matriz NxN de elementos ai,j é:


Table[Table[ai, j, {j, N}], {i,N}]

Matriz de Permutação Cíclica

A testemunha de discórdia que estou estudando vai precisar de uma dessas:

qiPermutation[dimension_] :=
Module[{retorno = IdentityMatrix[dimension]},
For[
i = 1, i < dimension, i++,
retorno = retorno.qiRowSwap[dimension, i, i + 1]
];
retorno]

terça-feira, 5 de abril de 2011

Module

O mathematica define um operador apenas para criar variáveis locais:

Module[{x=x0,y,...},expr1;expr2;...;exprRetorno]

Aonde x e y são variáveis locais, x0 é um valor com o qual x será inicializado, expr# são as linhas de código para as quais as variáveis locais são visíveis e exprRetorno é a linha de código cujo valor é retornado por Module.

Bras e Kets

O Mathematica oferece um suporte mínimo à notação de dirac:

ESC+bra+ESC, ESC+ket+ESC e ESC+braket+ESC

Foi tudo que encontrei a respeito.

quarta-feira, 30 de março de 2011

For e IF

O for no Mathematica tem a cara:

For[i=0,i<n,i++,f[i]]

Sendo que f[i] é o "corpo" do for.

Obviamente, o inicializador, o teste de finalização e o incrementador podem ser personalizados:

For[i=2,g[i]<1,i=2*i+1,f[i]]

O if segue a mesma linha:

If[teste,f[],g[]]

Sendo que teste é uma condição qualquer, f[] é a função executada (e o valor retornado) se a condição for verdadeira, g[] se a condição for falsa.

Matrizes Unitárias

Uma parametrização para matrizes unitárias:


qiUnitary[α_, β_, ω_] :=
{{Exp[i*α], 0}, {0, Exp[-i*α]}} .
{{Cos[ω], Sin[ω]}, {-Sin[ω], Cos[ω]}} .
{{Exp[i*β], 0}, {0, Exp[-i*β]}}

terça-feira, 29 de março de 2011

Site interessante

Achei este PDF, tem explicações sobre criação de funções complexas e sobre como exportá-las/importá-las.

Combinações de Matrizes de Pauli

Preciso também gerar matrizes que são combinações lineares de matrizes de Pauli:


qiPauli[coeficientes_] := coeficientes[[1]]*PauliMatrix[1] + coeficientes[[2]]*PauliMatrix[2] + coeficientes[[3]]*PauliMatrix[3]

Matrizes de Pauli

Essas são mais fáceis: o Mathemática já as inclui.

PauliMatrix[n]

quinta-feira, 24 de março de 2011

Matrizes de SWAP

Bom, estou trabalhando com um zilhão dessas, então preciso de uma função para criá-las.

qiRowSwap[dimension_, i_, j_] :=
IdentityMatrix[dimension] -
qiOrthoMatrix[dimension, i] -
qiOrthoMatrix[dimension, j] +
KroneckerProduct[UnitVector[dimension, i],
UnitVector[dimension, j]] +
KroneckerProduct[UnitVector[dimension, j], UnitVector[dimension, i]]

função para criar matrizes ortogonais

Bom, para começar uma coisa simples: uma função para criar matrizes de densidade dos estados-base:


qiOrthoMatrix[dimension_, i_] := KroneckerProduct[UnitVector[dimension, i], UnitVector[dimension, i]]


Criar funções no Mathematica parece ser bem simples. A _ depois dos argumentos e o := são as únicas coisas "novas" aqui.

Declaração de Intenções

Pretendo publicar aqui informações gerais relacionadas à Informação Quântica.

No momento, estou verificando o uso do Mathematica como ferramenta de auxílio à pesquisa nesta área.