# Vocabulary/pdot

>>
<< ` `
Down to: Dyad ` `
Back to: Vocabulary
Thru to: Dictionary

`p. y`Roots

Rank 1 *-- operates on lists of y, producing a list for each one --*
WHY IS THIS IMPORTANT?

Converts the polynomial `y` between *coefficient* and *multiplier-and-roots* form.

**Example:**
The roots of *2y ^{2} - 16y + 30 = 2(y-5)(y-3) = 0* are

`5`and

`3`

c=: 30 _16 2 NB. coefficients (in ascending powers) ]z=: p. c NB. coefficients as argument yield roots +-+---+ |2|5 3| +-+---+ p. z NB. (multiplier and) roots as [boxed] argument yield coefficients 30 _16 2

The *coefficient form* of a polynomial is the list of coefficients of **ascending** powers of *y* representing the polynomial *c _{0}+c_{1}y^{1}+ ... +c_{n}y^{n}*

`30 _16 2` ↔ *30 - 16y + 2y ^{2}*

The *multiplier-and-roots form* of a polynomial is a two-atom boxed list ` m;r `
representing the polynomial *m(y-r _{0})(y-r_{1})...(y-r_{n})*

`2;5 3` ↔ *2(y-5)(y-3)*

### Common uses

1. Solve a polynomial equation whose right side is `0` (the solutions are the roots).

2. Convert a polynomial into its different forms.

### More Information

1. `y` may also be in *exponent form*, which is a singleton box (either an atom or a 1-atom list) containing a table.
Each row of the table is a 2-atom list `c,n` representing the term *cy ^{n}* (

`c`is the coefficient,

`n`the nonnegative integer exponent).

If `y` is in exponent form, `p. y` produces the corresponding coefficient form.

]p =. <_2 ]\ _16 1 2 2 30 0 NB. three (c,n) pairs; order of powers doesn't matter +-----+ |_16 1| | 2 2| | 30 0| +-----+ p. p 30 _16 2

### Details

1. If `y` is a single boxed atom containing a list, it is assumed to be roots with an omitted multiplier of `1`:

]z=. < -: 1&(+,-) %:5 NB. roots [Phi,-phi] +-----------------+ |1.61803 _0.618034| +-----------------+ p. z _1 _1 1

2. If in exponent form powers appear repeated, the last occurring (`c,n`) pair for that power is used:

]p =. < _16 1 ,99 2 ,30 0 ,:2 2 +-----+ |_16 1| | 99 2| | 30 0| | 2 2| +-----+ p. p 30 _16 2

`x p. y`Polynomial

Rank 1 0 *-- operates on lists of x, and individual atoms of y --*
WHY IS THIS IMPORTANT?

Evaluates polynomial `x` for given value(s) of `y`.

Argument `x` can be in *coefficient*, *multiplier-and-roots*, *exponent*, or *multinomial* form.

Remember, the powers of *y* in coefficient form are in **ascending order**.

**Example:** The roots of *2y ^{2} - 16y + 30 = 2(y-5)(y-3) = 0* are

`5`and

`3`

See above for conversion of this polynomial between forms

y=: i. 6 30 _16 2 p. y NB. coefficient form 30 16 6 0 _2 0 (2;5 3) p. y NB. m&r form 30 16 6 0 _2 0 (<_2 ]\ 2 2 _16 1 30 0) p. y NB. exponent form 30 16 6 0 _2 0

### Common uses

1. The usual ways to evaluate a polynomial

c=: 15 _8 1 NB. coefficients for case: multiplier 1, roots 5 and 3 y=: i. 9 NB. range [0..8] y,:(c p. y) NB. the 'short' way 0 1 2 3 4 5 6 7 8 15 8 3 0 _1 0 3 8 15 +/"1 c *"1 y^/i.#c NB. the 'long' way 15 8 3 0 _1 0 3 8 15 y #.("0 1) |. c NB. the 'tricky' way, useful if the coefficients are in descending exponent order 15 8 3 0 _1 0 3 8 15

### Related Primitives

Base (`x #. y`)

### More Information

1. *Multinomial form* is an extension of exponent form to multiple independent variables.

Argument `x` is a singleton box containing a table.
Each row of the table is a list `c,e0,e1...` representing the term (*cy,,0,,^e0^y,,1,,^e1^...*) (`c` is the coefficient, `e` the exponents). The result is the sum of the terms.

When `x` is in multinomial form, `y` must be a boxed list of *y,,0,,, y,,1,,, ...*
with one atom for each `e`-column of the table ` >x `.

]multi =: <1 2 0,:2 0 2 NB. x^2 + 2y^2 +-----+ |1 2 0| |2 0 2| +-----+ ]pts =: 0 0;1 0;0 1;1 1;3 0;4 4 +---+---+---+---+---+---+ |0 0|1 0|0 1|1 1|3 0|4 4| +---+---+---+---+---+---+ multi p. pts NB. Evaluate each point 0 1 2 3 9 48 ]multi2 =: <1 2 1,:2 0 2 NB. (x^2)y + 2y^2 ┌─────┐ │1 2 1│ │2 0 2│ └─────┘ multi2 p. 0 0;2 2;1 3;1 2;3 1;4 4 0 16 21 10 11 96

### Details

1. When `x` is in multinomial form, the result is `(|:c) +/ .* e */ .(^~) >y`.
If ` >y ` is an atom it is treated as a 1-atom list.

2. Boolean `x` and `y` are always promoted to floating-point. For an alternative, see `x #. y`.