1
- using MultivariateOrthogonalPolynomials, Test, ForwardDiff
1
+ using MultivariateOrthogonalPolynomials, ClassicalOrthogonalPolynomials, Test, ForwardDiff, StaticArrays
2
2
using ForwardDiff: gradient
3
3
4
4
5
5
k = 0 ; m = 0 ; n = 2
6
6
7
- Z_x = 𝐱 -> gradient (𝐱 -> zernikez (n,m,𝐱), 𝐱)[1 ]
8
- Z_y = 𝐱 -> gradient (𝐱 -> zernikez (n,m,𝐱), 𝐱)[2 ]
7
+ Z_x = (n,m) -> ( 𝐱 -> gradient (𝐱 -> zernikez (n,m,𝐱), 𝐱)[1 ])
8
+ Z_y = (n,m) -> ( 𝐱 -> gradient (𝐱 -> zernikez (n,m,𝐱), 𝐱)[2 ])
9
9
10
10
11
11
𝐱 = SVector (0.1 ,0.2 )
@@ -21,5 +21,49 @@ r^m * cos(m*θ) * jacobip(n,k, m,z) / sqrt(W(n,k,m) / 2^(2+k+m))
21
21
22
22
sqrt (π) * zernikez (n,m,𝐱)
23
23
24
- @time expand (Zernike (), Z_x)
24
+ @time expand (Zernike (), Z_x ( 3 , 2 ) )
25
25
26
+ # vector OPs
27
+ o = expand (Zernike (), _ -> 1 )
28
+
29
+ v = [[o,0 * o], [0 * o,o]]
30
+ ip = (v,w) -> dot (v[1 ],w[1 ]) + dot (v[2 ],w[2 ])
31
+ ip (v[1 ],v[2 ])
32
+
33
+ expand (Zernike (), Z_x (3 ,2 ))
34
+
35
+
36
+ W_x = (n,m) -> (𝐱 -> gradient (𝐱 -> (1 - norm (𝐱)^ 2 )* zernikez (n,m,1 ,𝐱), 𝐱)[1 ])
37
+ W_y = (n,m) -> (𝐱 -> gradient (𝐱 -> (1 - norm (𝐱)^ 2 )* zernikez (n,m,1 ,𝐱), 𝐱)[2 ])
38
+
39
+ ∇W = (n,m) -> [expand (Zernike (), W_x (n,m)),expand (Zernike (), W_y (n,m))]
40
+
41
+ ip (∇W (2 ,3 ), [expand (Zernike (), splat ((x,y) -> 1 + x+ y+ x^ 2 + x* y+ y^ 2 + x^ 3 + x^ 2 * y+ x* y^ 2 + y^ 3 )),expand (Zernike (), splat ((x,y) -> 1 + x+ y+ x^ 2 + x* y+ y^ 2 + x^ 3 + x^ 2 * y+ x* y^ 2 + y^ 3 ))])
42
+
43
+ ip (,[expand (Zernike (), W_x (3 ,2 )),expand (Zernike (), W_y (3 ,2 ))])
44
+
45
+ w = [expand (Zernike (), splat ((x,y)-> 1 - y^ 2 )) expand (Zernike (), splat ((x,y)-> x* y)); expand (Zernike (), splat ((x,y)-> x* y)) expand (Zernike (), splat ((x,y)-> 1 - x^ 2 ))]
46
+
47
+ wiW1 = (n,m) -> expand (Zernike ()[:,Block .(1 : 20 )], splat ((x,y) -> [1 - x^ 2 ,- x* y]' * gradient (𝐱 -> (1 - norm (𝐱)^ 2 )* zernikez (n,m,1 ,𝐱), SVector (x,y))/ (1 - x^ 2 - y^ 2 )))
48
+ wiW2 = (n,m) -> expand (Zernike ()[:,Block .(1 : 20 )], splat ((x,y) -> [- x* y,1 - y^ 2 ]' * gradient (𝐱 -> (1 - norm (𝐱)^ 2 )* zernikez (n,m,1 ,𝐱), SVector (x,y))/ (1 - x^ 2 - y^ 2 )))
49
+
50
+ [wiW1 (3 ,4 ),wiW2 (3 ,4 )], [expand (Zernike (), splat ((x,y) -> 1 + x+ y+ x^ 2 + x* y+ y^ 2 + x^ 3 + x^ 2 * y+ x* y^ 2 + y^ 3 )),expand (Zernike (), splat ((x,y) -> 1 + x+ y+ x^ 2 + x* y+ y^ 2 + x^ 3 + x^ 2 * y+ x* y^ 2 + y^ 3 ))]
51
+
52
+ v = [wiW1 (3 ,4 ),wiW2 (3 ,4 )]
53
+ [ip (v, ∇W (n,m)) for n= 0 : 5 , m= 0 : 5 ]
54
+ dot (∇W (0 ,6 )[1 ], ∇W (4 ,6 )[1 ])
55
+ dot (∇W (0 ,6 )[2 ], ∇W (4 ,6 )[2 ])
56
+
57
+
58
+ ∇W (0 ,6 )[1 ][SVector (0.1 ,0.2 )]
59
+ gradient (𝐱 -> (1 - norm (𝐱)^ 2 )* zernikez (0 ,6 ,1 ,𝐱), SVector (0.1 ,0.2 ))
60
+ ip (∇W (8 ,4 ), ∇W (9 ,4 ))
61
+ [ip (∇W (8 ,4 ), ∇W (n,m)) for n= 0 : 10 , m= 0 : 6 ]
62
+ v = [wiW1 (3 ,4 ),wiW2 (3 ,4 )]
63
+ [ip (v, ∇W (n,m)) for n= 0 : 10 , m= 0 : 6 ]
64
+
65
+ zernikez (4 ,6 ,1 ,0.1 * SVector (cos (0.2 ),sin (0.2 )))
66
+ v[1 ][SVector (0.1 ,0.2 )]
67
+
68
+ (1 - x^ 2 ) * P^ (1 ,1 ) * (1 - x^ 2 ) * P^ (1 ,1 )
69
+ (𝐱 -> (1 - norm (𝐱)^ 2 )* zernikez (3 ,4 ,1 ,𝐱))(0.1 * SVector (cos (0.2 ),sin (0.2 )))
0 commit comments