Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - 日本語


sylm

シルベスタ行列

呼び出し手順

S = sylm(a, b)

パラメータ

a,b

実数または複素数を係数とする2つの多項式.

S

実数または複素数の正方行列, サイズは degree(a*b) です.

説明

sylm(a,b) は,多項式aおよびb に関連するシルベスタ行列,すなわち, 以下のような行列Sを出力します:

coeff( a*x + b*y )' = S * [coeff(x)';coeff(y)'].

a およびbが規約分解多項式の場合,

rank(sylm(a,b))=degree(a)+degree(b)) となります. また,以下の命令は,

u = sylm(a,b) \ eye(na+nb,1)
x = poly(u(1:nb),'z','coeff')
y = poly(u(nb+1:na+nb),'z','coeff')

べズー分解,つまり, a*x+b*y = 1となるような最小次数の x および yを計算します.

x = poly(0,"x");
y = poly([1, 2, 3], "x", "coeff")
sylm(x, y)
--> x = poly(0, "x");
--> y = poly([1, 2, 3], "x","coeff")
 y  =
  1 +2x +3x²

--> sylm(x, y)
 ans  =
   0.   0.   1.
   1.   0.   2.
   0.   1.   3.

Resultant of two polynomials: It can be defined as the determinant of the Sylvester matrix of the two polynomials. It is null if and only if both polynomials have at least one common root.

a = poly([1 2 3 4], "x", "roots")
b = poly([-2 -1 5], "x", "roots")
det(sylm(a, b))

// Simpler case:
det(sylm((%s+1)^5, (%s+3)^3))
(-3 -(-1))^(5*3)     // Expected resultant
--> a = poly([1 2 3 4],"x","roots")
 a  =
  24 -50x +35x² -10x³ +x⁴

--> b = poly([-2 -1 5],"x","roots")
 b  =
  -10 -13x -2x² +x³

--> det(sylm(a,b))
 ans  =
   1036800.0

--> // Simpler case:
--> det(sylm((%s+1)^5,(%s+3)^3))
 ans  =
  -32768.000

--> (-3 -(-1))^(5*3)     // Expected resultant
 ans  =
  -32768.

参照

  • bezout — Bezout法により、2つの多項式または2つの整数の最大公約数を計算します
  • diophant — Solves the diophantine (Bezout) equation p1*x1 + p2*x2 = b
Report an issue
<< simp_mode Polynomials varn >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:36:18 CEST 2023