Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Операции с полиномами



Алгебраическим полиномом в Maple называется сумма выражений с целыми неотрицательными степенями простых переменных.

Перечислим функции для работы с полиномами.

coeff( p, x ) или coeff( p, x, n ) или coeff( p, x ^ n ) – выделение коэффициента при n -й степени переменной x в полиноме p.

coeffs( p, x, 't' ) – выделение коэффициентов полинома p при всех степенях переменной x. Результатом работы этой команды является переменная типа exprseq, содержащая неупорядоченную последовательность коэффициентов. Если задан необязательный параметр 't', содержащий имя некоторой переменной, то этой переменной присваивается последовательность степеней, соответствующая последовательности возвращенных коэффициентов.

lcoeff( p ) или tcoeff( p ), lcoeff( p, x ) или tcoeff( p, x ),

lcoeff( p, x, 't' ) или tcoeff( p, x, 't' ) – выделение старшего или младшего коэффициента полинома. Смысл параметров такой же, как и в функции coeffs.

degree( p, x ) ldegree( p, x ) – определение наивысшей и наименьшей степеней полинома.

divide( a, b, 'q' ) – переменной q присваивается частное от точного деления полиномов a и b. Кроме того, формируется сообщение true, если деление было успешным или false – в противном случае.

gcd( a, b, 'cofa', 'cofb' ) и lcm( a, b,... ) – вычисление наибольшего общего делителя и наименьшего общего кратного полиномов a и b с рациональными коэффициентами. В переменные cofa и cofb возвращаются соответственные множители - остатки от деления a/ gcd( a,b ) и b/ gcd( a,b ).

rem( a, b, x ), rem( a, b, x, 'q' ) и quo( a, b, x ), quo( a, b, x, 'r' ) – вычисление остатка от деления и частного полиномов a и b относительно переменной x. Остаточный член r и частное q удовлетворяет равенству: a=b*q+r, причем degree( r,x ) < degree( b,x ). Если в обращении присутствует четвертый параметр, содержащий имя переменной, то этой переменной будет присваиваться результат.

convert( poly, horner) или convert( poly, horner, var ) – преобразование по схеме Горнера полинома poly относительно переменной var.

convert( poly, mathorner) или convert( poly, mathorner, var ) – преобразование по матричной схеме Горнера полинома poly относительно переменной var.

psqrt( p ), proot( p, n ) – вычисление квадратного корня или корня целой степени n из полинома p. Если p - полный квадрат, psqrt возвращает квадратный корень p. Иначе возвращается имя _ NOSQRT. Функция proot в аналогичной ситуации возвращает имя _ NOROOT. Эти функции предварительно должны быть загружены командами readlib(psqrt) и readlib(proot).

realroot( poly, widthgoal ) – вычисление интервалов, содержащих вещественные корни полинома poly. Необязательный параметр widthgoal задаёт максимальный размер каждого интервала. Эта команда возвращает список интервалов, содержащих изолированные вещественные корни полинома длиной меньшей или равной заданной. Если опущен второй параметр, то интервалы могут иметь разную длину. Эта функция предварительно должна быть загружена командой readlib(realroot).

roots( a ) или roots( a, K ) или roots( a, x ) или roots( a, x, K ) – вычисление рациональных или алгебраических корней полинома a относительно переменной x. Результат возвращается в виде списка вида [[ r1, m1 ],..., [ rn, mn ]], где rnn -й корень, mn – его кратность. Так, если коэффициенты полинома – рациональные числа, то и корни ищутся на множестве рациональных чисел. Параметр K может задавать другое поле алгебраических чисел, над которым ищутся корни полинома.

randpoly( vars, eqns ) – создание полинома со случайными коэффициентами. Параметр vars может содержать имя переменой или список имен переменных, относительно которых строится полином. Необязательный параметр eqns задаёт дополнительные условия для создания полинома. Он имеет вид option = value. Возможные значения второго параметра:

coeffs – задание имени процедуры для вычисления коэффициентов (по умолчанию задаётся функция rand( -99..99 ));

expons – задание интервала изменения степеней переменных (по умолчанию expons=rand( 6 ));

terms – задание количества слагаемых в полиноме (по умолчанию terms= 6;

degree – задание максимальной степени полинома (по умолчанию degree= 5);

dense – если этот параметр задан, то создаваемый полином должен быть плотным, т.е. не содержать нулевых коэффициентов. По умолчанию полиномы создаются разреженные. Задание параметра degree отменяет значение terms.

Такие полиномы можно использовать в качестве тестов в различных приложениях.

Примеры:

> p:= 2*x^2 + 3*y^3 - 5:

> coeff( p,x,2 );

> coeff( p,x,0 );

> s:= 3*x^2*y^2+2*x*y^3;

> coeffs( s );

3, 2

> coeffs( s, x, 't' );

> t;

> s:= 3*y^2*w^3*x^4+1;

> lcoeff( s );

> tcoeff( s );

> lcoeff( s, [y,w], 't' );

> t;

> degree( x^3+x,x );

> ldegree( x^3+x,x );

> divide( x^3-y^3, x-y, 'q' );

true

> q;

> gcd( x^2-y^2,x^3-y^3 );

-x + y

> lcm( x^2-y^2,x^3-y^3 );

3 4 4 3

-y x + y - x + x y

> rem( x^3+x+1, x^2+x+1, x, 'q' );

2 + x

> q;

x - 1

> quo( x^3+x+1, x^2+x+1, x );

x - 1

> readlib(psqrt):psqrt( x^2+2*x*y+y^2 );

y + x

> readlib(proot):proot( x^3+3*x^2+3*x+1, 3 );

1 + x

> psqrt( x+y );

_NOSQRT

> readlib(realroot):realroot( x^3+5*x^2-4*x-20 );

[[0, 8], [-4, 0], [-8, -4]]

> roots( x^3+5*x^2-4*x-20 );

[[-5, 1], [-2, 1], [2, 1]]





Дата публикования: 2014-11-29; Прочитано: 521 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...