```
In [ ]:
```x=: 3

```
In [ ]:
```c=: 3 4 2

```
In [ ]:
```e=: 2 5 4

```
In [ ]:
```x^e

```
In [ ]:
```c * x^e

```
In [ ]:
```+/c * x^e

```
In [ ]:
```perm=: 1 2 0

```
In [ ]:
```] ep=: perm { e

```
In [ ]:
```] cp=: perm { c

```
In [ ]:
```cp * x^ep

```
In [ ]:
```+/cp * x^ep

```
In [ ]:
```cd=: 4 2 0 3 0 0

```
In [ ]:
```ed=: 5 4 3 2 1 0

```
In [ ]:
```cd * x^ed

```
In [ ]:
```+/cd * x^ed

A polynomial may also be written in a standard ascending order:

```
In [ ]:
```] ca=: |. cd

```
In [ ]:
```] ea=: |. ed

```
In [ ]:
```+/ca*x^ea

The descending order is commonly used in elementary mathematics, but the ascending order is more common in advanced work because it allows the use of power series, polynomials with an indefinite (or even infinite) number of terms. We will mainly use the ascending form, but the descending form will be used in discussing number systems.

In a polynomial in standard form, the exponents are completely determined by the coefficients. For example:

```
In [ ]:
```c=: 0 0 3 0 2 4

```
In [ ]:
```# c

```
In [ ]:
```]e=: i.#c

```
In [ ]:
```+/c*x^i.#c

These steps may be collected in a single function as follows:

```
In [ ]:
```p=: (+/ @ ([ * ] ^ i.@#@[)) " 1 0

```
In [ ]:
```c p x

```
In [ ]:
```c p 1

```
In [ ]:
```c p. x

```
In [ ]:
```y=: 2 3 5 7 11

```
In [ ]:
```c p. y

```
In [ ]:
```c=: 3 _4 2

```
In [ ]:
```e=: 2 5 4

```
In [ ]:
```+/c*x^e

```
In [ ]:
```0 0 3 0 2 _4 p. x

The term polynomial refers to a function of a single argument, the x in the expression $4x^5+2x^4+3x^2$.

The primitive p. is a function of two arguments, and is therefore not properly a polynomial. However, an expression of the form c&p. bonds it with a left argument of coefficients to produce a polynomial function. For example:

```
In [ ]:
```c2=: 1 2 1

```
In [ ]:
```c3=: 1 3 3 1

```
In [ ]:
```f=: c2&p.

```
In [ ]:
```g=: c3&p.

```
In [ ]:
```x=: 2 3 5 7 11

```
In [ ]:
```f x

```
In [ ]:
```g x

```
In [ ]:
```h=: f*g

```
In [ ]:
```h x

```
In [ ]:
```(f+g) x

```
In [ ]:
```f g x

```
In [ ]:
```f@g x

```
In [ ]:
```k=: f@g

```
In [ ]:
```k x

```
In [ ]:
```4 12 21 22 15 6 1&p. x

```
In [ ]:
```x=: 2 3 5 7 11

```
In [ ]:
```x^3

```
In [ ]:
```^&3 x

```
In [ ]:
```0 0 0 1&p. x

```
In [ ]:
```c2=: 1 2 1

```
In [ ]:
```]pre=: 0 0 0,c2

```
In [ ]:
```pre&p. x

```
In [ ]:
```c2&p. x

```
In [ ]:
```(^&3 * c2&p.) x

However, appending zeros to the end of a list of coefficients has no effect. For example:

```
In [ ]:
```]post=: c2,0 0 0

```
In [ ]:
```post&p. x

```
In [ ]:
```(post&p. = c2&p.) x

```
In [ ]:
```k=: f@g

```
In [ ]:
```tk=: k t. NB. Taylor coefficient function for k

```
In [ ]:
```c=: tk 0 1 2 3 4 5 6 NB. Coefficients 0 through 6 for k

```
In [ ]:
```c NB. Compare with earlier result

```
In [ ]:
```c p. x

```
In [ ]:
```k x

```
In [ ]:
```tk 2 3 NB. Coefficients 2 and 3 for k

```
In [ ]:
```f@g t. i. 10 NB. Coefficients with trailing zeros

```
In [ ]:
```]csum=: (f+g) t. i.10

```
In [ ]:
```csum p. x

```
In [ ]:
```(f+g) x

```
In [ ]:
```]cdif=: (f-g) t. i. 10

```
In [ ]:
```]cprod=: (f*g) t. i. 10

```
In [ ]:
```(h%f) x

```
In [ ]:
```g x

```
In [ ]:
```(h%f) t. i. 10

Similarly, f is a divisor of g, but g is not a divisor of f:

```
In [ ]:
```(g%f) x

```
In [ ]:
```(g%f) t. i. 10

```
In [ ]:
```1 1&p. x

```
In [ ]:
```(f%g) x

```
In [ ]:
```]cq=:(f%g) t. i. 10

Note that although f%g is not a polynomial, it is a function, called a rational function. Moreover, the Taylor operator applies to it to provide a result that does not terminate with zeros as would a polynomial. Moreover, the leading coefficients of such a "non-terminating" list can be meaningfully used to define a polynomial, provided that it is applied only to arguments whose magnitudes are less than one. The higher powers of such an argument become so small that "neglected" coefficients have no appreciable effect. For example:

```
In [ ]:
```]y=: 10^-i.9

```
In [ ]:
```cq&p. y

```
In [ ]:
```(f%g) y

Results produced by the Taylor operator are called Taylor coefficients, and the functions defined by bonding them with p. are called Taylor series. Not only are Taylor series useful for approximating non-polynomials, but the patterns of the coefficients may provide important insights. For example:

```
In [ ]:
```x=: i. 5

```
In [ ]:
```i=: i. 8

```
In [ ]:
```exp=: ^

```
In [ ]:
```sin=: 1&o.

```
In [ ]:
```cos=: 2&o.

```
In [ ]:
```exp x NB. Exponentials

```
In [ ]:
```]etc=: exp t. i NB. Exponential Taylor coefficients

```
In [ ]:
```etc&p. x NB. Taylor series approximation

```
In [ ]:
```% etc

```
In [ ]:
```! i

```
In [ ]:
```etc * !i

```
In [ ]:
```dec=: ^@- NB. Decaying exponential

```
In [ ]:
```sinh=: 5&o. NB. Hyperbolic sine

```
In [ ]:
```cosh=: 6&o. NB. Hyperbolic cosine

```
In [ ]:
```a=: (exp t:,dec t:,sinh t:,sin t:,cosh t:,:cos t:) i

```
In [ ]:
```comments=. > ;: 'Exp Decay Sinh Sin Cosh Cos'

```
In [ ]:
```comments;a

In an earlier section, we have seen how the operator t. can be used to obtain Taylor coefficients for sums and products of polynomials f=: c&p. and g=: d&p.. We will now examine how they may be obtained directly from the coefficients c and d. If c and d have equal numbers of coefficients, the case of the sum is obvious:

```
In [ ]:
```x=: i. 6

```
In [ ]:
```c=: 3 1 4

```
In [ ]:
```d=: 5 3 1

```
In [ ]:
```(c&p. + d&p.) x

```
In [ ]:
```(c+d)&p. x

```
In [ ]:
```c2=: 1 2 1

```
In [ ]:
```c3=: 1 3 3 1

```
In [ ]:
```c2,:c3

```
In [ ]:
```+/c2,:c3

```
In [ ]:
```(c2 p. x) + (c3 p. x)

```
In [ ]:
```(+/ c2,:c3) p. x

A function for "adding" polynomial coefficients may therefore be defined and used as follows:

```
In [ ]:
```plus=: +/@,:

```
In [ ]:
```c2 plus c3

```
In [ ]:
```times=: +//.@(*/)

```
In [ ]:
```c2 times c3

```
In [ ]:
```] table=: c2 */ c3

```
In [ ]:
```</.table NB. The box function shows the diagonals

to which any function applies

```
In [ ]:
```+//. table

The reason why these diagonal sums of the multiplication table yield the coefficients of the product polynomial may appear obvious. If not, consider the following:

The product of two sums of terms is the sum of the products of a term from one with each of the terms from the other. The product of typical terms:

` ```j````

` ```c x````

and

` ```k````

` ```d x````

is

` ```j+k````

` ```c d x````

