Example 4 

Orthogal, interpolatory mask with symmetry 

 

> restart; 1
 

> read
 

> `assign`(d, 3); 1; `assign`(r, 2); 1; `assign`(h, 0); 1
 

 

 

`assign`(d, 3)
`assign`(r, 2)
`assign`(h, 0) (7.6.1)
 

> `assign`(multi, `*`(r, `*`(`+`(h, 1)))); 1
 

`assign`(multi, 2) (7.6.2)
 

> `assign`(poly, D1GenPolyMask(a, multi, -2, 3)); 1
 

`assign`(poly, Matrix(%id = 164996188))
`assign`(poly, Matrix(%id = 164996188))
`assign`(poly, Matrix(%id = 164996188))
`assign`(poly, Matrix(%id = 164996188))
(7.6.3)
 

> `assign`(eq1, D1GHInterpolatoryMaskEqs(poly, d, h)); -1; `assign`(sln1, solve(eq1)); -1; `assign`(poly1, subs(sln1, poly)); 1
`assign`(eq1, D1GHInterpolatoryMaskEqs(poly, d, h)); -1; `assign`(sln1, solve(eq1)); -1; `assign`(poly1, subs(sln1, poly)); 1
 

`assign`(poly1, Matrix(%id = 192161732))
`assign`(poly1, Matrix(%id = 192161732))
`assign`(poly1, Matrix(%id = 192161732))
`assign`(poly1, Matrix(%id = 192161732))
(7.6.4)
 

> `assign`(eq2, D1GHIMaskSumRuleEqs(poly, d, h, 2)); -1; `assign`(sln2, solve(eq2)); -1; `assign`(poly2, subs(sln2, poly1)); 1
`assign`(eq2, D1GHIMaskSumRuleEqs(poly, d, h, 2)); -1; `assign`(sln2, solve(eq2)); -1; `assign`(poly2, subs(sln2, poly1)); 1
 

`assign`(poly2, Matrix(%id = 197995860))
`assign`(poly2, Matrix(%id = 197995860))
`assign`(poly2, Matrix(%id = 197995860))
`assign`(poly2, Matrix(%id = 197995860))
(7.6.5)
 

> coeff(poly2, z, -2), coeff(poly2, z, -1), coeff(poly2, z, 0), coeff(poly2, z, 1), coeff(poly2, z, 2), coeff(poly2, z, 3); 1
coeff(poly2, z, -2), coeff(poly2, z, -1), coeff(poly2, z, 0), coeff(poly2, z, 1), coeff(poly2, z, 2), coeff(poly2, z, 3); 1
coeff(poly2, z, -2), coeff(poly2, z, -1), coeff(poly2, z, 0), coeff(poly2, z, 1), coeff(poly2, z, 2), coeff(poly2, z, 3); 1
coeff(poly2, z, -2), coeff(poly2, z, -1), coeff(poly2, z, 0), coeff(poly2, z, 1), coeff(poly2, z, 2), coeff(poly2, z, 3); 1
 

Matrix(%id = 189169152), Matrix(%id = 188198196), Matrix(%id = 178188696), Matrix(%id = 165460308), Matrix(%id = 165607152), Matrix(%id = 165605296)
Matrix(%id = 189169152), Matrix(%id = 188198196), Matrix(%id = 178188696), Matrix(%id = 165460308), Matrix(%id = 165607152), Matrix(%id = 165605296)
Matrix(%id = 189169152), Matrix(%id = 188198196), Matrix(%id = 178188696), Matrix(%id = 165460308), Matrix(%id = 165607152), Matrix(%id = 165605296)
(7.6.6)
 

