Gegeven de gevectoriseerde functie I(x, a, b), met als voorschrift:
$$I(x, a, b)=\begin{cases}1, x \in [a, b[ \\ 0, x \notin [a, b[\end{cases}$$
(zie ook oefening "Interval")

Gebruik makend van deze functie, wensen we stuksgewijs constante functies voor te stellen. Deze worden gespecificeerd via een lijst van triplets, namelijk triplets van de vorm $$(a_i, b_i, c_i)$$. Een stuksgewijsconstante functe $$f(x; (a_i, b_i, c_i))$$ neemt de waarde $$c_i$$ aan in het half-open interval $$[a_i, b_i[$$. Je mag aannemen dat de intervallen $$[a_i, b_i[$$ niet overlappen, zodat er geldt:

$$ f(x) = \sum_{i=0}^{N-1} c_i\cdot I(x, a_i, b_i) $$

Wanneer het argument van $$x$$ tot geen enkel interval behoort, is de functiewaarde gelijk aan $$0.0$$. Hierin stelt $$N$$ het aantal triplets voor. Schrijf een gevectoriseerde functie stukConst() met als argumenten:

Resultaat

Een reëel getal of een NumPy-rij, naargelang het argumenttype van de functie.

Voorbeeld

stukConst(2.1, [(1.0, 1.5, 2.0), (2.0, 3.0, 4.0)]) = 4.0
stukConst(np.array([0.0, 1.2, 1.6, 2.1, 7.0]), [(1.0, 1.5, 2.0), (2.0, 3.0, 4.0)]) = [0.0 2.0 0.0 4.0 0.0]
stukConst(np.array([0.0, 1.2, 1.6]), []) = [0.0 0.0 0.0]