# Program som tester tre ulike numeriske derivasjonsmetoder from math import * def f(x): return sin(x) def d1f(a,h): return (f(a+h)-f(a))/h # Enklest mulige def d2f(a,h): return (f(a+h)-f(a-h))/(2*h) # Basert på interpolasjon med parabel def d3f(a,h): return (f(a-2*h)-8*f(a-h)+8*f(a+h)-f(a+2*h))/(12*h) # Basert på interpolasjon med 3. grads polynomer for i in range(0,20): print ('i: %2i e1: % 3.6e e2: % 3.6e e3: % 3.6e' %(i, d1f(0.5,10**(-i))-cos(0.5), d2f(0.5,10**(-i))-cos(0.5), d3f(0.5,10**(-i))-cos(0.5))) # Legg merke til hvordan den økte nøyaktigheten faktisk realiseres og ikke bare ødelegges # av avrundingsfeil.