Skip to content

Commit 81824e3

Browse files
committed
adjust tests and remove semiclassical dep
1 parent 7221d48 commit 81824e3

File tree

2 files changed

+26
-120
lines changed

2 files changed

+26
-120
lines changed

Project.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02"
2222
LazyBandedMatrices = "d7e5e226-e90b-4449-9968-0f923699bf6f"
2323
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
2424
QuasiArrays = "c4ea9172-b204-11e9-377d-29865faadc5c"
25-
SemiclassicalOrthogonalPolynomials = "291c01f3-23f6-4eb6-aeb0-063a639b53f2"
2625
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
2726

2827
[compat]

test/test_decompOPs.jl

Lines changed: 26 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -4,120 +4,34 @@ import LazyArrays: AbstractCachedMatrix
44
import LazyBandedMatrices: SymTridiagonal
55

66
@testset "Basic properties" begin
7-
@testset "Test the Q&D conversion to BandedMatrix format" begin
8-
# Legendre
9-
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
10-
x = axes(P,1)
11-
J = jacobimatrix(P)
12-
Jx = symmjacobim(J)
13-
@test J[1:100,1:100] == Jx[1:100,1:100]
14-
# Jacobi
15-
P = Normalized(Jacobi(1,2)[affine(0..1,Inclusion(-1..1)),:])
16-
x = axes(P,1)
17-
J = jacobimatrix(P)
18-
Jx = symmjacobim(J)
19-
@test J[1:100,1:100] == Jx[1:100,1:100]
20-
end
21-
22-
@testset "Basic types and getindex variants" begin
23-
# basis
24-
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
25-
x = axes(P,1)
26-
J = jacobimatrix(P)
27-
Jx = symmjacobim(J)
28-
# example weight
29-
w = (I - Jx^2)
30-
# banded cholesky for symmetric-tagged W
31-
@test cholesky(w).U isa UpperTriangular
32-
# compute Jacobi matrix via cholesky
33-
Jchol = cholesky_jacobimatrix(w)
34-
@test Jchol isa LazyBandedMatrices.SymTridiagonal
35-
# CholeskyJacobiBands object
36-
Cbands = CholeskyJacobiBands(w)
37-
@test Cbands isa CholeskyJacobiBands
38-
@test Cbands isa AbstractCachedMatrix
39-
@test getindex(Cbands,1,100) == getindex(Cbands,1,1:100)[100]
40-
end
7+
# basis
8+
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
9+
x = axes(P,1)
10+
J = jacobimatrix(P)
11+
# example weight
12+
w(x) = (1 - x^2)
13+
W = Symmetric(P \ (w.(x) .* P))
14+
# banded cholesky for symmetric-tagged W
15+
@test cholesky(W).U isa UpperTriangular
16+
# compute Jacobi matrix via cholesky
17+
Jchol = cholesky_jacobimatrix(w,P)
18+
@test Jchol isa SymTridiagonal
19+
# CholeskyJacobiBands object
20+
Cbands = CholeskyJacobiBands(W,P)
21+
@test Cbands isa CholeskyJacobiBands
22+
@test Cbands isa AbstractCachedMatrix
23+
@test getindex(Cbands,1,100) == getindex(Cbands,1,1:100)[100]
4124
end
4225

4326
@testset "Comparison with Lanczos and Classical" begin
44-
@testset "Not using Clenshaw" begin
45-
@testset "w(x) = x^2*(1-x)" begin
46-
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
47-
x = axes(P,1)
48-
J = jacobimatrix(P)
49-
Jx = symmjacobim(J)
50-
w = (Jx^2 - Jx^3)
51-
# compute Jacobi matrix via cholesky
52-
Jchol = cholesky_jacobimatrix(w)
53-
# compute Jacobi matrix via classical recurrence
54-
Q = Normalized(Jacobi(1,2)[affine(0..1,Inclusion(-1..1)),:])
55-
Jclass = jacobimatrix(Q)
56-
# compute Jacobi matrix via Lanczos
57-
wf = x.^2 .* (1 .- x)
58-
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
59-
# Comparison with Lanczos
60-
@test Jchol[1:500,1:500] Jlanc[1:500,1:500]
61-
# Comparison with Classical
62-
@test Jchol[1:500,1:500] Jclass[1:500,1:500]
63-
end
64-
65-
@testset "w(x) = (1-x^2)" begin
66-
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
67-
x = axes(P,1)
68-
J = jacobimatrix(P)
69-
Jx = symmjacobim(J)
70-
w = (I - Jx^2)
71-
# compute Jacobi matrix via cholesky
72-
Jchol = cholesky_jacobimatrix(w)
73-
# compute Jacobi matrix via Lanczos
74-
wf = (1 .- x.^2)
75-
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
76-
# Comparison
77-
@test Jchol[1:500,1:500] Jlanc[1:500,1:500]
78-
end
79-
80-
@testset "w(x) = (1-x^4)" begin
81-
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
82-
x = axes(P,1)
83-
J = jacobimatrix(P)
84-
Jx = symmjacobim(J)
85-
w = (I - Jx^4)
86-
# compute Jacobi matrix via cholesky
87-
Jchol = cholesky_jacobimatrix(w)
88-
# compute Jacobi matrix via Lanczos
89-
wf = (1 .- x.^4)
90-
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
91-
# Comparison
92-
@test Jchol[1:500,1:500] Jlanc[1:500,1:500]
93-
end
94-
95-
@testset "w(x) = (1.014-x^3)" begin
96-
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
97-
x = axes(P,1)
98-
J = jacobimatrix(P)
99-
Jx = symmjacobim(J)
100-
t = 1.014
101-
w = (t*I - Jx^3)
102-
# compute Jacobi matrix via cholesky
103-
Jchol = cholesky_jacobimatrix(w)
104-
# compute Jacobi matrix via Lanczos
105-
wf = (t .- x.^3)
106-
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
107-
# Comparison
108-
@test Jchol[1:500,1:500] Jlanc[1:500,1:500]
109-
end
110-
end
111-
11227
@testset "Using Clenshaw for polynomial weights" begin
11328
@testset "w(x) = x^2*(1-x)" begin
11429
P = Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])
11530
x = axes(P,1)
11631
J = jacobimatrix(P)
11732
wf(x) = x^2*(1-x)
11833
# compute Jacobi matrix via cholesky
119-
W = P \ (wf.(x) .* P)
120-
Jchol = cholesky_jacobimatrix(Symmetric(W))
34+
Jchol = cholesky_jacobimatrix(wf, P)
12135
# compute Jacobi matrix via classical recurrence
12236
Q = Normalized(Jacobi(1,2)[affine(0..1,Inclusion(-1..1)),:])
12337
Jclass = jacobimatrix(Q)
@@ -135,8 +49,7 @@ end
13549
J = jacobimatrix(P)
13650
wf(x) = (1-x^2)
13751
# compute Jacobi matrix via cholesky
138-
W = P \ (wf.(x) .* P)
139-
Jchol = cholesky_jacobimatrix(Symmetric(W))
52+
Jchol = cholesky_jacobimatrix(wf, P)
14053
# compute Jacobi matrix via Lanczos
14154
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
14255
# Comparison with Lanczos
@@ -149,8 +62,7 @@ end
14962
J = jacobimatrix(P)
15063
wf(x) = (1-x^4)
15164
# compute Jacobi matrix via cholesky
152-
W = P \ (wf.(x) .* P)
153-
Jchol = cholesky_jacobimatrix(Symmetric(W))
65+
Jchol = cholesky_jacobimatrix(wf, P)
15466
# compute Jacobi matrix via Lanczos
15567
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
15668
# Comparison with Lanczos
@@ -163,8 +75,7 @@ end
16375
J = jacobimatrix(P)
16476
wf(x) = 1.014-x^4
16577
# compute Jacobi matrix via cholesky
166-
W = P \ (wf.(x) .* P)
167-
Jchol = cholesky_jacobimatrix(Symmetric(W))
78+
Jchol = cholesky_jacobimatrix(wf, P)
16879
# compute Jacobi matrix via Lanczos
16980
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
17081
# Comparison with Lanczos
@@ -179,8 +90,7 @@ end
17990
J = jacobimatrix(P)
18091
wf(x) = exp(x)
18192
# compute Jacobi matrix via cholesky
182-
W = P \ (wf.(x) .* P)
183-
Jchol = cholesky_jacobimatrix(Symmetric(W))
93+
Jchol = cholesky_jacobimatrix(wf, P)
18494
# compute Jacobi matrix via Lanczos
18595
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
18696
# Comparison with Lanczos
@@ -193,8 +103,7 @@ end
193103
J = jacobimatrix(P)
194104
wf(x) = (1-x)*exp(x)
195105
# compute Jacobi matrix via cholesky
196-
W = P \ (wf.(x) .* P)
197-
Jchol = cholesky_jacobimatrix(Symmetric(W))
106+
Jchol = cholesky_jacobimatrix(wf, P)
198107
# compute Jacobi matrix via Lanczos
199108
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
200109
# Comparison with Lanczos
@@ -207,8 +116,7 @@ end
207116
J = jacobimatrix(P)
208117
wf(x) = (1-x^2)*exp(x^2)
209118
# compute Jacobi matrix via cholesky
210-
W = P \ (wf.(x) .* P)
211-
Jchol = cholesky_jacobimatrix(Symmetric(W))
119+
Jchol = cholesky_jacobimatrix(wf, P)
212120
# compute Jacobi matrix via Lanczos
213121
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
214122
# Comparison with Lanczos
@@ -221,12 +129,11 @@ end
221129
J = jacobimatrix(P)
222130
wf(x) = x*(1-x^2)*exp(-x^2)
223131
# compute Jacobi matrix via cholesky
224-
W = P \ (wf.(x) .* P)
225-
Jchol = cholesky_jacobimatrix(Symmetric(W))
132+
Jchol = cholesky_jacobimatrix(wf, P)
226133
# compute Jacobi matrix via Lanczos
227134
Jlanc = jacobimatrix(LanczosPolynomial(@.(wf.(x)),Normalized(Legendre()[affine(0..1,Inclusion(-1..1)),:])))
228135
# Comparison with Lanczos
229136
@test Jchol[1:500,1:500] Jlanc[1:500,1:500]
230137
end
231138
end
232-
end
139+
end

0 commit comments

Comments
 (0)