Een veelterm $$V(x)$$ kunnen we via een woordenboek voorstellen, waarbij de sleutels de machten van $$x$$ voorstellen
en de waarden de bijhorende coëfficiënten aangeven. Zo stelt het woordenboek {1:2, 3:4, 0:5}
de veelterm
$$4x^3 + 2x + 5$$ voor.
Schrijf volgende functies:
lijst()
met als argument een woordenboek zoals hierboven gedefinieerd. De functie
zet het woordenboek om naar een lijstgedaante om. De lijst bevat alle coëfficiënten van de veelterm, zodat
positie 0 de constante bevat, positie 1 de coëfficiënt van $$x^1$$ enz.
som()
met als argumenten 2 woordenboeken van de hierboven voorgestelde gedaante. De functie levert
als resultaat een woordenboek dat de som voorstelt van de argumentveeltermen.
Deze
product()
doet hetzelfde, maar berekent nu het product van de argumentveeltermen.
som()
en product()
hebben een derde naamargument, namelijk tol
met defaultwaarde $$1E-10$$.
De argument is de minimale absolute waarde van een veeltermcoëfficiënt opdat de term in het resultaat behouden zou blijven.
Termen in de veelterm met een coëfficiënt dicht bij 0.0 worden op die manier uit het resultaat verwijderd, wat het resultaat
uniek maakt (anders zouden verschillende woordenboekvoorstellingen voor dezelfde veelterm mogelijk zijn).
Ter herinnering: nemen we de veeltermen $$a(x)$$ en $$b(x)$$ als
$$a(x)=\sum_{i=0}^{N}a_ix^i$$
$$b(x)=\sum_{i=0}^{M}b_ix^i$$
(dus respectievelijk van de graad $$N$$ en $$M$$, dan wordt hun product
$$
c(x)=a(x)b(x)
$$
gegeven door
$$
c(x)=\sum_{k=0}^{M+N}\big(\sum_{l=0}^{k}a_l b_{k-l} \big) x^k
$$
De coëfficiënten van de veelterm
$$c(x)=\sum_{i=0}^{M+N}c_ix^i$$
van de graad $$M+N$$ worden dus gegeven door
$$
c_i=\sum_{l=0}^{i}a_l b_{i-l}
$$
v = {3:4.0, 1:-2.0, 10:3.5, 0:1.0} w = {0:2.0, 7:3.0, 1:2.0, 12:9.0} lijst(v) = [1.0, -2.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.5] lijst(w) = [2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 9.0] som(v, w) = {0: 3.0, 10: 3.5, 3: 4.0, 12: 9.0, 7: 3.0} product(v, w) = {0: 2.0, 1: -2.0, 2: -4.0, 3: 8.0, 4: 8.0, 7: 3.0, 8: -6.0, 10: 19.0, 11: 7.0, 12: 9.0, 13: -18.0, 15: 36.0, 17: 10.5, 22: 31.5}