Poly

Announcements of available shared folders

Poly

Postby oliver » Thu May 19, 2011 3:44 pm

Functions for symbolic operations on polynomials by Wayne H. Scott.

As described below, the functions assume the polynomial as an array of coefficients.
You can convert this into a polynomial expression by using peval (PEVAL).
For example,
[1 2 3] 'x' PEVAL will yield 'x^2+2*x+3'

See http://www.hpcalc.org/details.php?id=1393 for distribution information.

From POLY.DOC contained in the distribution:

TRIM 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 Evaluate a polynomial at a point.
COEF Given an equation return a polynomial list.

These programs all work on polynomials in the following form: 3*X^3-7*X^2+5 is entered as { 3 -7 0 5 }

FCTP (FaCTor Polynomial)
When it is passed the cooeficients of a polynomial in a list it returns the
factor of that polynomial. Example:

1: { 1 -17.8 99.41 -261.218 352.611 -134.106 }
FCTP
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)
If given a polynomial it return its roots. Example:

1: { 1 -17.8 99.41 -261.218 352.611 -134.106 }
RT
5: 3.61986841536
4: .58013158464
3: (1.65, 1.8648056199)
2: (1.65, -1.8648056199)
1: 10.3

RT will work with complex cooeffients in the polynomial.

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

TRIM used to strip the leading zeros from a polynomial list.
Example: { 0 0 3 0 7 } TRIM => { 3 0 7 }

RDER will give the DERivative of a Rational function. Example:

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 }

IRT (Inverse RT) will return a polynomial whose roots you specify.
Example: If a transfer function has zeros at -1, 1 and 5 the function is
x^3 - 5*x^2 - x + 5

1: { -1 1 5 }
IRT
1: { 1 -5 -1 5 }

PDER will return the DERivative of a Polynomial. Example:
The d/dx (x^3 - 5*x^2 - x + 5) = 3*x^2 - 10*x - 1

1: { 1 -5 -1 5 }
PDER
1: { 3 -10 -1 }

PF will do a Partial Fraction expansion on a transfer function.
Example:
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)

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, PMUL, PDIV are all obvious, they take two polynomial lists off
the stack and perform the operation on them.

PDIV returns the quotient polynomial and the remainder polynomial.

L2A converts a list to an array. (and back) [No-op in MorphEngine as lists and arrays are identical]
1: { 1 2 3 }
L2A
1: [ 1 2 3 ]
L2A
1: { 1 2 3 }

EVPLY evaluates any polynomial at a point. [PEVAL has the same ability and more]
x^3 - 3*x^2 +10*x - 5 | x=2.5 = 16.875

2: { 1 -3 10 -5 }
1: 2.5
EVPLY
1: 16.875
oliver
Site Admin
 
Posts: 433
Joined: Sat May 01, 2010 2:11 pm

Return to Downloadable Folders / Shared Data

Who is online

Users browsing this forum: No registered users and 1 guest

cron