N := 6; K := 1; L := 5; H := sum(h(n)*z^n, n=0..N-1); G := sum(g(n)*z^n, n=0..N-1); interface(screenwidth=300); writeto(`eqs`); # ---------- Zero-Moment Conditions ---------- R0 := rem(H,(z+1)^K,z): R1 := rem(G,(z+1)^K,z): lprint(`// Zero-Moment Conditions`); k := 'k': for k from 0 to 8 do lprint(coeff(R0,z,k),`,`); lprint(coeff(R1,z,k),`,`); od; # ---------- Orthogonality Conditions ---------- P0 := expand(H*subs(z=1/z,H)): P1 := expand(G*subs(z=1/z,G)): lprint(`// Orthogonality Conditions`); # lprint(coeff(P,z,0) - 2,`,`); lprint(subs(z=1,H) - 1,`,`); lprint(subs(z=1,G) - 1,`,`); k := 'k': for k from 1 to 6 do lprint(sort(coeff(P0,z,2*k)),`,`); lprint(sort(coeff(P1,z,2*k)),`,`); od; # ---------- Delay Conditions ---------- E := expand( subs(z=z^2,G) - z*subs(z=z^2,H) ): Q := rem(E,(z-1)^L,z): lprint(`// Delay Conditions`); k := 'k': for k from 0 to 6 do lprint(coeff(Q,z,k),`,`); od; # ---------- Define Delay ---------- A := subs(z=1,diff(H,z)): lprint(A,`- 9/4 - A,`); lprint(0,`;`); writeto(terminal); interface(screenwidth=80);