> `assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
`assign`(eq3, {}); -1; for i from -2 to 3 do `assign`(tmp1, coeff(poly2, z, i)); `assign`(tmp2, coeff(poly2, z, `+`(1, `-`(i)))); `assign`(eq3, `union`(eq3, {tmp1[1, 1] = tmp2[2, 2], tmp1[1, 2] = tmp2...
 

> `assign`(sln3, solve(eq3)); -1; `assign`(poly3, subs(sln3, poly2)); 1
 

`assign`(poly3, Matrix(%id = 183139396))
`assign`(poly3, Matrix(%id = 183139396))
`assign`(poly3, Matrix(%id = 183139396))
`assign`(poly3, Matrix(%id = 183139396))
`assign`(poly3, Matrix(%id = 183139396))
(7.6.7)
 

> `assign`(eq4, D1OrthEqs(poly3, d, sqrt(d))); 1
 

 

Make sure that the mask a={a(k)} is normalized so that  sum_k a(k) = 1, i.e., subs(z=1,poly) = 1.
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
`assign`(eq4, {`+`(`-`(`*`(`/`(2, 3), `*`(`a201c-1`))), `*`(12, `*`(`^`(`a201c-1`, 2))), `*`(6, `*`(a202c2, `*`(`a201c-1`))), `*`(`/`(2, 3), `*`(`a201c-2`)), `*`(12, `*`(`^`(`a201c-2`, 2))), `*`(6, `*...
(7.6.8)
 

> `assign`(tmp, solve(eq4)); 1
 

