summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcookedm <cookedm@localhost>2005-12-21 16:40:27 +0000
committercookedm <cookedm@localhost>2005-12-21 16:40:27 +0000
commit27ee3d2af4f457dfd64ee803a1addecd6a9b191a (patch)
tree763ad56552a687ae0118a8e7a0690ea506dacb08
parent42e7dd3c039992cb14b113a9314b3d6fefcb56bc (diff)
downloadnumpy-27ee3d2af4f457dfd64ee803a1addecd6a9b191a.tar.gz
p=poly1d([1,2,3], variable='lambda') will use 'lambda' as the variable in str(p)
-rw-r--r--scipy/base/polynomial.py20
-rw-r--r--scipy/base/tests/test_polynomial.py10
2 files changed, 25 insertions, 5 deletions
diff --git a/scipy/base/polynomial.py b/scipy/base/polynomial.py
index 35c64b5a9..f3be1adc9 100644
--- a/scipy/base/polynomial.py
+++ b/scipy/base/polynomial.py
@@ -365,11 +365,17 @@ class poly1d(object):
quotient and remainder).
asarray(p) will also give the coefficient array, so polynomials can
be used in all functions that accept arrays.
+
+ p = poly1d([1,2,3], variable='lambda') will use lambda in the
+ string representation of p. p.variable stores the string used for the
+ variable.
"""
- def __init__(self, c_or_r, r=0):
+ def __init__(self, c_or_r, r=0, variable=None):
if isinstance(c_or_r, poly1d):
for key in c_or_r.__dict__.keys():
self.__dict__[key] = c_or_r.__dict__[key]
+ if variable is not None:
+ self.__dict__['variable'] = variable
return
if r:
c_or_r = poly(c_or_r)
@@ -381,6 +387,9 @@ class poly1d(object):
c_or_r = NX.array([0.])
self.__dict__['coeffs'] = c_or_r
self.__dict__['order'] = len(c_or_r) - 1
+ if variable is None:
+ variable = 'x'
+ self.__dict__['variable'] = variable
def __array__(self, t=None):
if t:
@@ -402,6 +411,7 @@ class poly1d(object):
def __str__(self):
N = self.order
thestr = "0"
+ var = self.variable
for k in range(len(self.coeffs)):
coefstr ='%.4g' % abs(self.coeffs[k])
if coefstr[-4:] == '0000':
@@ -419,16 +429,16 @@ class poly1d(object):
if coefstr == '0':
newstr = ''
elif coefstr == 'b':
- newstr = 'x'
+ newstr = var
else:
- newstr = '%s x' % (coefstr,)
+ newstr = '%s %s' % (coefstr, var)
else:
if coefstr == '0':
newstr = ''
elif coefstr == 'b':
- newstr = 'x**%d' % (power,)
+ newstr = '%s**%d' % (var, power,)
else:
- newstr = '%s x**%d' % (coefstr, power)
+ newstr = '%s %s**%d' % (coefstr, var, power)
if k > 0:
if newstr != '':
diff --git a/scipy/base/tests/test_polynomial.py b/scipy/base/tests/test_polynomial.py
index c03dc5809..928306e32 100644
--- a/scipy/base/tests/test_polynomial.py
+++ b/scipy/base/tests/test_polynomial.py
@@ -59,6 +59,16 @@ poly1d([ 0.00039683, 0.00277778, 0.025 , 0. , 0. ,
poly1d([ 2., 2.])
>>> p.deriv(2)
poly1d([ 2.])
+
+>>> q = poly1d([1.,2,3], variable='y')
+>>> print q
+ 2
+1 y + 2 y + 3
+>>> q = poly1d([1.,2,3], variable='lambda')
+>>> print q
+ 2
+1 lambda + 2 lambda + 3
+
"""
from scipy.test.testing import *