Advertisements

## Cool results in represent

This post right now is just a quick update with an example python session showing the cool things we can do in represent now, after a very hectic week of code writing. I’m currently in the process of finalizing things in the way that represent works, so I will post a much more detailed post at some point later, but right now I just want to show that we can actually do quantum mechanics in continuous bases! (In this case, with the particle in a box system).

Here is an example python session with notes on the output:

```>>> from sympy.physics.quantum import *
>>> from sympy.physics.quantum.piab import *
>>> wf = represent(PIABKet())
>>> wf
Wavefunction(2**(1/2)*(1/L)**(1/2)*sin(pi*n*x_1/L), (x_1, 0, L))
>>> wf.norm
1```

We get a particle-in-the-box Wavefunction when it is represented and it’s properly normalized.

```>>> represent(XOp()*PIABKet())
Wavefunction(2**(1/2)*x_2*(1/L)**(1/2)*sin(pi*n*x_2/L), x_2)```

We now get a wavefunction with an extra factor of x!

```>>> represent(PxOp()*PIABKet(), basis=XKet)
Wavefunction(-2**(1/2)*hbar*I*pi*n*(1/L)**(1/2)*cos(pi*n*x_2/L)/L, x_2)```

The PxOp actually takes the derivative of the wavefunction correctly! (Momentum operators in the position basis are differential operators).

```>>> represent(PIABBra()*XOp()*PIABKet(), basis=XKet)
0```

Here, we insert two unities. The first one integrated collapses a delta function, but the second one integrated actually computes the expectation value of x for the particle-in-a-box wavefunction (which is what you expect from representing <psi|X|psi>).

EDIT: As you’ll see in the comments, Raoul pointed out that this is actually incorrect, and I will be looking into it!

There are still a few kinks being worked out, but we’re very close to having a nice finished product which is why I am reserving a longer post for tomorrow. I am quite pleased with the results we’re seeing so far though!

Advertisements

### 3 Responses

1. Hi,

Shouldn’t = L/2 at least for a box
ranging form 0 to L? What did I miss here?

— Raoul

• Oh no, it ate the braket 😦

What I want to write was the position expectation value,
which I think is:

PIABBra()*XOp()*PIABKet() = L/2

in the sympy API. Isn’t it?

— Raoul

• Yes, you’re right, I messed that up. I think this is a bug related to the limits of integration in my code, but I will definitely look into it. Thanks for catching that!