exponenta event banner

GCD

GCD чисел и многочленов

Описание

пример

G = gcd(A) находит наибольший общий делитель из всех элементов A.

пример

G = gcd(A,B) находит наибольший общий делитель A и B.

пример

[G,M] = gcd(A) возвращает GCD G всех элементов A, и возвращается в M линейная комбинация A что равно G.

пример

[G,C,D] = gcd(A,B,X) находит наибольший общий делитель A и B, а также возвращает коэффициенты Безо, C и D, такой, что G = A*C + B*D. Для многомерных выражений укажите полиномиальную переменную X таким образом, что он не появляется в знаменателе C и D. Если не указать X, то gcd использует переменную по умолчанию, определенную symvar.

Примеры

Величайший общий делитель четырех целых чисел

Чтобы найти наибольший общий делитель из трех или более значений, укажите эти значения как символический вектор или матрицу.

Найдите наибольший общий делитель из этих четырёх целых чисел, указанных как элементы символического вектора.

A = sym([4420, -128, 8984, -488])
gcd(A)
A =
[ 4420, -128, 8984, -488]
 
ans =
4

Можно также задать эти значения как элементы символьной матрицы.

A = sym([4420, -128; 8984, -488])
gcd(A)
A =
[ 4420, -128]
[ 8984, -488]
 
ans =
4

Наибольший общий делитель многочленов

Найдите наибольший общий делитель одномерных и многомерных многочленов.

Найдите наибольший общий делитель этих одномерных многочленов.

syms x
gcd(x^3 - 3*x^2 + 3*x - 1, x^2 - 5*x + 4)
ans =
x - 1

Найдите наибольший общий делитель из этих многомерных многочленов. Поскольку существует более двух многочленов, укажите их как элементы символьного вектора.

syms x y
gcd([x^2*y + x^3, (x + y)^2, x^2 + x*y^2 + x*y + x + y^3 + y])
ans =
x + y

Величайший общий делитель рациональных чисел

Наибольший общий делитель рациональных чисел a1,a2,... является числом g, такой, что g/a1,g/a2,... являются целыми числами, и gcd(g/a1,g/a2,...) = 1.

Найдите наибольший общий делитель этих рациональных чисел, указанных как элементы символического вектора.

gcd(sym([1/4, 1/3, 1/2, 2/3, 3/4]))
ans =
1/12

Наибольший общий делитель комплексных чисел

gcd вычисляет наибольший общий делитель комплексных чисел над гауссовыми целыми числами (комплексные числа с целыми вещественными и мнимыми частями). Возвращает комплексное число с положительной действительной частью и неотрицательной мнимой частью.

Найдите наибольший общий делитель этих комплексных чисел.

gcd(sym([10 - 5*i, 20 - 10*i, 30 - 15*i]))
ans =
5 + 10i

Наибольший общий делитель элементов матриц

Для векторов и матриц: gcd находит наибольшие общие делители по элементам. Нескалярные аргументы должны иметь одинаковый размер.

Найдите наиболее общие делители для элементов этих двух матриц.

A = sym([309, 186; 486, 224]);
B = sym([558, 444; 1024, 1984]);
gcd(A,B)
ans =
[ 3,  6]
[ 2, 32]

Найти наиболее общие делители для элементов матрицы A и значение 200. Здесь, gcd расширяется 200 в 2около-2 матрица со всеми элементами, равными 200.

gcd(A,200)
ans =
[ 1, 2]
[ 2, 8]

GCD - положительная линейная комбинация входов

Теорема в теории чисел утверждает, что GCD двух чисел является наименьшей положительной линейной комбинацией этих чисел. Показать, что GCD является положительной линейной комбинацией для 64 и 44.

A = sym([64 44]);
[G,M] = gcd(A)
G =
4
M =
[ -2, 3]
isequal(G,sum(M.*A))
ans =
  logical
   1

Коэффициенты Безо

Найдите наибольший общий делитель и коэффициенты Безо этих многочленов. Для многомерных выражений используйте третий входной аргумент, чтобы задать полиномиальную переменную. При вычислении коэффициентов Безо, gcd гарантирует, что полиномиальная переменная не будет отображаться в их знаменателях.

Найти наибольший общий делитель и коэффициенты Bézout этих многочленов относительно переменной x.

[G,C,D] = gcd(x^2*y + x^3, (x + y)^2, x)
G =
x + y
 
C =
1/y^2
 
D =
1/y - x/y^2

Найти наибольший общий делитель и коэффициенты Bézout тех же многочленов относительно переменной y.

[G,C,D] = gcd(x^2*y + x^3, (x + y)^2, y)
G =
x + y
 
C =
1/x^2
 
D =
0

Если переменная полинома не указана, то панель инструментов использует symvar для определения переменной.

[G,C,D] = gcd(x^2*y + x^3, (x + y)^2)
G =
x + y
 
C =
1/y^2
 
D =
1/y - x/y^2

Решение диофантового уравнения

Решите уравнение Диофантина, 30x + 56y = 8, для x и y.

Найти наибольший общий делитель и пару коэффициентов Bézout для 30 и 56.

[G,C,D] = gcd(sym(30),56)
G =
2
 
C =
-13
 
D =
7

C = -13 и D = 7 удовлетворить личность Безоута, (30*(-13)) + (56*7) = 2.

Перепишите идентичность Безаута так, чтобы она больше походила на исходное уравнение. Сделайте это, умножив на 4. Использовать == для проверки того, что обе стороны уравнения равны.

isAlways((30*C*4) + (56*D*4) == G*4)
ans =
  logical
   1

Вычислить значения x и y которые решают уравнение Диофантина.

x = C*4
y = D*4
x =
-52
 
y =
28

Входные аргументы

свернуть все

Входное значение, указанное как число, символьное число, переменная, выражение, функция или вектор или матрица чисел, символьных чисел, переменных, выражений или функций.

Входное значение, указанное как число, символьное число, переменная, выражение, функция или вектор или матрица чисел, символьных чисел, переменных, выражений или функций.

Полиномиальная переменная, заданная как символьная переменная.

Выходные аргументы

свернуть все

Наибольший общий делитель, возвращаемый в виде символьного числа, переменной, выражения, функции или вектора или матрицы символьных чисел, переменных, выражений или функций.

Линейная комбинация входных данных, равная GCD входных данных, возвращаемых в виде символьного вектора, матрицы или массива.

Коэффициенты Bézout, возвращаемые в виде символьных чисел, переменных, выражений, функций или векторов или матриц символьных чисел, переменных, выражений или функций.

Совет

  • Запрос gcd для чисел, которые не являются символическими объектами, вызывает MATLAB ®gcd функция.

  • MATLAB gcd функция не принимает рациональные или сложные аргументы. Чтобы найти наибольший общий делитель рациональных или комплексных чисел, преобразуйте эти числа в символические объекты с помощью sym, а затем использовать gcd.

  • Нескалярные аргументы должны иметь одинаковый размер. Если один входной аргумент не является скалярным, то gcd расширяет скаляр в вектор или матрицу того же размера, что и нескалярный аргумент, со всеми элементами, равными соответствующему скаляру.

См. также

Представлен в R2014b