📄 polynomialmatrices.nb
字号:
(************** Content-type: application/mathematica **************
CreatedBy='Mathematica 5.2'
Mathematica-Compatible Notebook
This notebook can be used with any Mathematica-compatible
application, such as Mathematica, MathReader or Publicon. The data
for the notebook starts with the line containing stars above.
To get the notebook into a Mathematica-compatible application, do
one of the following:
* Save the data starting with the line of stars above into a file
with a name ending in .nb, then open the file inside the
application;
* Copy the data starting with the line of stars above to the
clipboard, then use the Paste menu command inside the application.
Data for notebooks contains only printable 7-bit ASCII and can be
sent directly in email or through ftp in text mode. Newlines can be
CR, LF or CRLF (Unix, Macintosh or MS-DOS style).
NOTE: If you modify the data for this notebook not in a Mathematica-
compatible application, you must delete the line below containing
the word CacheID, otherwise Mathematica-compatible applications may
try to use invalid cache data.
For more information on notebooks and Mathematica-compatible
applications, contact Wolfram Research:
web: http://www.wolfram.com
email: info@wolfram.com
phone: +1-217-398-0700 (U.S.)
Notebook reader applications are available free of charge from
Wolfram Research.
*******************************************************************)
(*CacheID: 232*)
(*NotebookFileLineBreakTest
NotebookFileLineBreakTest*)
(*NotebookOptionsPosition[ 71201, 1496]*)
(*NotebookOutlinePosition[ 71955, 1522]*)
(* CellTagsIndexPosition[ 71911, 1518]*)
(*WindowFrame->Normal*)
Notebook[{
Cell[CellGroupData[{
Cell["Polynomial Matrices", "Title"],
Cell[CellGroupData[{
Cell["Author", "Subsubsection"],
Cell["\<\
Adriano Pascoletti
Dipartimento di Matematica e Informatica
Universit\[AGrave] di Udine\
\>", "Text"],
Cell["v. 2.1. december 1999", "SmallText"]
}, Open ]],
Cell[CellGroupData[{
Cell["Summary", "Subsubsection"],
Cell[TextData[{
"This package provides some useful and efficient functions for treating \
polynomial matrices (i.e. matrices whose entries are univariate polynomials \
with rational or symbolic coefficients). The supplied functions compute the \
classical Smith, Hermite and McMillan forms. Each function has two versions: \
one returning only the form and one returning \nthe form and the unimodular \
transformations leading to it. \nSeveral other functions are defined: \
computation of left and right GCD\[CloseCurlyQuote]s, \
lcm\[CloseCurlyQuote]s, quotients, remainders, row/column proper forms, full \
rank and coprimality tests, extended polynomial GCD, solution of diophantine \
equations. \n",
"All functions work on matrices of polynomials in z or ",
Cell[BoxData[
\(TraditionalForm\`z\^\(-1\)\)]],
".",
"\n"
}], "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Notebook version", "Subsubsection"],
Cell["2.1", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell[TextData[{
StyleBox["Mathematica",
FontSlant->"Italic"],
" Version"
}], "Subsubsection"],
Cell["3.x and 4.0", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["History", "Subsubsection"],
Cell[TextData[{
"This package supersedes package 0207-751. \nVersion 2.1 removes some \
incompatibilities between ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" 2.2 and ",
StyleBox["Mathematica",
FontSlant->"Italic"],
" 3.x and 4.0.\nVersion 2.0 is the result of a work with M. Anziutti."
}], "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Keywords", "Subsubsection"],
Cell["\<\
Polynomials, polynomial matrices, non commutative algebra, Smith \
form, Hermite Form, McMillan Form, diophantine equations, coprimality, \
properness, greatest common divisors, least common multiples.\
\>", "Text"]
}, Open ]],
Cell[CellGroupData[{
Cell["Interface", "Section"],
Cell[CellGroupData[{
Cell["Package context", "Subsubsection"],
Cell["BeginPackage[\"PolynomialMatrices`\"]", "Input",
PageWidth->Infinity,
InitializationCell->True,
ShowSpecialCharacters->False]
}, Open ]],
Cell[CellGroupData[{
Cell["Usage messages", "Subsubsection"],
Cell[BoxData[
\(\(DiophantineSolve::usage = "\<DiophantineSolve[a,b,c,x] takes three \
matrices a,b,c of polynomials in the indeterminate x with the same number of \
rows and returns a minimum column-degree polynomial solution {X,Y} of the \
equation a.X+b.Y==c. When no solution exists the result is { {{}},{{}} }. In \
order to get all the minimum column degree solutions {X,Y}, the user must \
specify a name for the free variables, e.g. t in DiophantineSolve[a,b,c,x,t].\
\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(EliminateDep::usage = "\<EliminateDep[m,x] eliminates from m (matrix \
of polynomials in x) the dependent rows and returns a matrix with full row \
rank.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(ExtendedHermiteForm::usage = "\<HermiteForm[a,x] yields the Hermite \
form h of a matrix a of polynomials in x. The result is a list {h,u} s.t. \
h=u.a with u unimodular.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(ExtendedMcMillanForm::usage = "\<ExtendedMcMillanForm[a,x] returns a \
list {m,u,v} s.t. m=u.a.v. m is the McMillan form of a matrix a of rational \
functions in x, and u,v are unimodular matrives.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(ExtendedSmithForm::usage = "\<ExtendedSmithForm[a,x] yields the Smith \
form s of the matrix a of polynomials in x, together with two unimodular \
matrices u, v such that s=u.a.v. The result is a list {s,u,v}.\>";\)\)], \
"Input",
InitializationCell->True],
Cell[BoxData[
\(\(ExtPolQ::usage = "\<ExtPolQ[l,x] yields True if all the components of \
the list l are polynomials in x or all in x^-1.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(FullRowRankQ::usage = "\<FullRowRankQ[a,x] yields True if a \
(polynomial matrix in x) has full row rank.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(HermiteForm::usage = "\<HermiteForm[m,x] yields the Hermite form of a \
matrix m of polynomials in x.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(LCoprime::usage = "\<LCoprime[a,b,x], (a,b polynomial matrices in x \
with the same number of rows) returns True if the two matrices are left \
coprime.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(LDivision::usage = "\<LDivision[a,b,x] takes two matrices of \
polynomials in x with the same number of rows, b square and regular, and \
returns a list {q,r} s.t. a=b.q+r with deg[r]<deg[b].\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(LGCD::usage = "\<LGCD[a,b,x] gives a left greatest common divisor of \
the matrices a and b of polynomials in x (a and b must have the same number \
of rows).\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(Llcm::usage = "\<Llcm[a,b,x] gives a left least common multiple of \
the matrices a and b whose elements are polynomials in x (a and b must have \
the same number of columns).\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(LQuotient::usage = "\<LQuotient[a,b,x] gives the left quotient of the \
matrices a (l x m) and b (l x l proper) of polynomials in x. The result is a \
matrix q such that a=b.q+r and deg[r]<deg[b].\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(LRemainder::usage = "\<LRemainder[a,b,x] returns the left remainder \
from dividing the matrices a (l x m) and b (l x l proper) of polynomials in \
x. The result is a matrix r such that a=b.q+r and deg[r]<deg[b].\>";\)\)], \
"Input",
InitializationCell->True],
Cell[BoxData[
\(\(McMillanForm::usage = "\< McMillanForm[a,x] takes a matrix of \
rational forms in x and returns its McMillan form.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(PolyExtendedGCD::usage = "\<PolyExtendedGCD[{a,b},x] takes two \
polynomials in x (a,b not both null) and returns a list {g,{r,s}}, where g is \
a monic GCD of a and b, and r,s s.t. g=ar+bs.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(PolynomialColumnReduce::usage = "\<PolynomialColumnReduce[m,x] takes \
a polynomial matrix in x with full column rank and returns a unimodular \
matrix u s.t. r=m.u is a column reduced polynomial matrix.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(PolynomialDegree::usage = "\<PolynomialDegree[m,x] returns the degree \
of a matrix m of polynomials in x.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(PolynomialRowReduce::usage = "\<PolynomialRowReduce[m,x] (m \
polynomial matrix in x with full row rank)rreturns a unimodular matrix u s.t. \
r=u.m is a row reduced polynomial matrix.\>";\)\)], "Input",
InitializationCell->True],
Cell[BoxData[
\(\(Rank::usage = "\<Rank[a] returns the rank of a matrix a.\>";\)\)], \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -