                                     
                               POLY.TXT File

From: Wayne H Scott (wscott at ecn.purdue.edu)
Date: October 19, 1990


Overview
--------

Here is a version of my polynomial routines that will work on a HP 48.  My
thanks to Craig Cantello who made the necessary changes to the programs.

This package include the following programs.

ZTRIM     Strip leading zeros from polynomial object.

IRT       Invert root program.  Given n roots it return a nth degree
          polynomial.

PDER      Derivative of a polynomial.

RDER      Derivative of a rational function.

PF        Partial Fractions.  (Handles multiple roots!)

FCTP      Factor polynomial.

RT        Find roots of any polynomial.

L2A       Convert a list to an array and back.

PADD      Add two polynomials.

PMUL      Multiply two polynomials.

PDIV      Divide two polynomials.

EVPLY     Evalulate a polynomial at a point.

COEF      Given an equation return a polynomial list.


Installation
------------

Transfer POLY to the HP 48 and change to the POLY directory.


Operation
---------

These programs all work on polynomials in the follows form:

3*X^3-7*X^2+5 is entered as  { 3 -7 0 5 }

so going down the list...


FCTP (FACTOR POLYNOMIAL)

When FCTP is passed the coefficients of a polynomial in a list it returns
the factor of that polynomal.

Example:

Given the following in level 1:

{ 1 -17.8 99.41 -261.218 352.611 -134.106 }

|FCTP| returns:

3:    { 1 -4.2 2.1 }
2:    { 1 -3.3 6.2 }
1:       { 1 -10.3 }

This tells us that X^5-17.8*X^4+99.41*X^3-261.218*X^2+352.611*X-134.106

factors to (X^2-4.2*X+2.1)*(X^2-3.3*X+6.2)*(X-10.3)


RT (ROOTS)

Given a polynomial, RT return its roots.

Example:

Given the following in level 1:

{ 1 -17.8 99.41 -261.218 352.611 -134.106 }

|RT| returns:

5:         3.61986841536
4:          .58013158464
3:  (1.65, 1.8648056199)
2: (1.65, -1.8648056199)
1:                  10.3

These programs use the BAIRS program which performs Bairstow's method of
quadratic factors and QUD with does the quadratic equation.


TRIM (TRIM LEADING ZEROS)

TRIM strips the leading zeros from a polynomial list.

Example:

{0 0 3 0 7 } |TRIM| => { 3 0 7 }


RDER  (DERIVATIVE OF A RATIONAL FUNCTION)

That is:

    d        x + 4                   -X^2 - 8*x + 31
    --   -------------  =   --------------------------------
    dx   x^2 - 7*x + 3      x^4 - 14*x^3 + 55*x^2 - 42*x + 9

2: { 1 4 }
1: { 1 -7 3 }

|RDER|

2: { -1 -8 31 }
1: { 1 -14 55 -42 9 }

I don't know about you but I think it's useful.


IRT (POLYNOMIAL OF SPECIFIED ROOTS)

That is:

If a transfer function has zeros at -1, 1 and 5, the function is

x^3 - 5*x^2 - x + 5

Example:

1: { -1 1 5 }

|IRT|

1: { 1 -5 -1 5 }


PDER (DERIVATIVE OF A POLYNOMIAL)

That is:

The  d/dx of (x^3 - 5*x^2 - x + 5) is 3*x^2 - 10*x - 1

Example:

1: { 1 -5 -1 5 }

|PDER|

1: { 3 -10 -1 }


PF (PARTIAL FRACTION EXPANSION ON A TRANSFER FUNCTION)

That is:

       s + 5            1/18   5/270     2/3       1/9     2/27
   ----------------- = ----- + ----- - ------- - ------- - -----
   (s-4)(s+2)(s-1)^3   (s-4)   (s+2)   (s-1)^3   (s-1)^2   (s-1)

Example:

2: { 1 5 }
1: { 4 -2 1 1 1 }

|PF|

1: { 5.5555e-2 1.85185e-2 -.6666 -.11111 -.074074 }

This program expects the polynomial of the numerator to be on level 2 and a
list with the poles to be on level 1.  Repeated poles are supported but
they must be listed in order.  The output is a list of the values of the
fraction in the same order as the poles were entered.


PADD (POLYNOMIAL ADDTION),
PMUL (POLYNOMIAL MULTIPLICATION),
AND PDIV (POLYNOMIAL DIVISION)

These all take two polynomial lists off the stack and perform the operation
on them.

PDIV returns the polynomial and the remainder polynomial.


L2A (TOGGLE LIST TO ARRAY AND BACK)

Example:

1: { 1 2 3 }

|L2A|

1: [ 1 2 3 ]

|L2A|

1: { 1 2 3 }


EVPLY (EVALUATE POLYNOMIAL AT A POINT)

That is:

x^3 - 3*x^2 +10*x - 5 at x = 2.5 is 16.875

Example:

2: { 1 -3 10 -5 }
1: 2.5

|EVPLY|

1: 16.875

---------------------------------------------------------------------------

V 1.0 04/27/92 11:59 AM
