PointwiseInner¶
- class odl.operator.tensor_ops.PointwiseInner(*args, **kwargs)[source]¶
Bases:
PointwiseInnerBaseTake the point-wise inner product with a given vector field.
This operator takes the (weighted) inner product
<F(x), G(x)> = sum_j ( w_j * F_j(x) * conj(G_j(x)) )
for a given vector field
G, whereFis the vector field acting as a variable to this operator.This implies that the
Operator.domainis a power space of a discretized function space. For example, ifXis aDiscretizedSpacespace, thenProductSpace(X, d)is a valid domain for any positive integerd.- Attributes:
adjointAdjoint of this operator.
base_spaceBase space
Xof this operator's domain and range.domainSet of objects on which this operator can be evaluated.
inverseReturn the operator inverse.
is_functionalTrueif this operator's range is aField.is_linearTrueif this operator is linear.is_weightedTrueif weighting is not 1 or all ones.rangeSet in which the result of an evaluation of this operator lies.
vecfieldFixed vector field
Gof this inner product.weightsWeighting array of this operator.
Methods
__call__(x[, out])Return
self(x[, out, **kwargs]).derivative(point)Return the operator derivative at
point.norm([estimate])Return the operator norm of this operator.
- __init__(vfspace, vecfield, weighting=None)[source]¶
Initialize a new instance.
- Parameters:
- vfspace
ProductSpace Space of vector fields on which the operator acts. It has to be a product space of identical spaces, i.e. a power space.
- vecfield
vfspaceelement-like Vector field with which to calculate the point-wise inner product of an input vector field
- weighting
array-likeor float, optional Weighting array or constant for the norm. If an array is given, its length must be equal to
len(domain), and all entries must be positive. By default, the weights are is taken fromdomain.weighting. Note that this excludes unusual weightings with custom inner product, norm or dist.
- vfspace
Examples
We make a tiny vector field space in 2D and create the point-wise inner product operator with a fixed vector field. The operator maps a vector field to a scalar function:
>>> spc = odl.uniform_discr([-1, -1], [1, 1], (1, 2)) >>> vfspace = odl.ProductSpace(spc, 2) >>> fixed_vf = np.array([[[0, 1]], ... [[1, -1]]]) >>> pw_inner = PointwiseInner(vfspace, fixed_vf) >>> pw_inner.range == spc True
Now we can calculate the inner product in each point:
>>> x = vfspace.element([[[1, -4]], ... [[0, 3]]]) >>> print(pw_inner(x)) [[ 0., -7.]]