Numerieke berekening van de afgeleide van de sinus

Remove["Global`*"]

(a) Schrijf een functie d1sin met argumenten x en h die een numerieke benadering berekent van de afgeleide van sin(x) met behulp van een eerste orde differentie quotiënt, dat wil zeggen f'(x)=(f(x+h)-f(x))/h.

(b) Schrijf nu een functie diff1sin met argumenten x en h die het verschil berekent tussen d1sin en de echte afgeleide (gebruik daarvoor een accent ' ) van de sinus, in het punt x, met differentie h.

(c) Maak een lijst hlist met tweemachten van -1 tot -64 (dwz 2^-1, 2^-2, ..., 2^-64)

(d) Pas de functie diff1sin toe op hlist in het punt x=1., vergeet niet de punt achter de 1.  Deze punt zorgt ervoor dat het double precision getal 1 wordt gebruikt, en niet de exacte integer 1. Noem de output o1.

(e) Plot abs(o1) op logarithmische schaal mbv ListLogPlot. Noem het plaatje plote

(f) Schrijf een functie d2sin met argumenten x en h die een numerieke benadering berekent van de afgeleide van sin(x) met behulp van een tweede orde differentie quotiënt, dat wil zeggen f'(x)=(f(x+h)-f(x-h))/(2h).

(g) Schrijf nu een functie diff2sin met argumenten x en h die het verschil berekent tussen d2sin en de echte afgeleide van de sinus, in het punt x, met differentie h.

(h) Pas de functie diff2sin toe op hlist in het punt x=1, vergeet niet de punt achter de 1. Noem de output o2

(i) Plot abs(o2) op logarithmische schaal mbv ListLogPlot met een andere kleur. Noem het plaatje ploti

(j) Laat de beide plaatjes samen zien (hint: gebruik Show[ploti,plote])

(k) Beschrijf en verklaar wat je ziet in onderstaand plaatje (ongeveer 10 zinnen). Welke waarde van differentie h is optimaal voor de verschillende benaderingen?

(l) De functie N berekent de uitkomst numeriek met de gewenste precisie. Plot nu N[abs (o1), 1] en N[abs (o2), 1] waarbij je dus eist dat de uitkomst klopt op 1 decimaal. Zolang $MaxExtraPrecision groot genoeg is, zal Mathematica het correcte antwoord geven. Becommentarieer het nieuwe plaatje. Combineer ook dit plaatje met de beide plaatjes uit onderdeel j.

(m) Schrijf nu een functie met argument x die Module gebruikt en waarin het combinatieplaatje van onderdeel l getekend wordt. Test de functie, en gebruik daarna Manipulate om een aantal x waarden tussen 0 en 2π te onderzoeken. Om te zorgen dat het argument exact is gebruik je bv {x,0,2π,π/128}.

Becommentarieer het resultaat.

(n) Gebruik nu Manipulate om de volgende x waarden te onderzoeken x=1+2kπ, met {k,0,10}.

Wat merk je op ? Is de precisie relatief of absoluut?

(o) Hoe beoordeel je de geschiktheid van Mathematica als PSE voor dit probleem?