> restart: > with(LinearAlgebra); with(PolynomialTools); with(ListTools); [&x, Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm, CharacteristicMatrix, CharacteristicPolynomial, Column, ColumnDimension, ColumnOperation, ColumnSpace, CompanionMatrix, ConditionNumber, ConstantMatrix, ConstantVector, Copy, CreatePermutation, CrossProduct, DeleteColumn, DeleteRow, Determinant, Diagonal, DiagonalMatrix, Dimension, Dimensions, DotProduct, EigenConditionNumbers, Eigenvalues, Eigenvectors, Equal, ForwardSubstitute, FrobeniusForm, GaussianElimination, GenerateEquations, GenerateMatrix, GetResultDataType, GetResultShape, GivensRotationMatrix, GramSchmidt, HankelMatrix, HermiteForm, HermitianTranspose, HessenbergForm, HilbertMatrix, HouseholderMatrix, IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar, IsUnitary, JordanBlockMatrix, JordanForm, LA_Main, LUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd, MatrixExponential, MatrixFunction, MatrixInverse, MatrixMatrixMultiply, MatrixNorm, MatrixPower, MatrixScalarMultiply, MatrixVectorMultiply, MinimalPolynomial, Minor, Modular, Multiply, NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot, PopovForm, QRDecomposition, RandomMatrix, RandomVector, Rank, RationalCanonicalForm, ReducedRowEchelonForm, Row, RowDimension, RowOperation, RowSpace, ScalarMatrix, ScalarMultiply, ScalarVector, SchurForm, SingularValues, SmithForm, SubMatrix, SubVector, SumBasis, SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, UnitVector, VandermondeMatrix, VectorAdd, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, ZeroVector, Zip] [CoefficientList, CoefficientVector, GcdFreeBasis, GreatestFactorialFactorization, Hurwitz, IsSelfReciprocal, MinimalPolynomial, PDEToPolynomial, PolynomialToPDE, ShiftEquivalent, ShiftlessDecomposition, Shorten, Shorter, Sort, Split, Splits, Translate] [BinaryPlace, BinarySearch, Categorize, DotProduct, Enumerate, FindRepetitions, Flatten, FlattenOnce, Group, Interleave, Join, JoinSequence, MakeUnique, Occurrences, Pad, PartialSums, Reverse, Rotate, Search, SearchAll, Sorted, Split, Transpose] > m := 6: f := sum('a'['i']*'x'^'i', 'i'=0..m); 2 3 4 5 f := a[0] + a[1] x + a[2] x + a[3] x + a[4] x + a[5] x 6 + a[6] x > n := 4: g := sum('b'['i']*'x'^'i', 'i'=0..n); 2 3 4 g := b[0] + b[1] x + b[2] x + b[3] x + b[4] x > S := SylvesterMatrix(f,g,'x'); S := [a[6] , a[5] , a[4] , a[3] , a[2] , a[1] , a[0] , 0 , 0 , 0] [0 , a[6] , a[5] , a[4] , a[3] , a[2] , a[1] , a[0] , 0 , 0] [0 , 0 , a[6] , a[5] , a[4] , a[3] , a[2] , a[1] , a[0] , 0] [0 , 0 , 0 , a[6] , a[5] , a[4] , a[3] , a[2] , a[1] , a[0]] [b[4] , b[3] , b[2] , b[1] , b[0] , 0 , 0 , 0 , 0 , 0] [0 , b[4] , b[3] , b[2] , b[1] , b[0] , 0 , 0 , 0 , 0] [0 , 0 , b[4] , b[3] , b[2] , b[1] , b[0] , 0 , 0 , 0] [0 , 0 , 0 , b[4] , b[3] , b[2] , b[1] , b[0] , 0 , 0] [0 , 0 , 0 , 0 , b[4] , b[3] , b[2] , b[1] , b[0] , 0] [0 , 0 , 0 , 0 , 0 , b[4] , b[3] , b[2] , b[1] , b[0]] > quo(f,g,'x','r'); 2 a[6] x (b[4] a[5] - a[6] b[3]) x ------- + ------------------------- b[4] 2 b[4] 2 2 b[4] a[4] - b[4] a[6] b[2] - b[3] b[4] a[5] + b[3] a[6] + --------------------------------------------------------- 3 b[4] > r; 2 2 3 2 (-b[3] b[4] a[4] + b[3] b[4] a[5] - b[3] a[6] - b[4] a[6] b[1] 3 2 3 + 2 b[3] b[4] a[6] b[2] + b[4] a[3] - b[2] b[4] a[5]) x / 3 2 2 / b[4] + (-b[4] a[6] b[0] - b[2] b[4] a[4] / 2 - b[2] b[3] a[6] + b[4] b[1] a[6] b[3] 2 3 + b[2] b[3] b[4] a[5] - b[1] b[4] a[5] + b[4] a[2] 2 2 / 3 2 + b[2] b[4] a[6]) x / b[4] + (-b[1] b[3] a[6] / 3 2 + b[1] b[4] a[6] b[2] + b[4] a[1] - b[1] b[4] a[4] + b[1] b[3] b[4] a[5] + b[4] b[0] a[6] b[3] 2 / 3 3 - b[0] b[4] a[5]) x / b[4] + (b[4] a[0] / 2 2 + b[0] b[3] b[4] a[5] - b[0] b[4] a[4] - b[0] b[3] a[6] / 3 + b[0] b[4] a[6] b[2]) / b[4] / > gcd(f,g); 1 > w1 := sum('u'['i']*'x'^'i',i=0..n-1); w2 := > sum('v'['i']*'x'^'i',i=0..m-1); 2 3 w1 := u[0] + u[1] x + u[2] x + u[3] x 2 3 4 5 w2 := v[0] + v[1] x + v[2] x + v[3] x + v[4] x + v[5] x > w := Vector['row']([Reverse(CoefficientList(w1,'x')), > Reverse(CoefficientList(w2,'x'))]); w := [u[3], u[2], u[1], u[0], v[5], v[4], v[3], v[2], v[1], v[0]] > wtimesStrans:=convert(w . S, Vector['column']); wtimesStrans := [u[3] a[6] + v[5] b[4]] [u[3] a[5] + u[2] a[6] + v[5] b[3] + v[4] b[4]] [u[3] a[4] + u[2] a[5] + u[1] a[6] + v[5] b[2] + v[4] b[3] + v[3] b[4]] [u[3] a[3] + u[2] a[4] + u[1] a[5] + u[0] a[6] + v[5] b[1] + v[4] b[2] + v[3] b[3] + v[2] b[4]] [u[3] a[2] + u[2] a[3] + u[1] a[4] + u[0] a[5] + v[5] b[0] + v[4] b[1] + v[3] b[2] + v[2] b[3] + v[1] b[4]] [u[3] a[1] + u[2] a[2] + u[1] a[3] + u[0] a[4] + v[4] b[0] + v[3] b[1] + v[2] b[2] + v[1] b[3] + v[0] b[4]] [u[3] a[0] + u[2] a[1] + u[1] a[2] + u[0] a[3] + v[3] b[0] + v[2] b[1] + v[1] b[2] + v[0] b[3]] [u[2] a[0] + u[1] a[1] + u[0] a[2] + v[2] b[0] + v[1] b[1] + v[0] b[2]] [u[1] a[0] + u[0] a[1] + v[1] b[0] + v[0] b[1]] [u[0] a[0] + v[0] b[0]] > coeffvec:=Vector(Reverse(CoefficientList(expand(w1*f+w2*g),'x'))); coeffvec := [u[3] a[6] + v[5] b[4]] [u[3] a[5] + u[2] a[6] + v[5] b[3] + v[4] b[4]] [u[3] a[4] + u[2] a[5] + u[1] a[6] + v[5] b[2] + v[4] b[3] + v[3] b[4]] [u[3] a[3] + u[2] a[4] + u[1] a[5] + u[0] a[6] + v[5] b[1] + v[4] b[2] + v[3] b[3] + v[2] b[4]] [u[3] a[2] + u[2] a[3] + u[1] a[4] + u[0] a[5] + v[5] b[0] + v[4] b[1] + v[3] b[2] + v[2] b[3] + v[1] b[4]] [u[3] a[1] + u[2] a[2] + u[1] a[3] + u[0] a[4] + v[4] b[0] + v[3] b[1] + v[2] b[2] + v[1] b[3] + v[0] b[4]] [u[3] a[0] + u[2] a[1] + u[1] a[2] + u[0] a[3] + v[3] b[0] + v[2] b[1] + v[1] b[2] + v[0] b[3]] [u[2] a[0] + u[1] a[1] + u[0] a[2] + v[2] b[0] + v[1] b[1] + v[0] b[2]] [u[1] a[0] + u[0] a[1] + v[1] b[0] + v[0] b[1]] [u[0] a[0] + v[0] b[0]] > wtimesStrans-coeffvec; [0] [ ] [0] [ ] [0] [ ] [0] [ ] [0] [ ] [0] [ ] [0] [ ] [0] [ ] [0] [ ] [0] >