Transformation of matrix into an arrow shape

arrow [1]

Find parameters of four rotations in order to transform a matrix with specific shape into a matrix with an arrow shape. Related to a filter design problem.

For more information, contact Laurent.Baratchart@sophia.inria.fr or Jean-Paul.Marmorat@sophia.inria.fr.

Characteristics:




Example 1:
with(linalg): alias(Id=*()):

F := matrix(6,6,
[ f11, f12,   0,   0,   0,   0, 
  f12, f22, f23,   0,   0,   0, 
    0, f23, f33, f34,   0, f36, 
    0,   0, f34, f44, f45, f46, 
    0,   0,   0, f45, f55, f56, 
    0,   0, f36, f46, f56, f66  ]):

# Change of basis
w1 := matrix(6,1,[0,  c1,         0,        s1,      0,  0]):
w2 := matrix(6,1,[0,    0,   s3*c2,    s3*s2,    c3,  0]):
w3 := matrix(6,1,[0,    0,         0,        c4,    s4,  0]):

P1 := evalm(Id - 2 * w1* transpose(w1)) :
P2 := evalm(Id - 2 * w2* transpose(w2)) :
P3 := evalm(Id - 2 * w3* transpose(w3)) :
P := evalm( P1* P2* P3 ):

X :=  evalm( P*  F* transpose(P) ):

A := matrix(6,6,
[ a11, a12,   0, a14,   0,   0, 
  a12, a22, a23,   0,   0,   0, 
    0, a23, a33, a34,   0, a36, 
  a14,   0, a34, a44, a45,   0, 
    0,   0,   0, a45, a55, a56, 
    0,   0, a36,   0, a56, a66  ]):
# Equations
S := c12 + s12 - 1, 
     c22 + s22 - 1, 
     c32 + s32 - 1, 
     c42 + s42 - 1:

for i to rowdim(X) do
  for j to coldim(X) do
   if (evalb(A[i,j]=0)) then 
     S := S, expand(numer(simplify(X[i,j]))) fi;
  od:
od:

Parm:= [f11, f12, f22, f23,f33, f34, f36, f44, f45, f46, f55, f56, f66 ];
Var := [c1, s1, c2, s2, c4, s4, c3, s3];
S   := remove(has,[S],0);

References

[1]
D. Bini and B. Mourrain. Polynomial test suite. 1996.

This document was translated from LATEX by HEVEA.