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, и также возвращает коэффициенты Bézout, 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

Коэффициенты Bézout

Найдите наибольший общий делитель и коэффициенты Bézout этих полиномов. Для многомерных выражений используйте третий входной параметр, чтобы задать полиномиальную переменную. При вычислении коэффициентов Bézout, 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