The multiplication table of all coefficients (c*/d) may therefore be multiplied by x raised to the powers in the addition table for the indices (that is, (i.#c +/ (i.#d)), and the entire resulting table can be summed. Thus:

```
In [ ]:
```x=: 3

```
In [ ]:
```] exp=: (i.#c2) +/ (i.#c3)

```
In [ ]:
```table;exp;(x^exp);(table*x^exp);(+/+/table*x^exp)

```
In [ ]:
```1 1× 1

```
In [ ]:
```1 1× 1 1× 1

```
In [ ]:
```1 1× ^:(i.6) 1

```
In [ ]:
```]q=: c3× ^: (i.#c2) 1 NB. Powers of c3 times

```
In [ ]:
```c2*q NB. weighted by c2

```
In [ ]:
```+/c2*q

```
In [ ]:
```coeffs=. 4 : '+/ x * y× ^: (i.#x) 1'

```
In [ ]:
```c2 coeffs c3

The points with coordinates x,f x and y,f y lie on the graph of the function f. The straight line through them is called a secant, and its slope is the quotient rise%run, where rise is the difference (f y)-(f x), and run is the difference y-x The slope of the secant through x and y gives an "average" value for the rate at which the function f is changing in the interval. If y=: x+s and the spacing s is small, the secant slope is a good approximation to the rate of change of the function f at x; geometrically, it is an approximation to the slope of the tangent to the graph of f at x

The slope of the cube function may be explored as follows:

```
In [ ]:
```f=: ^&3

```
In [ ]:
```x=: 0 1 2 3 4 5

```
In [ ]:
```((f x+1) - f x) % 1

```
In [ ]:
```((f x+0.0001) - f x) % 0.0001

```
In [ ]:
```scs=: ((f@+ - f@]) % [) " 0

```
In [ ]:
```0.0001 scs x

```
In [ ]:
```]s=: 10 ^ - i.5

```
In [ ]:
```s scs/ x

```
In [ ]:
```3*x^2

```
In [ ]:
```SCS=: 1 : 0
((x@+ - x@]) % [) "0
)

```
In [ ]:
```,. (s ^&3 SCS/ x) ; (s ^&4 SCS/ x)

```
In [ ]:
```4 * x ^ 3

The derivative of a function f is a function g that gives the rate of change of f, that is, the slope of the tangent to the graph of f. As suggested by the approximations provided by the secant slopes of the cube and fourth power in the preceding section, the derivative of the power $x^n$ is $nx^{n-1}$.

The derivative of a constant multiple of a function is the same multiple of its derivative, and the derivative of the term $cx^n$ is $ncx^{n-1}$.

Since the derivative of a sum is the sum of the derivatives of the terms, the derivative of the polynomial

$c + cx + cx^2 + cx^3$

is

$0 + c + 2cx^1 + 3cx^2$.

In general, the coefficients of the derivative polynomial are obtained by multiplying the coefficients by their indices, and dropping the first. Thus:

```
In [ ]:
```c=: 3 1 4 2

```
In [ ]:
```c*i.#c

```
In [ ]:
```}.c*i.#c

```
In [ ]:
```der=: }.@(] * i.@#)

```
In [ ]:
```der c

```
In [ ]:
```x=: 0 1 2 3 4 5 6 7

```
In [ ]:
```c p. x

```
In [ ]:
```(der c) p. x

```
In [ ]:
```f=: 3 1 4 2 & p.

```
In [ ]:
```f D.1 x

```
In [ ]:
```0.01 c&p. SCS x

```
In [ ]:
``````
der
```

```
In [ ]:
```int=: 0: , ] % 1: + i.@#

```
In [ ]:
``````
c
```

```
In [ ]:
```int c

```
In [ ]:
```der int c

```
In [ ]:
``````
x
```

```
In [ ]:
```(int c) p. x

If d is the list of digits representing a number in the decimal system, then the number represented is obtained by summing the product of d with the powers of 10, in descending order.

It can therefore be treated as a polynomial with argument 10 and coefficients that are the list d in reverse order, |.d. In particular the function times=: +//.@(*/) can be adapted for the product of decimal digits:

```
In [ ]:
```d=: 1 9 9 7

```
In [ ]:
```|.d

```
In [ ]:
```(|.d) p. 10

```
In [ ]:
```