Skip to content

Commit 91068f3

Browse files
committed
Concrete operators in normalized spaces
1 parent 5edd3e2 commit 91068f3

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/Spaces/Chebyshev/ChebyshevOperators.jl

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,23 +212,24 @@ end
212212

213213
## Derivative
214214

215-
function Derivative(sp::Chebyshev{<:IntervalOrSegment}, order::Number)
215+
function Derivative(sp::MaybeNormalized{<:Chebyshev{<:IntervalOrSegment}}, order::Number)
216216
assert_integer(order)
217217
ConcreteDerivative(sp,order)
218218
end
219219

220220

221-
rangespace(D::ConcreteDerivative{<:Chebyshev{<:IntervalOrSegment}}) =
221+
rangespace(D::ConcreteDerivative{<:MaybeNormalized{<:Chebyshev{<:IntervalOrSegment}}}) =
222222
Ultraspherical(D.order,domain(D))
223223

224-
bandwidths(D::ConcreteDerivative{<:Chebyshev{<:IntervalOrSegment}}) = -D.order,D.order
225-
Base.stride(D::ConcreteDerivative{<:Chebyshev{<:IntervalOrSegment}}) = D.order
224+
bandwidths(D::ConcreteDerivative{<:MaybeNormalized{<:Chebyshev{<:IntervalOrSegment}}}) = -D.order,D.order
225+
Base.stride(D::ConcreteDerivative{<:MaybeNormalized{<:Chebyshev{<:IntervalOrSegment}}}) = D.order
226226

227-
isdiag(D::ConcreteDerivative{<:Chebyshev{<:IntervalOrSegment}}) = false
227+
isdiag(D::ConcreteDerivative{<:MaybeNormalized{<:Chebyshev{<:IntervalOrSegment}}}) = false
228228

229-
function getindex(D::ConcreteDerivative{<:Chebyshev{<:IntervalOrSegment},<:Any,T},k::Integer,j::Integer) where {T}
229+
function getindex(D::ConcreteDerivative{<:Chebyshev{<:IntervalOrSegment}}, k::Integer, j::Integer)
230230
m=D.order
231231
d=domain(D)
232+
T = eltype(D)
232233

233234
if j==k+m
234235
C=strictconvert(T,pochhammer(one(T),m-1)/2*(4/complexlength(d))^m)

src/Spaces/PolynomialSpace.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,3 +641,12 @@ function evaluate(f::AbstractVector, S::NormalizedPolynomialSpace, x...)
641641
f_csp = mul_coefficients(C, f)
642642
evaluate(f_csp, csp, x...)
643643
end
644+
645+
# Methods for concrete operators in normalized spaces
646+
function getindex(D::ConcreteDerivative{<:NormalizedPolynomialSpace}, k::Integer, j::Integer)
647+
sp = domainspace(D)
648+
csp = canonicalspace(sp)
649+
Dcsp = ConcreteDerivative(csp, D.order)
650+
C = Conversion_normalizedspace(csp, Val(:backward))
651+
Dcsp[k, j] * C[j, j]
652+
end

0 commit comments

Comments
 (0)