##To demonstrate how to obtain 1-dimensional Hermite interpolatory
##masks with dilaiton factor 2, support [-1,1], multiplicity 2, and
##the highest sum rules. That is, the masks for the Hermite cubic
##splines.
##The we demonstrate how to use the CBC algorithm to obtain a dual
##mask of the above matrix mask for the Hermite cubic spline.
#################################################################
##Some directly related references:
#For symmetry of a refinable function and mask with a dilation matrix
# see the papers
# Bin Han, Symmetry property and construction of wavelets with a
# general dilation matrix, Linear Algebra and Its Applications,
# (2001), to appear.
# Bin Han, Computing the smoothness exponent of a symmetric
# multivariate refinable function, (2001), preprint
# Bin Han, Thomas P.-Y. Yu, Bruce Piper,
## Multivariate Refinable Hermite Interpolants, (2002), preprint.
## See this paper also for refinable Hermite interpolants.
#For CBC algorithms on constructing biorthogonal multiwavelets.
# CBC stands for Coset By Coset
# These program is mainly based on the following paper
# Bin Han, Hermite interpolants and biorthogonal multiwavelets
# with arbitrary order of vanishing moments (1999) SPIE
# Proc. Vol. 3813, pp. 147--161.
# The CBC algorithm for the multivariate multiwavelets with
# a general dilation matrix was established.
# Also, see the following papers for the CBC algorithm
# Bin Han, Analysis and Construction of Optimal Multivariate
# Biorthogonal Wavelets With Compact Support, SIAM Journal on
# Mathematical Analysis, Vol. 31, No.2 (1999/2000), 274--304.
# CBC algorithm for interpolatory masks with dilation
# matrix 2I_s was first introduced in this paper.
# Di-Rong Chen, Bin Han and Sherman D. Riemenschneider,
# Construction of Multivariate Biorthogonal Wavelets With
# Arbitrary Vanishing Moments, Advances in Computational
# Mathematics, Vol. 13 No. 2 (2000), 131-165.
# CBC alogrithm for the scalar case with a general dilation
# matrix was established.
# Bin Han and Rong-Qing Jia, Quincunx Fundamental Refinable
# Functions and Quincunx Biorthogonal Wavelets, Mathematics of
# Computation, Vol. 71, No. 237, (2002), 165--196.
# CBC algorithm for quincunx wavelets was discussed
# Bin Han, Construction of multivariate biorthogonal wavelets by
# CBC algorithm. Wavelet analysis and multiresolution methods
# (Urbana-Champaign, IL, 1999), 105--143, Lecture Notes in Pure
# and Appl. Math., 212, Dekker, New York, 2000.
# Survey paper on CBC algorithm.
# Bin Han, Hermite interpolants and biorthogonal multiwavelets
# with arbitrary order of vanishing moments (1999) SPIE
# Proc. Vol. 3813, pp. 147--161.
# Survey paper on CBC algorithm for 1-dimensional multiwavelets.
# Papers can be downloaded at
## http://www.ualberta.ca/~bhan/publ.htm
# Program was developed by Bin Han at University of Alberta
# Version 1 on January 6, 2002.
# Initial Tests of the program have been done on January 6, 2002.
# Report bugs, mistakes, errors, comments, suggestions etc. to
# Bin Han, bhan@ualberta.ca, htpp://www.ualbert.ca/~bhan
####################################################################
read "d1cbc":
#The dilation factor you are using is 2, mask is supported on
# [-support, support], sum rule = 4, multiplicity=hermiteorder+1=2.
dilation:=2:
support:=1:
sumrule:=4:
hermiteorder:=1:
#parametrix the mask with the symmetry group {-1, 1}
poly:=D1MaskOfSym(support,dilation,hermiteorder,1,cc):
#generate the y vectors in the sum rules.
yvector:=D1YVectForHermiteMask(hermiteorder,sumrule):
EQ:=D1SumRuleEqs(poly,dilation,sumrule,yvector,2):
assign(solve(EQ[0])):
D1PrintMask(poly,0):
###########################################################
##Obtian a dual mask of the above matrix mask
dualmasksupport:=2:
dualmasksumrule:=4:
#parametrix the dual mask with the symmetry group {-1, 1}
#note that interpolation is set to be false here since
#a dual mask may not be interpolating
dualpoly:=D1MaskOfSym(dualmasksupport,dilation,hermiteorder,0,dd):
dualyvector:=D1CBCAlgorithm(poly,dilation,dualmasksumrule,1):
EQ:=D1SumRuleEqs(dualpoly,dilation,dualmasksumrule,dualyvector,2):
AllEq:=EQ[0] union D1BiorthEqs(poly,dualpoly,dilation,0,0):
solt:=solve(AllEq);
newVAR:=FreeParameter(solt,c,1):
assign(newVAR):
assign(solt):
D1PrintMask(dualpoly,0):
quit: