| MATLAB Function Reference | ![]() |
表示
G = gcd(A,B) [G,C,D] = gcd(A,B)
詳細
G = gcd(A,B)
は、整数配列 A と B の対応する要素同士の最大公約数を含んだ配列を出力します。便宜上、gcd(0,0) は値 0 を出力します。その他の入力に対しては、G には正の整数が出力されます。
[G,C,D] = gcd(A,B)
は、最大公約数を含んだ配列 G と、方程式 A(i).*C(i) + B(i).*D(i) = G(i) を満足する配列 C 、および、Dを出力します。これらは、Diophantine方程式を解いたり、初等エルミート変換を計算するために便利です。
例題
任意の2つの整数 a と b に対して、整数要素をもち、行列式が、つぎのような一つの2行2列の行列 E (ユニモジュラ行列)があります。
E * [a;b] = [g,0],
ここで、g は、コマンド [g,c,d] = gcd(a,b) によって出力されるようなa と b の最大公約数です。
c d -b/g a/g
[g,c,d] = gcd(2,4)
g =
2
c =
1
d =
0
E =
1 0
-2 1
つぎの例では、Diophantine方程式 30x + 56y = 8 を、x と y について解きます。
[g,c,d] = gcd(30,56)
g =
2
c =
-13
d =
7
30(-13) + 56(7) = 2,
30(-13*4) + 56(7*4) = 8
オリジナルの方程式とこれを比較すると、結果を調べることによって解が導かれます。
x = (-13*4) = -52; y = (7*4) = 28
参考
参考文献
Knuth, Donald, The Art of Computer Programming, Vol. 2, Addison-Wesley: Reading MA, 1973. Section 4.5.2, アルゴリズム X.
| gcbo | gcf | ![]() |