numlib
::reconstructRational
Реконструкция рационального числа
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
numlib::reconstructRational(a
,n
)
numlib::reconstructRational(a,n)
возвращает два целых числа p,q
из абсолютного значения, меньшего, чем sqrt(n/2)
с p
конгруэнтный a*q
n
по модулю. Это возвращает
FAIL
если такой p,q
не существовать.
numlib::reconstructRational(a,n)
возвращает p,q
путем решения.
Решение p,q
удовлетворяет следующим условиям: p
строго между -sqrt(n/2)
и sqrt(n/2)
Q
строго между 0
и sqrt(n/2)
.
Если несколько пар p,q
удовлетворите этим условиям, затем их отношения p/q
то же самое. В таком случае, numlib::reconstructRational
возвращает самую маленькую из этих пар.
Решите эту линейную конгруэтность:.
numlib::reconstructRational(7, 12)
По модулю 98, та же конгруэтность не имеет никакого небольшого решения. Решение p=7, q=1
не мал достаточно как 7
не меньше, чем sqrt(98/2)
но только равный.
numlib::reconstructRational(7, 98)
Реконструкция рационального числа в основном используется в качестве последнего шага модульного алгоритма. Например, найдите наибольшие общие делители следующих полиномов.
f:= poly(x^5 + 22/35*x^3 + 3/8*x^2 + 3/35*x + 9/56, [x]): g:= poly(x^5 + 2/5*x^4 + 22/35*x^3 + 153/280*x^2 + 3/35*x + 9/56, [x]):
Как правило, можно использовать gcd
для этой задачи. Однако предположите, что вы знаете, что наибольший общий делитель имеет маленькие коэффициенты с числителем и знаменателем оба меньшие, чем 10. Затем можно использовать модульный алгоритм с меньшим модулем, чем gcd
сделал бы: смочь восстановить их от их класса вычетов n
по модулю, достаточно что, например,
n=211
.
gcd(poly(f, IntMod(211)), poly(g, IntMod(211)))
Реконструкция рационального числа показывает, что постоянным коэффициентом должен быть 3/7
:
numlib::reconstructRational(-90, 211)
gcd(f,g)
|
Целое число |
|
Положительное целое число |
Последовательность, состоящая из целого числа и положительного целого числа или FAIL
[1] Давенпорт, J. H., Y.Siret и E.Tournier “Компьютерная Алгебра: Системы и Алгоритмы для Алгебраического Расчета”. Academic Press Inc, 1988, p.142