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:
Een reëel getal of een NumPy-rij, naargelang het argumenttype van de functie.
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]