[Numpy-discussion] Piecewise functions.
Gerard Vermeulen
gerard.vermeulen at grenoble.cnrs.fr
Fri Sep 23 01:55:46 CDT 2005
On Thu, 22 Sep 2005 17:44:59 +0200
Andrea Riciputi <ariciputi at pito.com> wrote:
> Hi all,
> this is probably an already discussed problem, but I've not been able
> to find a solution even after googling a lot.
>
> I've a piecewise defined function:
>
> /
> | f1(x) if x <= a
> f(x) = |
> | f2(x) if x > a
> \
>
> where f1 and f2 are not defined outside the above range. How can I
> define such a function in Python in order to apply (map) it to an
> array ranging from values smaller to values bigger than a?
>
This does maybe what you want:
from scipy import *
def f(x):
"""Approximative implementation of:
-1/(x-pi) for x < pi
1/(x-pi) for x > pi
"""
result = zeros(len(x), x.typecode())
i = argmin(abs(x-pi))
# you may have to tweak i here, because it may be off by 1
result[:i+1] = -1/(x[:i+1]-pi)
result[i+1:] = 1/(x[i+1:]-pi)
return result
x = arange(0, 10, 1, Float)
print f(x)
print abs(1/(x-pi))
Gerard
More information about the Numpy-discussion
mailing list