coeff

Коэффициенты полинома

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

coeff(p, <All>)
coeff(p, <x>, n, <All>)
coeff(p, <[x, …]>, [n, …], <All>)
coeff(f, <vars>, <All>)
coeff(f, <vars>, <x>, n, <All>)
coeff(f, <vars>, <[x, …]>, [n, …], <All>)

Описание

coeff(p) возвращает последовательность всех ненулевых коэффициентов полиномиального p.

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

coeff(p, [x,...], [n,...]) рассматривает p как многомерный полином в x,... и возвращает коэффициент термина x^n,....

Если первый аргумент f не является элементом полиномиальной области, то coeff преобразовывает выражение внутренне в полином типа DOM_POLY через poly (f). Если список indeterminates задан, полиномиальный poly, (f, vars) рассматривается.

Коэффициенты многочленных выражений f возвращены как арифметические выражения.

Существуют различные способы вызвать coeff с полиномиальным p типа DOM_POLY:

  • coeff(p) возвращает последовательность всех ненулевых коэффициентов p. Им упорядочивают согласно лексикографическому упорядоченному расположению термина. Порядок в убывании.

    Возвращенные коэффициенты являются элементами содействующего звонка p.

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

    Для одномерных полиномов возвращенные коэффициенты являются элементами содействующего звонка p.

    Для многомерных полиномов коэффициенты возвращены как полиномы типа DOM_POLY в “остающихся” переменных.

  • coeff(p, n) эквивалентен coeff(p, x, n), где x является “основной переменной” p. Эта переменная является первым элементом списка indeterminates op(p, 2).

  • coeff(p, [x1,x2,...], [n1,n2,...]) рассматривает p как многомерный полином в переменных x1,x2,... и возвращает коэффициент термина x1^n1*x2^n2.... Переменная и списки экспонент должны иметь ту же длину.

    Возвращенные коэффициенты являются или элементами содействующего звонка p или полиномами типа DOM_POLY в “остающихся” переменных.

  • coeff(p, [n1,n2,...]) эквивалентен coeff(p, [x1,x2,...], [n1,n2,...]), где переменные x1,x2,... являются “основными переменными” p, т.е. ведущих элементов списка indeterminates op(p, 2).

  • coeff(p, All) возвращает последовательность коэффициентов p включая равных нулю. Функция возвращает результат в возрастающем лексикографическом порядке. Для одномерного полиномиального p вызов coeff(p, All) эквивалентен coeff(p, i) $ i = 0 .. degree(p).

coeff возвращается 0 или нулевой полином, если полином не содержит термин, соответствующий заданным степеням. В частности, это происходит для одномерного полинома, если n больше, чем степень полинома.

coeff возвращает FAIL, если выражение не может рассматриваться как полином.

Результат coeff не полностью оценен. Оценка может быть осуществлена функциональным eval. Смотрите Пример 5.

Примеры

Пример 1

coeff(f) возвращает последовательность всех ненулевых коэффициентов:

f := 10*x^10 + 5*x^5 + 2*x^2: coeff(f)

coeff(f, i) возвращает один коэффициент:

coeff(f, i) $ i = 0..15

delete f:

Пример 2

Мы демонстрируем, как indeterminates влияют на результат:

f := 3*x^3 + x^2*y^2 + 17*x + 23*y + 2

coeff(f); coeff(f, [x, y]); coeff(f, [y, x])

delete f:

Пример 3

Коэффициенты f выбраны относительно основной переменной x, которая является первой записью списка indeterminates:

f := 3*x^3 + x^2*y^2 + 2: coeff(f, [x, y], i) $ i = 0..3

Коэффициенты f могут быть выбраны относительно другой основной переменной (в этом случае, y):

coeff(f, [y, x], i) $ i = 0..2

В качестве варианта:

coeff(f, y, i) $ i = 0..2

Коэффициенты f могут также быть выбраны относительно многомерного термина:

coeff(f, [x,y], [3,0]),
coeff(f, [x,y], [2,2]),
coeff(f, [x,y], [0,0])

delete f:

Пример 4

Таким же образом coeff может быть применен к полиномам типа DOM_POLY:

p := poly(3*x^3 + x, [x], Dom::IntegerMod(7)):
coeff(p)

coeff(p, i) $ i = 0..3

Для многомерных полиномов коэффициенты относительно неопределенного являются полиномами в другом indeterminates:

p := poly(3*x^3 + x^2*y^2 + 2, [x, y]):
coeff(p, y, 0), coeff(p, y, 1), coeff(p, y, 2);

coeff(p, x, 0), coeff(p, x, 1), coeff(p, x, 2)

Обратите внимание на то, что indeterminates, переданный coeff, будет использоваться, даже если полином обеспечит различный indeterminates:

coeff(p, z, 0), coeff(p, z, 1), coeff(p, z, 2)

delete p:

Пример 5

Результат coeff не полностью оценен:

p := poly(27*x^2 + a*x, [x]): a := 5:
coeff(p, x, 1), eval(coeff(p, x, 1))

delete p, a:

Пример 6

Чтобы возвратить все коэффициенты полинома, используйте опцию All:

p := poly(a*x^3 + b*x^2 + c*x + d, [x, y]):
coefficients := coeff(p, All)

Чтобы вернуться порядок получившейся последовательности, используйте функцию revert. Эта функция не работает с последовательностями. Чтобы преобразовать последовательность в список, вызовите revert для этого списка и преобразуйте результат назад в последовательность:

op(revert([coefficients]))

Опция All также работает на многочленные выражения:

p_expr := 2*x^5 + 5*x^2 + 10*x + 3:
coeff(p_expr, All)

Можно использовать функцию coeff с опцией All, чтобы вычислить скалярные произведения полиномов. Например, следующая процедура вычисляет скалярное произведение двух полиномов в ортонормированном базисе. Функция coeff извлекает коэффициенты полиномов и возвращает два списка коэффициентов. Функция zip умножает записи этих списков попарно и возвращает список. Функция op получает доступ к записям того списка. Наконец, функция _plus вычисляет сумму всех продуктов:

scalarProduct := proc(p, q)
  local lp, lq;
begin
  lp := [coeff(p, All)];
  lq := [coeff(conjugate(q), All)];
_plus(op(zip(lp, lq, _mult)));
end_proc:

Следующие полиномы являются ортогональными:

scalarProduct(poly(x^2 + 2), poly(x^3 + 2*x^2 - 1))

Пример 7

coeff(p, All) также работает на многомерные полиномы и многочленные выражения:

p := poly(2*x^2*y + PI*x + y^2 - 2, [x, y]):
coeff(p, All)

Для многомерного многочленного или многочленного выражения порядок, в котором coeff возвращает коэффициенты, таков, что коэффициент вектора экспоненты [e 1, e 2, …] появляется в положении e 1  d1 + e 2  d2 + … + 1. Например, представляйте коэффициенты, возвращенные для двумерного полинома как матрица:

A := matrix(degree(p, x) + 1, degree(p, y) + 1, [coeff(p, All)])

Параметры

p

Полином типа DOM_POLY

x

Неопределенное

n

Степень: неотрицательное целое число

f

Многочленное выражение

vars

Список indeterminates полинома: обычно, идентификаторы или индексированные идентификаторы

Опции

All

Функция coeff с этой опцией возвращает все коэффициенты полинома или многочленного выражения включая равных нулю. Функция возвращает результат в возрастающем лексикографическом порядке. Смотрите Пример 6 и Пример 7.

Возвращаемые значения

Один или несколько коэффициентов содействующего звонка полинома, или полинома или FAIL.

Перегруженный

fp

Смотрите также

Функции MuPAD