`assign`(tmp, {`a201c-1` = `+`(`*`(`/`(2, 27), `*`(RootOf(`+`(`*`(13, `*`(`^`(_Z, 2))), `-`(_Z), `-`(16)), label = _L12)))), `a201c-2` = `+`(`-`(`/`(4, 189)), `-`(`*`(`/`(8, 189), `*`(RootOf(`+`(`*`(1...
`assign`(tmp, {`a201c-1` = `+`(`*`(`/`(2, 27), `*`(RootOf(`+`(`*`(13, `*`(`^`(_Z, 2))), `-`(_Z), `-`(16)), label = _L12)))), `a201c-2` = `+`(`-`(`/`(4, 189)), `-`(`*`(`/`(8, 189), `*`(RootOf(`+`(`*`(1...
`assign`(tmp, {`a201c-1` = `+`(`*`(`/`(2, 27), `*`(RootOf(`+`(`*`(13, `*`(`^`(_Z, 2))), `-`(_Z), `-`(16)), label = _L12)))), `a201c-2` = `+`(`-`(`/`(4, 189)), `-`(`*`(`/`(8, 189), `*`(RootOf(`+`(`*`(1...
`assign`(tmp, {`a201c-1` = `+`(`*`(`/`(2, 27), `*`(RootOf(`+`(`*`(13, `*`(`^`(_Z, 2))), `-`(_Z), `-`(16)), label = _L12)))), `a201c-2` = `+`(`-`(`/`(4, 189)), `-`(`*`(`/`(8, 189), `*`(RootOf(`+`(`*`(1...
`assign`(tmp, {`a201c-1` = `+`(`*`(`/`(2, 27), `*`(RootOf(`+`(`*`(13, `*`(`^`(_Z, 2))), `-`(_Z), `-`(16)), label = _L12)))), `a201c-2` = `+`(`-`(`/`(4, 189)), `-`(`*`(`/`(8, 189), `*`(RootOf(`+`(`*`(1...
`assign`(tmp, {`a201c-1` = `+`(`*`(`/`(2, 27), `*`(RootOf(`+`(`*`(13, `*`(`^`(_Z, 2))), `-`(_Z), `-`(16)), label = _L12)))), `a201c-2` = `+`(`-`(`/`(4, 189)), `-`(`*`(`/`(8, 189), `*`(RootOf(`+`(`*`(1...
(7.6.9)
 

> `assign`(sln41, allvalues(tmp[1])); 1; `assign`(sln42, allvalues(tmp[2])); 1
 

 

`assign`(sln41, {`a201c-1` = `+`(`/`(1, 351), `*`(`/`(7, 351), `*`(sqrt(17)))), `a201c-2` = `+`(`-`(`/`(8, 351)), `-`(`*`(`/`(4, 351), `*`(sqrt(17))))), a202c2 = `+`(`/`(85, 702), `-`(`*`(`/`(29, 702)...
`assign`(sln41, {`a201c-1` = `+`(`/`(1, 351), `*`(`/`(7, 351), `*`(sqrt(17)))), `a201c-2` = `+`(`-`(`/`(8, 351)), `-`(`*`(`/`(4, 351), `*`(sqrt(17))))), a202c2 = `+`(`/`(85, 702), `-`(`*`(`/`(29, 702)...
`assign`(sln41, {`a201c-1` = `+`(`/`(1, 351), `*`(`/`(7, 351), `*`(sqrt(17)))), `a201c-2` = `+`(`-`(`/`(8, 351)), `-`(`*`(`/`(4, 351), `*`(sqrt(17))))), a202c2 = `+`(`/`(85, 702), `-`(`*`(`/`(29, 702)...
`assign`(sln42, {`a201c-1` = `+`(`/`(1, 351), `*`(`/`(1, 702), `*`(sqrt(17)))), `a201c-2` = `+`(`-`(`/`(8, 351)), `*`(`/`(5, 702), `*`(sqrt(17)))), a202c2 = `+`(`/`(85, 702), `-`(`*`(`/`(8, 351), `*`(...
`assign`(sln42, {`a201c-1` = `+`(`/`(1, 351), `*`(`/`(1, 702), `*`(sqrt(17)))), `a201c-2` = `+`(`-`(`/`(8, 351)), `*`(`/`(5, 702), `*`(sqrt(17)))), a202c2 = `+`(`/`(85, 702), `-`(`*`(`/`(8, 351), `*`(...
`assign`(sln42, {`a201c-1` = `+`(`/`(1, 351), `*`(`/`(1, 702), `*`(sqrt(17)))), `a201c-2` = `+`(`-`(`/`(8, 351)), `*`(`/`(5, 702), `*`(sqrt(17)))), a202c2 = `+`(`/`(85, 702), `-`(`*`(`/`(8, 351), `*`(...
(7.6.10)
 

>
 

> `assign`(poly4, subs(sln42[1], poly3)); 1
 

`assign`(poly4, Matrix(%id = 193168364))
`assign`(poly4, Matrix(%id = 193168364))
`assign`(poly4, Matrix(%id = 193168364))
`assign`(poly4, Matrix(%id = 193168364))
`assign`(poly4, Matrix(%id = 193168364))
`assign`(poly4, Matrix(%id = 193168364))
(7.6.11)
 

> `assign`(res, D1MaskForMatlab(poly4)); 1; CodeGeneration['Matlab'](res[1]); 1; CodeGeneration['Matlab'](res[2]); 1
 

 

 

Note: After use res:=D1MaskForMatlabMatrix(poly), use CodeGeneration['Matlab'](res[1]); CodeGeneration['Matlab'](res[2]); To generate matlab matrices for the matlab code D1CriticalExponentV2.
Note: After use res:=D1MaskForMatlabMatrix(poly), use CodeGeneration['Matlab'](res[1]); CodeGeneration['Matlab'](res[2]); To generate matlab matrices for the matlab code D1CriticalExponentV2.
`assign`(res, Matrix(%id = 169789752))
cg7 = [-0.17e2 / 0.702e3 - sqrt(0.17e2) / 0.351e3 0 0.85e2 / 0.702e3 - 0.8e1 / 0.351e3 * sqrt(0.17e2) 0.68e2 / 0.351e3 + 0.29e2 / 0.702e3 * sqrt(0.17e2) 0.1e1 / 0.3e1 0.119e3 / 0.351e3 - 0.11e2 / 0.702e3 * sqrt(0.17e2) 0.29e2 / 0.702e3 + 0.4e1 / 0.351e3 * sqrt(0.17e2) 0 0.11e2 / 0.702e3 - 0.7e1 / 0.351e3 * sqrt(0.17e2) 0.1e1 / 0.351e3 + sqrt(0.17e2) / 0.702e3 0 -0.8e1 / 0.351e3 + 0.5e1 / 0.702e3 * sqrt(0.17e2); -0.8e1 / 0.351e3 + 0.5e1 / 0.702e3 * sqrt(0.17e2) 0 0.1e1 / 0.351e3 + sqrt(0.17e2) / 0.702e3 0.11e2 / 0.702e3 - 0.7e1 / 0.351e3 * sqrt(0.17e2) 0 0.29e2 / 0.702e3 + 0.4e1 / 0.351e3 * sqrt(0.17e2) 0.119e3 / 0.351e3 - 0.11e2 / 0.702e3 * sqrt(0.17e2) 0.1e1 / 0.3e1 0.68e2 / 0.351e3 + 0.29e2 / 0.702e3 * sqrt(0.17e2) 0.85e2 / 0.702e3 - 0.8e1 / 0.351e3 * sqrt(0.17e2) 0 -0.17e2 / 0.702e3 - sqrt(0.17e2) / 0.351e3;];
cg8 = [-2 -1 0 1 2 3];
 

>
 

>