polylib
::minpoly
Аппроксимируйте минимальный полином
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
polylib::minpoly(a
, n
, x
)
polylib::minpoly(a, n, x)
вычисляет одномерный полиномиальный f
в переменной x
из степени n
с целочисленными коэффициентами, таким образом, что a
равняется корню f
до точности, данной DIGITS
, и таким образом, что сумма квадратов его коэффициентов минимальна среди всех полиномов с этим свойством.
polylib::minpoly
чувствительно к переменной окружения DIGITS
.
Мы вычисляем полином степени 4, который имеет корень близко к PI (до 6 десятичных цифр) и маленькие целочисленные коэффициенты:
DIGITS:=6: polylib::minpoly(PI, 4, x); delete DIGITS:
Если корень должен быть еще ближе к PI, большие коэффициенты необходимы:
DIGITS:=20: polylib::minpoly(PI, 4, x); delete DIGITS
|
Арифметическое выражение, которое может быть преобразовано в число с плавающей точкой |
|
Положительное целое число |
|
Идентификатор |
polylib::minpoly
возвращает полином в x
. Его содействующим звонком является Expr
, все его коэффициенты являются целыми числами.
Lenstra/Lenstra/Lovasz, Учитывая полиномы с рациональными коэффициентами, Математикой. Энн. 261 (1982), стр 515–534.
Проблема уменьшает до нахождения самого короткого целочисленного вектора в решетке, где e i обозначает вектор с e i [j] = δ i, j (кронекеров символ). Эта задача решена с помощью алгоритма Lenstra/Lenstra/Lovasz.