GCD чисел и полиномов
G = gcd(A)
G = gcd(A,B)
[G,M] = gcd(A)
[G,C,D]
= gcd(A,B,X)
Чтобы найти наибольший общий делитель трех или больше значений, задайте те значения как символьный вектор или матрицу.
Найдите наибольший общий делитель этих четырех целых чисел, заданных как элементы символьного вектора.
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
Наибольший общий делитель рациональных чисел, a1,a2,...
является номером g
, такой, что g/a1,g/a2,...
является целыми числами и gcd(g) = 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
-by-2
матрица со всеми элементами, равными 200
.
gcd(A,200)
ans = [ 1, 2] [ 2, 8]
Найдите наибольший общий делитель одномерных и многомерных полиномов.
Найдите наибольший общий делитель этих одномерных полиномов.
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
Теорема в теории чисел утверждает, что 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 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
для чисел, которые не являются символьными объектами, вызывает
функцию MATLAB® gcd
.
Функция gcd
MATLAB не принимает рациональные или сложные аргументы. Чтобы найти наибольший общий делитель рациональных или комплексных чисел, преобразуйте эти числа в символьные объекты при помощи sym
, и затем используйте gcd
.
Нескалярные аргументы должны быть одного размера. Если один входной параметр является нескалярным, то gcd
расширяет скаляр в вектор или матрицу, одного размера в качестве нескалярного аргумента со всеми элементами, равными соответствующему скаляру.