FFTOperators on sparse operators gives wrong answers
While going for a FFT style momentum operation in the position basis i noticed the FFT fails on sparse matrices;
```
x_basis = PositionBasis(-1,1,10);
p_basis = MomentumBasis(x_basis);
# momentum operator in position basis
p_in_x_basis = transform(x_basis, p_basis) * momentum(p_basis) * transform(p_basis, x_basis);
p_in_x_basis ≈ momentum(x_basis) # false
```
The lhs is a diagonal matrix
`Diagonal(p_in_x_basis.data) == (p_in_x_basis).data # true`
The definition in the code is similar, but with a dense operator
`transform(x_basis, p_basis) * dense(momentum(p_basis)) * transform(p_basis, x_basis) == momentum(x_basis) # true`
My motivation was to get `LazyProduct( transform(x_basis, p_basis), momentum(p_basis)^2, transform(p_basis, x_basis) )`
Working with QuantumOpticsBase v0.5.4
4 条评论