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