⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 polynomialmatricestest.nb

📁 单模多项式矩阵的分解算法
💻 NB
📖 第 1 页 / 共 3 页
字号:
\>", "Text",
  Editable->True,
  Evaluatable->False]
}, Open  ]],

Cell[CellGroupData[{

Cell["Diophantine Equations ", "Section",
  Editable->True,
  Evaluatable->False],

Cell["\<\
The degree of a polynomial vector is the maximun degree of its \
entries.
The function DiophantineSolve finds two polynomial matrices X, Y (if any) of \
minimal column degree that solve the equation a.X+b.Y==c, where a, b, c, are \
polynomial matrices with the same number of rows\
\>", "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell[BoxData[{
    \(\(a = {{1, 1}, {0, 1}};\)\), "\[IndentingNewLine]", 
    \(\(b = {{1 - x, 2  x}, {1 - x, x}};\)\), "\[IndentingNewLine]", 
    \(\(c = {{1 - x}, {x\^2}};\)\), "\[IndentingNewLine]", 
    \(DiophantineSolve[a, b, c]\)}], "Input"],

Cell[BoxData[
    \({{{1}, {3}}, {{\(-3\) - 2\ x}, {\(-1\) - x}}}\)], "Output"]
}, Open  ]],

Cell["\<\
It is also possible to compute ALL the minimal column degree \
solutions of the diophantine equation: it is sufficient to specify one more \
variable that will be used to describe the free variables of the result\
\>", \
"Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell["DiophantineSolve[a,b,c,x,t]", "Input",
  Editable->True],

Cell[BoxData[
    \({{{1 + x\ t[1]}, {3 + t[1] - t[2] + x\ t[2]}}, {{\(-3\) - 2\ x - t[1] + 
            t[2]}, {\(-1\) - x - t[1]}}}\)], "Output"]
}, Open  ]],

Cell["\<\
For every real or complex value of the t[i]'s this is a minimal \
column degree solution of the diophantine equation.
The following is an example of a diophantine equation which has no \
solution:\
\>", "Text",
  Editable->True,
  Evaluatable->False]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
    \(DiophantineSolve[{{x\^2, x}}, {{x\^3 + x}}, {{1}}]\)], "Input"],

Cell[BoxData[
    \({{{}}, {{}}}\)], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell["Some other useful functions", "Section",
  Editable->True,
  Evaluatable->False],

Cell["\<\
A matrix is said to be column reduced if the matrix of the leading \
coefficients has full column rank. A polynomial matrix can always be put in \
column reduced form using only elementary operations on the columns; \
PolynomialColumnReduce computes the unimodular matrix that represents these \
elementary operations. \
\>", "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell[BoxData[{
    \(\(m = {{x\^2 - 1, x\^3}, {1, x - 1}, {2  x, 
            1}};\)\), "\[IndentingNewLine]", 
    \(PolynomialColumnReduce[m]\)}], "Input"],

Cell[BoxData[
    \({{1, \(-x\)}, {0, 1}}\)], "Output"]
}, Open  ]],

Cell["\<\
To put the matrix m in column reduced form it is sufficient to \
postmultiply it by the unimodular matrix just computed\
\>", "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell["Expand[m.PolynomialColumnReduce[m]]", "Input",
  Editable->True],

Cell[BoxData[
    \({{\(-1\) + x\^2, x}, {1, \(-1\)}, {2\ x, 1 - 2\ x\^2}}\)], "Output"]
}, Open  ]],

Cell["\<\
PolynomialRowReduce[m] computes a unimodular matrix U such that U.m \
is row reduced.
The function Rank[m] returns the rank of matrix m and EliminateDep[m] \
eliminates the dependent rows of m:\
\>", "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell[BoxData[{
    \(Rank[m = {{x\^2 - 1, x\^2}, {1, 0}, {x, 1}}]\), "\[IndentingNewLine]", 
    \(EliminateDep[m]\)}], "Input"],

Cell[BoxData[
    \(2\)], "Output"],

Cell[BoxData[
    \({{1, 0}, {x, 1}}\)], "Output"]
}, Open  ]],

Cell["\<\
The function PolyExtendedGCD is the polynomial version of \
ExtendedGCD:\
\>", "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell["?PolyExtendedGCD", "Input",
  Editable->True],

Cell[BoxData[
    \("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."\)], "Print"],

Cell[CellGroupData[{

Cell[BoxData[{
    \(PolynomialGCD[x\^2 - 1, x\^2 + 2  x + 1]\), "\[IndentingNewLine]", 
    \(PolyExtendedGCD[{x\^2 - 1, x\^2 + 2  x + 1}]\)}], "Input"],

Cell[BoxData[
    \(1 + x\)], "Output"],

Cell[BoxData[
    \({1 + x, {\(-\(1\/2\)\), 1\/2}}\)], "Output"]
}, Open  ]]
}, Open  ]],

