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