@@ -69,12 +69,11 @@ import ForwardDiff: hessian
69
69
end
70
70
end
71
71
72
- @testset " Jacobi matrices" begin
72
+ @testset " Jacobi matrices" begin
73
73
# Setup
74
74
α = 10 * rand ()
75
75
Z = Zernike (α)
76
- xy = axes (Z, 1 )
77
- x, y = first .(xy), last .(xy)
76
+ x, y = coordinates (Z)
78
77
n = 150
79
78
80
79
# X tests
@@ -95,7 +94,7 @@ import ForwardDiff: hessian
95
94
# Y tests
96
95
JY = zeros (n,n)
97
96
for j = 1 : n
98
- JY[1 : n,j] = (Z \ (y .* Z[:,j]))[1 : n]
97
+ JY[1 : n,j] = (Z \ (y .* Z[:,j]))[1 : n]
99
98
end
100
99
Y = Z \ (y .* Z)
101
100
# The Zernike Jacobi matrices are symmetric for this normalization
@@ -112,8 +111,8 @@ import ForwardDiff: hessian
112
111
@test (X* Y)[Block .(1 : 6 ),Block .(1 : 6 )] ≈ (X[Block .(1 : 10 ),Block .(1 : 10 )]* Y[Block .(1 : 10 ),Block .(1 : 10 )])[Block .(1 : 6 ),Block .(1 : 6 )]
113
112
114
113
# Addition of Jacobi matrices
115
- @test (X+ Y)[Block .(1 : 6 ),Block .(1 : 6 )] ≈ ( X[Block .(1 : 6 ),Block .(1 : 6 )]+ Y[Block .(1 : 6 ),Block .(1 : 6 )])
116
- @test (Y+ Y)[Block .(1 : 6 ),Block .(1 : 6 )] ≈ ( Y[Block .(1 : 6 ),Block .(1 : 6 )]+ Y[Block .(1 : 6 ),Block .(1 : 6 )])
114
+ @test (X+ Y)[Block .(1 : 6 ),Block .(1 : 6 )] ≈ X[Block .(1 : 6 ),Block .(1 : 6 )]+ Y[Block .(1 : 6 ),Block .(1 : 6 )]
115
+ @test (Y+ Y)[Block .(1 : 6 ),Block .(1 : 6 )] ≈ Y[Block .(1 : 6 ),Block .(1 : 6 )]+ Y[Block .(1 : 6 ),Block .(1 : 6 )]
117
116
118
117
# for now, reject non-zero first parameter options
119
118
@test_throws ErrorException (" Implement for non-zero first basis parameter." ) jacobimatrix (Val (1 ),Zernike (1 ,1 ))
@@ -128,7 +127,7 @@ import ForwardDiff: hessian
128
127
end
129
128
130
129
Z = Zernike (a,b);
131
- xy = axes (Z, 1 ); x,y = first .(xy), last .(xy);
130
+ x,y = coordinates (Z)
132
131
u = Z * (Z \ exp .(x .* cos .(y)))
133
132
@test u[SVector (0.1 ,0.2 )] ≈ exp (0.1 cos (0.2 ))
134
133
end
@@ -172,7 +171,7 @@ import ForwardDiff: hessian
172
171
ur = r -> r^ m* f (r^ 2 )
173
172
@test ur (r) ≈ (1 - r^ 2 ) * zerniker (ℓ, m, b, r)
174
173
175
- D = Derivative (axes ( Chebyshev (), 1 ))
174
+ D = Derivative (Chebyshev ())
176
175
D1 = Normalized (Jacobi (0 , m+ 1 )) \ (D * (HalfWeighted {:a} (Normalized (Jacobi (1 , m)))))
177
176
D2 = HalfWeighted {:b} (Normalized (Jacobi (1 , m))) \ (D * (HalfWeighted {:b} (Normalized (Jacobi (0 , m+ 1 )))))
178
177
@@ -219,12 +218,11 @@ import ForwardDiff: hessian
219
218
# @test lap(u, xy...) ≈ Zernike(1)[xy,15] * (-4) * 5 * 1
220
219
221
220
WZ = Weighted (Zernike (1 )) # Zernike(1) weighted by (1-r^2)
222
- Δ = Laplacian (axes (WZ, 1 ) )
221
+ Δ = Laplacian (WZ )
223
222
Δ_Z = Zernike (1 ) \ (Δ * WZ)
224
223
@test exp .(Δ_Z)[1 : 10 ,1 : 10 ] == exp .(Δ_Z[1 : 10 ,1 : 10 ])
225
224
226
- xy = axes (WZ,1 )
227
- x,y = first .(xy),last .(xy)
225
+ x,y = coordinates (WZ)
228
226
u = @. (1 - x^ 2 - y^ 2 ) * exp (x* cos (y))
229
227
Δu = @. (- exp (x* cos (y)) * (4 - x* (- 5 + x^ 2 + y^ 2 )cos (y) + (- 1 + x^ 2 + y^ 2 )cos (y)^ 2 - 4 x* y* sin (y) + x^ 2 * (x^ 2 + y^ 2 - 1 )* sin (y)^ 2 ))
230
228
@test (WZ * (WZ \ u))[SVector (0.1 ,0.2 )] ≈ u[SVector (0.1 ,0.2 )]
@@ -233,12 +231,12 @@ import ForwardDiff: hessian
233
231
@testset " Unweighted" begin
234
232
c = [randn (100 ); zeros (∞)]
235
233
Z = Zernike ()
236
- Δ = Zernike (2 ) \ (Laplacian (axes (Z, 1 ) ) * Z)
234
+ Δ = Zernike (2 ) \ (Laplacian (Z ) * Z)
237
235
@test tr (hessian (xy -> (Zernike {eltype(xy)} ()* c)[xy], SVector (0.1 ,0.2 ))) ≈ (Zernike (2 )* (Δ* c))[SVector (0.1 ,0.2 )]
238
236
239
237
b = 0.2
240
238
Z = Zernike (b)
241
- Δ = Zernike (b+ 2 ) \ (Laplacian (axes (Z, 1 ) ) * Z)
239
+ Δ = Zernike (b+ 2 ) \ (Laplacian (Z ) * Z)
242
240
@test tr (hessian (xy -> (Zernike {eltype(xy)} (b)* c)[xy], SVector (0.1 ,0.2 ))) ≈ (Zernike (b+ 2 )* (Δ* c))[SVector (0.1 ,0.2 )]
243
241
end
244
242
end
325
323
@testset " Fractional Laplacian on Unit Disk" begin
326
324
@testset " Fractional Laplacian on Disk: (-Δ)^(β) == -Δ when β=1" begin
327
325
WZ = Weighted (Zernike (1. ))
328
- Δ = Laplacian (axes (WZ, 1 ) )
326
+ Δ = Laplacian (WZ )
329
327
Δ_Z = Zernike (1 ) \ (Δ * WZ)
330
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,1. )
328
+ Δfrac = AbsLaplacian (WZ ,1. )
331
329
Δ_Zfrac = Zernike (1 ) \ (Δfrac * WZ)
332
330
@test Δ_Z[1 : 100 ,1 : 100 ] ≈ - Δ_Zfrac[1 : 100 ,1 : 100 ]
333
331
end
338
336
β = 1.34
339
337
Z = Zernike (β)
340
338
WZ = Weighted (Z)
341
- xy = axes (WZ,1 )
342
- x,y = first .(xy),last .(xy)
339
+ x,y = coordinates (WZ)
343
340
# generate fractional Laplacian
344
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
341
+ Δfrac = AbsLaplacian (WZ ,β)
345
342
Δ_Zfrac = Z \ (Δfrac * WZ)
346
343
# define function whose fractional Laplacian is known
347
344
u = @. (1 - x^ 2 - y^ 2 ). ^ β
355
352
β = 2.11
356
353
Z = Zernike (β)
357
354
WZ = Weighted (Z)
358
- xy = axes (WZ,1 )
359
- x,y = first .(xy),last .(xy)
355
+ x,y = coordinates (WZ)
360
356
# generate fractional Laplacian
361
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
357
+ Δfrac = AbsLaplacian (WZ ,β)
362
358
Δ_Zfrac = Z \ (Δfrac * WZ)
363
359
# define function whose fractional Laplacian is known
364
360
u = @. (1 - x^ 2 - y^ 2 ). ^ β
371
367
β = 3.14159
372
368
Z = Zernike (β)
373
369
WZ = Weighted (Z)
374
- xy = axes (WZ,1 )
375
- x,y = first .(xy),last .(xy)
370
+ x,y = coordinates (WZ)
376
371
# generate fractional Laplacian
377
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
372
+ Δfrac = AbsLaplacian (WZ ,β)
378
373
Δ_Zfrac = Z \ (Δfrac * WZ)
379
374
# define function whose fractional Laplacian is known
380
375
u = @. (1 - x^ 2 - y^ 2 ). ^ β
387
382
β = 1.1
388
383
Z = Zernike (β)
389
384
WZ = Weighted (Z)
390
- xy = axes (WZ,1 )
391
- x,y = first .(xy),last .(xy)
385
+ x,y = coordinates (WZ)
392
386
# generate fractional Laplacian
393
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
387
+ Δfrac = AbsLaplacian (WZ ,β)
394
388
Δ_Zfrac = Z \ (Δfrac * WZ)
395
389
# define function whose fractional Laplacian is known
396
390
u = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )
406
400
β = 2.71999
407
401
Z = Zernike (β)
408
402
WZ = Weighted (Z)
409
- xy = axes (WZ,1 )
410
- x,y = first .(xy),last .(xy)
403
+ x,y = coordinates (WZ)
411
404
# generate fractional Laplacian
412
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
405
+ Δfrac = AbsLaplacian (WZ ,β)
413
406
Δ_Zfrac = Z \ (Δfrac * WZ)
414
407
# define function whose fractional Laplacian is known
415
408
u = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )
425
418
β = 2.71999
426
419
Z = Zernike (β)
427
420
WZ = Weighted (Z)
428
- xy = axes (WZ,1 )
429
- x,y = first .(xy),last .(xy)
421
+ x,y = coordinates (WZ)
430
422
# generate fractional Laplacian
431
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
423
+ Δfrac = AbsLaplacian (WZ ,β)
432
424
Δ_Zfrac = Z \ (Δfrac * WZ)
433
425
# define function whose fractional Laplacian is known
434
426
u = @. (1 - x^ 2 - y^ 2 ). ^ (β)* x
444
436
β = 1.91239
445
437
Z = Zernike (β)
446
438
WZ = Weighted (Z)
447
- xy = axes (WZ,1 )
448
- x,y = first .(xy),last .(xy)
439
+ x,y = coordinates (WZ)
449
440
# generate fractional Laplacian
450
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
441
+ Δfrac = AbsLaplacian (WZ ,β)
451
442
Δ_Zfrac = Z \ (Δfrac * WZ)
452
443
# define function whose fractional Laplacian is known
453
444
u = @. (1 - x^ 2 - y^ 2 ). ^ (β)* y
464
455
β = 1.21999
465
456
Z = Zernike (β)
466
457
WZ = Weighted (Z)
467
- xy = axes (WZ,1 )
468
- x,y = first .(xy),last .(xy)
458
+ x,y = coordinates (WZ)
469
459
# generate fractional Laplacian
470
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
460
+ Δfrac = AbsLaplacian (WZ ,β)
471
461
Δ_Zfrac = Z \ (Δfrac * WZ)
472
462
# define function whose fractional Laplacian is known
473
463
u = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )* x
483
473
β = 0.141
484
474
Z = Zernike (β)
485
475
WZ = Weighted (Z)
486
- xy = axes (WZ,1 )
487
- x,y = first .(xy),last .(xy)
476
+ x,y = coordinates (WZ)
488
477
# generate fractional Laplacian
489
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
478
+ Δfrac = AbsLaplacian (WZ ,β)
490
479
Δ_Zfrac = Z \ (Δfrac * WZ)
491
480
# define function whose fractional Laplacian is known
492
481
u = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )* y
506
495
Z = Zernike (β)
507
496
WZ = Weighted (Z)
508
497
xy = axes (WZ,1 )
509
- x,y = first .(xy), last .(xy )
498
+ x,y = coordinates (WZ )
510
499
# generate fractional Laplacian
511
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
500
+ Δfrac = AbsLaplacian (WZ ,β)
512
501
Δ_Zfrac = Z \ (Δfrac * WZ)
513
502
# define function whose fractional Laplacian is known
514
503
uexplicit = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )
526
515
Z = Zernike (β)
527
516
WZ = Weighted (Z)
528
517
xy = axes (WZ,1 )
529
- x,y = first .(xy), last .(xy )
518
+ x,y = coordinates (WZ )
530
519
# generate fractional Laplacian
531
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
520
+ Δfrac = AbsLaplacian (WZ ,β)
532
521
Δ_Zfrac = Z \ (Δfrac * WZ)
533
522
# define function whose fractional Laplacian is known
534
523
uexplicit = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )* y
545
534
Z = Zernike (β)
546
535
WZ = Weighted (Z)
547
536
xy = axes (WZ,1 )
548
- x,y = first .(xy), last .(xy )
537
+ x,y = coordinates (WZ )
549
538
# generate fractional Laplacian
550
- Δfrac = AbsLaplacian (axes (WZ, 1 ) ,β)
539
+ Δfrac = AbsLaplacian (WZ ,β)
551
540
Δ_Zfrac = Z \ (Δfrac * WZ)
552
541
# define function whose fractional Laplacian is known
553
542
uexplicit = @. (1 - x^ 2 - y^ 2 ). ^ (β+ 1 )* x
0 commit comments