Cell["\<\
PolynomialDegree[m,x] returns the degree of a matrix (or vector) \
m\
\>", "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell[BoxData[
    \(PolynomialDegree[{{x - 1, 0}, {x\^3 - x\^2 + 1, x}}]\)], "Input"],

Cell[BoxData[
    \(3\)], "Output"]
}, Open  ]],

Cell[TextData[{
  "ExtPolQ[list,x] yields True if all the entries of \"list\" are polynomials \
in x or in ",
  Cell[BoxData[
      \(TraditionalForm\`x\^\(-1\)\)]]
}], "Text",
  Editable->True,
  Evaluatable->False],

Cell[CellGroupData[{

Cell[BoxData[{
    \(ExtPolQ[{x, x\^\(-1\)}, x]\), "\[IndentingNewLine]", 
    \(ExtPolQ[{x\^\(-3\), 1/x, 1}, x]\)}], "Input"],

Cell[BoxData[
    \(False\)], "Output"],

Cell[BoxData[
    \(True\)], "Output"]
}, Open  ]]
}, Open  ]]
},
FrontEndVersion->"5.2 for Macintosh",
ScreenRectangle->{{0, 1394}, {0, 878}},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{893, 566},
WindowMargins->{{Automatic, 153}, {Automatic, 3}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowSelection->True,
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False}
]

(*******************************************************************
Cached data follows.  If you edit this Notebook file directly, not
using Mathematica, you must remove the line containing CacheID at
the top of  the file.  The cache data will then be recreated when
you save this file from within Mathematica.
*******************************************************************)

(*CellTagsOutline
CellTagsIndex->{}
*)

(*CellTagsIndex
CellTagsIndex->{}
*)

(*NotebookFileOutline
Notebook[{

Cell[CellGroupData[{
Cell[1776, 53, 142, 7, 88, "Title",
  Evaluatable->False],
Cell[1921, 62, 50, 1, 28, "Subsubsection"],
Cell[1974, 65, 132, 5, 30, "Text",
  Evaluatable->False],
Cell[2109, 72, 52, 1, 28, "Subsubsection"],
Cell[2164, 75, 146, 5, 30, "Text",
  Evaluatable->False],
Cell[2313, 82, 186, 6, 30, "Text",
  Evaluatable->False],
Cell[2502, 90, 239, 7, 30, "Text",
  Evaluatable->False],
Cell[2744, 99, 208, 6, 30, "Text",
  Evaluatable->False],
Cell[2955, 107, 59, 1, 28, "Subsubsection"],
Cell[3017, 110, 199, 6, 32, "Text"],
Cell[3219, 118, 139, 4, 27, "Input"],
Cell[3361, 124, 73, 2, 27, "Input"],
Cell[3437, 128, 90, 2, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[3552, 134, 76, 2, 27, "Input"],
Cell[3631, 138, 14217, 347, 155, "Print"]
}, Open  ]],
Cell[17863, 488, 111, 2, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[17999, 494, 92, 2, 69, "Section",
  Evaluatable->False],
Cell[18094, 498, 144, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[18263, 507, 119, 2, 31, "Input"],
Cell[18385, 511, 378, 11, 59, "Output"]
}, Open  ]],
Cell[18778, 525, 150, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[18953, 534, 63, 1, 27, "Input"],
Cell[19019, 537, 208, 3, 29, "Output"]
}, Open  ]],

Cell[CellGroupData[{
Cell[19264, 545, 50, 1, 27, "Input"],
Cell[19317, 548, 38, 1, 27, "Output"],
Cell[19358, 551, 31, 0, 30, "Text"],

Cell[CellGroupData[{
Cell[19414, 555, 41, 1, 27, "Input"],
Cell[19458, 558, 40, 1, 27, "Output"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[19537, 564, 161, 6, 46, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[19723, 574, 123, 2, 31, "Input"],
Cell[19849, 578, 362, 11, 59, "Output"]
}, Open  ]],
Cell[20226, 592, 146, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[20397, 601, 163, 5, 57, "Input"],
Cell[20563, 608, 371, 11, 59, "Output"],
Cell[20937, 621, 1273, 35, 59, "Output"],
Cell[22213, 658, 38, 1, 27, "Output"]
}, Open  ]],

Cell[CellGroupData[{
Cell[22288, 664, 265, 5, 59, "Input"],
Cell[22556, 671, 592, 14, 123, "Output"],
Cell[23151, 687, 2417, 55, 295, "Output"],
Cell[25571, 744, 38, 1, 27, "Output"]
}, Open  ]],

Cell[CellGroupData[{
Cell[25646, 750, 212, 4, 42, "Input"],
Cell[25861, 756, 362, 10, 63, "Output"]
}, Open  ]],

Cell[CellGroupData[{
Cell[26260, 771, 136, 5, 42, "Input"],
Cell[26399, 778, 1161, 32, 63, "Output"],
Cell[27563, 812, 38, 1, 27, "Output"]
}, Open  ]],
Cell[27616, 816, 258, 6, 46, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[27899, 826, 105, 2, 31, "Input"],
Cell[28007, 830, 170, 3, 21, "Message"],
Cell[28180, 835, 41, 1, 27, "Output"]
}, Open  ]],
Cell[28236, 839, 74, 2, 30, "Text",
  Evaluatable->False]
}, Open  ]],

Cell[CellGroupData[{
Cell[28347, 846, 49, 1, 27, "Input"],
Cell[28399, 849, 117, 2, 29, "Output"]
}, Open  ]],

Cell[CellGroupData[{
Cell[28553, 856, 67, 2, 69, "Section",
  Evaluatable->False],
Cell[28623, 860, 276, 7, 46, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[28924, 871, 198, 4, 48, "Input"],
Cell[29125, 877, 82, 1, 29, "Output"],
Cell[29210, 880, 38, 1, 27, "Output"]
}, Open  ]],
Cell[29263, 884, 163, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[29451, 893, 73, 4, 42, "Input"],
Cell[29527, 899, 64, 1, 29, "Output"],
Cell[29594, 902, 48, 1, 27, "Output"]
}, Open  ]],
Cell[29657, 906, 139, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[29821, 915, 231, 5, 64, "Input"],
Cell[30055, 922, 54, 1, 27, "Output"],
Cell[30112, 925, 44, 1, 27, "Output"],
Cell[30159, 928, 50, 1, 27, "Output"]
}, Open  ]],
Cell[30224, 932, 140, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[30389, 941, 84, 1, 31, "Input"],
Cell[30476, 944, 63, 1, 27, "Output"]
}, Open  ]],
Cell[30554, 948, 138, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[30717, 957, 109, 2, 31, "Input"],
Cell[30829, 961, 38, 1, 27, "Output"]
}, Open  ]],
Cell[30882, 965, 191, 5, 30, "Text",
  Evaluatable->False]
}, Open  ]],

Cell[CellGroupData[{
Cell[31110, 975, 81, 2, 69, "Section",
  Evaluatable->False],
Cell[31194, 979, 344, 8, 62, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[31563, 991, 249, 4, 80, "Input"],
Cell[31815, 997, 79, 1, 27, "Output"]
}, Open  ]],
Cell[31909, 1001, 278, 7, 46, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[32212, 1012, 62, 1, 27, "Input"],
Cell[32277, 1015, 147, 2, 27, "Output"]
}, Open  ]],
Cell[32439, 1020, 260, 7, 46, "Text",
  Evaluatable->False]
}, Open  ]],

Cell[CellGroupData[{
Cell[32736, 1032, 83, 1, 31, "Input"],
Cell[32822, 1035, 46, 1, 27, "Output"]
}, Open  ]],

Cell[CellGroupData[{
Cell[32905, 1041, 86, 2, 69, "Section",
  Evaluatable->False],
Cell[32994, 1045, 383, 8, 46, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[33402, 1057, 157, 3, 48, "Input"],
Cell[33562, 1062, 55, 1, 27, "Output"]
}, Open  ]],
Cell[33632, 1066, 183, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[33840, 1075, 70, 1, 27, "Input"],
Cell[33913, 1078, 88, 1, 29, "Output"]
}, Open  ]],
Cell[34016, 1082, 257, 7, 46, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[34298, 1093, 128, 2, 48, "Input"],
Cell[34429, 1097, 35, 1, 27, "Output"],
Cell[34467, 1100, 50, 1, 27, "Output"]
}, Open  ]],
Cell[34532, 1104, 136, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[34693, 1113, 51, 1, 27, "Input"],
Cell[34747, 1116, 197, 3, 39, "Print"],

Cell[CellGroupData[{
Cell[34969, 1123, 153, 2, 51, "Input"],
Cell[35125, 1127, 39, 1, 27, "Output"],
Cell[35167, 1130, 64, 1, 42, "Output"]
}, Open  ]]
}, Open  ]],
Cell[35258, 1135, 132, 5, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[35415, 1144, 85, 1, 31, "Input"],
Cell[35503, 1147, 35, 1, 27, "Output"]
}, Open  ]],
Cell[35553, 1151, 216, 7, 30, "Text",
  Evaluatable->False],

Cell[CellGroupData[{
Cell[35794, 1162, 126, 2, 51, "Input"],
Cell[35923, 1166, 39, 1, 27, "Output"],
Cell[35965, 1169, 38, 1, 27, "Output"]
}, Open  ]]
}, Open  ]]
}
]
*)



(*******************************************************************
End of Mathematica Notebook file.
*******************************************************************)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -