Skip to content

FFTOperators on sparse operators gives wrong answers #186

@AmitRotem

Description

@AmitRotem

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions