factor
因数分解
説明
は、1 つ以上の F
= factor(___,Name,Value
)Name,Value
引数のペアによって指定された追加オプションを使用します。この構文では、前の構文の入力引数のいずれも使用できます。
例
整数の因数分解
F = factor(823429252)
F = 2 2 59 283 12329
flintmax
よりも大きい整数を因数分解するには、sym
を使用して整数をシンボリック オブジェクトに変換します。その後、引用符内に数値を入れて正確に表現します。
F = factor(sym('82342925225632328'))
F = [ 2, 2, 2, 251, 401, 18311, 5584781]
負の整数を因数分解するには、sym
を使用してシンボリック オブジェクトに変換します。
F = factor(sym(-92465))
F = [ -1, 5, 18493]
大きな数の素因数分解
41758540882408627201
の素因数分解を行います。この整数は flintmax
よりも大きいので、sym
を使用してシンボリック オブジェクトに変換し、整数を引用符内に入れて正確に表現します。
n = sym('41758540882408627201'); factor(n)
ans = [ 479001599, 87178291199]
シンボリックな分数の因数分解
sym
を使用して分数 112/81
をシンボリック オブジェクトに変換し、因数分解します。
F = factor(sym(112/81))
F = [ 2, 2, 2, 2, 7, 1/3, 1/3, 1/3, 1/3]
多項式の因数分解
多項式 x^6-1
を因数分解します。
syms x
F = factor(x^6-1)
F = [ x - 1, x + 1, x^2 + x + 1, x^2 - x + 1]
多項式 y^6-x^6
を因数分解します。
syms y
F = factor(y^6-x^6)
F = [ -1, x - y, x + y, x^2 + x*y + y^2, x^2 - x*y + y^2]
指定された変数を含む因子の分離
y^2*x^2
を因数分解して x
を含む因子を求めます。
syms x y F = factor(y^2*x^2,x)
F = [ y^2, x, x]
factor
は、x
を含まないすべての因子を最初の要素にまとめます。F
の残りの要素には、x
を含む既約因子が含まれます。
多項式 y
を因数分解してシンボリック変数 b
および c
を含む因子を求めます。
syms a b c d y = -a*b^5*c*d*(a^2 - 1)*(a*d - b*c); F = factor(y,[b c])
F = [ -a*d*(a - 1)*(a + 1), b, b, b, b, b, c, a*d - b*c]
factor
は、b
または c
を含まないすべての因子を F
の最初の要素にまとめます。F
の残りの要素には、b
または c
を含む y
の既約因子が含まれます。
因数分解のモードの選択
引数 FactorMode
を使用して、特定の因数分解モードを選択します。
因数分解のモードを指定しないで、ある式を因数分解します。既定では、factor
は有理数の範囲の因数分解を行います。このモードでは、factor
は有理数が厳密にシンボリック型を保持するようにします。
syms x factor(x^3 + 2, x)
ans = x^3 + 2
同じ式を因数分解しますが、今度は実数の範囲の因数分解を行います。このモードでは、式を実数係数を使用した 1 次と 2 次の既約多項式に因数分解します。また、すべての数値を浮動小数点数に変換します。
factor(x^3 + 2, x, 'FactorMode', 'real')
ans = [ x + 1.2599210498948731647672106072782,... x^2 - 1.2599210498948731647672106072782*x + 1.5874010519681994747517056392723]
複素数の範囲の因数分解を使用して、この式を因数分解します。このモードでは、factor
は 2 次多項式を複素係数をもつ 1 次式に簡約します。 このモードでは、すべての数値は浮動小数点数に変換されます。
factor(x^3 + 2, x, 'FactorMode', 'complex')
ans = [ x + 1.2599210498948731647672106072782,... x - 0.62996052494743658238360530363911 + 1.0911236359717214035600726141898i,... x - 0.62996052494743658238360530363911 - 1.0911236359717214035600726141898i]
制約なしの因数分解モードを使用して、この式を因数分解します。このモードでは、2 次多項式を複素係数をもつ 1 次式に簡約して、式を 1 次式に因数分解します。このモードでは、有理数は厳密なシンボリック型が保持されます。
factor(x^3 + 2, x, 'FactorMode', 'full')
ans = [ x + 2^(1/3),... x - 2^(1/3)*((3^(1/2)*1i)/2 + 1/2),... x + 2^(1/3)*((3^(1/2)*1i)/2 - 1/2)]
vpa
を使用して、結果を浮動小数点数で近似します。式が変数 x
以外にシンボリック パラメーターを含まないので、結果は複素数の範囲の因数分解と同じになります。
vpa(ans)
ans = [ x + 1.2599210498948731647672106072782,... x - 0.62996052494743658238360530363911 - 1.0911236359717214035600726141898i,... x - 0.62996052494743658238360530363911 + 1.0911236359717214035600726141898i]
RootOf
を含む結果を近似する
制約なしの因数分解のモードでは、factor
は RootOf
で表される多項式の根のシンボリックな和を返すこともあります。
次の式を因数分解します。
syms x s = factor(x^3 + x - 3, x, 'FactorMode','full')
s = [ x - root(z^3 + z - 3, z, 1),... x - root(z^3 + z - 3, z, 2),... x - root(z^3 + z - 3, z, 3)]
vpa
を使用して、結果を浮動小数点数で近似します。
vpa(s)
ans = [ x - 1.2134116627622296341321313773815,... x + 0.60670583138111481706606568869074 + 1.450612249188441526515442203395i,... x + 0.60670583138111481706606568869074 - 1.450612249188441526515442203395i]
入力引数
出力引数
ヒント
flintmax
よりも大きい整数を因数分解するには、整数をsym
でラップします。その後、整数を引用符内に入れて正確に表現します (たとえば、sym('465971235659856452')
)。負の整数を因数分解するには、整数を
sym
でラップします (たとえば、sym(-3)
)。
バージョン履歴
R2006a より前に導入