Numerical Polynomials¶
If the input is wrong, then the output will be wrong as well.
symbols¶
The solver computes with complex numbers and the imaginary unit
can be denoted by i
or I
. For example:
p = 'x - i;'
which represents the polynomial x - i
.
While i
and I
are symbols, they should not be used as
the names of variables, because i
and I
are interpreted as numbers.
The polynomials can be written in factored form. For example:
p = '(y - 2)*(x + y - 1)^2;'
To enter this polynomial, first, the number of variables must be set.
from phcpy.dimension import set_double_dimension, get_double_dimension
set_double_dimension(2)
get_double_dimension()
which returns 2
, confirming the number of variables.
from phcpy.polynomials import set_double_polynomial, get_double_polynomial
set_double_polynomial(1, 2, p)
get_double_polynomial(1)
shows
'y^3 + 2*y^2*x + y*x^2 - 4*y^2 - 6*y*x - 2*x^2 + 5*y + 4*x - 2;'
Observe that the variable y
appears first in the polynomial.
from phcpy.polynomials import string_of_symbols
string_of_symbols()
confirms the list of symbols used as variable names:
['y', 'x']
If that is inconvenient, the simple trick is to add
the null polynomial x - x
in front of the string
representation to ensure x
comes first.
q = 'x - x + ' + p
q
defines the string 'x - x + (y - 2)*(x + y - 1)^2;'
To continue, the polynomial that has been set must be cleared.
from phcpy.polynomials import clear_double_system
clear_double_system()
set_double_dimension(2)
set_double_polynomial(1, 2, q)
get_double_polynomial(1)
which shows
'x^2*y + 2*x*y^2 + y^3 - 2*x^2 - 6*x*y - 4*y^2 + 4*x + 5*y - 2;'
Polynomials added to the system will follow the same order of symbols.
r = 'y**2 + 4*x + y - 1;'
set_double_polynomial(2, 2, r)
get_double_polynomial(2)
confirms
'y^2 + 4*x + y - 1;'
Consider the entire system of polynomials:
from phcpy.polynomials import get_double_system
get_double_system()
returns the list
['x^2*y + 2*x*y^2 + y^3 - 2*x^2 - 6*x*y - 4*y^2 + 4*x + 5*y - 2;',
'y^2 + 4*x + y - 1;']
numbers¶
The letters e
and E
appear in the scientific notation
of floating-point numbers. Therefore, these letters e
and E
should not be used as the names of variables.
Even as coefficients can be entered as exact rational numbers, they are evaluated to floating-point numbers.
clear_double_system() # restart
p = 'x - 1/3;'
Entering p
goes then as follows:
set_double_dimension(1)
set_double_polynomial(1, 1, p)
get_double_polynomial(1)
which then shows the decimal floating-point expansion of 1/3
:
' + x - 3.33333333333333E-01;'
Let us double the precision, first importing the corresponding double double functions:
from phcpy.dimension import set_double_double_dimension
from phcpy.polynomials import set_double_double_polynomial
The statements
from phcpy.polynomials import get_double_double_polynomial
set_double_double_dimension(1)
set_double_double_polynomial(1, 1, p)
get_double_double_polynomial(1)"
then show
' + x-3.33333333333333333333333333333324E-1;'