Forelesning 5: Numerisk derivasjon og likninger#

Numerisk derivasjon#

Analytisk derivasjon: $\(f'(x) = \lim_{\Delta x \rightarrow 0} \frac{f(x+\Delta x)-f(x)}{\Delta x}\)$

Numerisk derivasjon: $\(f'(x) \approx \frac{f(x+\Delta x)-f(x)}{\Delta x}\)$

der \(\Delta x\) er et lite tall.

def framoverdifferanse(f, x, dx = 1E-8):
    dy = f(x + dx) - f(x)
    return dy/dx

def bakoverdifferanse(f, x, dx = 1E-8):
    dy = f(x) - f(x - dx)
    return dy/dx

def sentraldifferanse(f, x, dx = 1E-3):
    """
    Bruker sentraldifferansen som tilnærming for den numerisk deriverte av f.
    --------
    f: funksjonen vi skal derivere
    x: punktet vi skal derivere i
    dx: delta x, avstanden mellom x-punktene
    """
    dy = f(x+dx) - f(x - dx)
    return dy/(2*dx)

def f(x):
    return x**2

print(framoverdifferanse(f,1))
print(bakoverdifferanse(f,1))
print(sentraldifferanse(f,1))
1.999999987845058
1.9999999989472883
1.9999999999998352

Likninger#

def f(x):
    return 2*x**2 - 2

def fder(x):
    return 4*x

def newtons(f, fder, x, N = 100, tol = 1E-10):
    i = 0
    while abs(f(x)) > tol and i < N:
        x = x - f(x)/fder(x)
        i += 1
    return x

print(newtons(f,fder,10))
1.0000000000139897