Skip to content

FFTOperators on sparse operators gives wrong answers #186

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions