Numerisk løsing av likninger#

Newtons metode#

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

def fder(x):
    return 2*x

def newtons(f, fder, x0, n = 1000):
    x = x0
    for i in range(n):
        x = x - f(x)/fder(x)
    return x

newtons(f, fder, -500)
-1.414213562373095

\(f(x) = g(x)\)

\(x^5 - 4x + 3 = x^7 - 1\)

\(-x^7 + x^5 - 4x + 4 = 0\)

\(h'(x) = -7x^6 + 5x^4 - 4\)

def f(x):
    return x**5 - 4*x + 3

def g(x):
    return x**7 - 1

def h(x):
    return f(x) - g(x)

def hder(x):
    return -7*x**6 + 5*x**4 - 4
def newtons(f, fder, x0, nmaks = 100, tol = 1E-12):
    """
    Newton's method for finding a root of f.
    
    f: function for which we want to find a root
    fder: derivative of f
    x0: initial guess
    nmaks: maximum number of iterations
    tol: tolerance for convergence
    Returns an approximation to a root of f.
    """
    x = x0
    i = 0
    while abs(f(x)) > tol and i < nmaks:
        x = x - f(x)/fder(x)
        i = i + 1
    return x
from numeriskemetoder import trapesmetoden # Fra eksternt bibliotek (egen python-fil)
trapesmetoden(f, 1, 2)
7.499730008352692
import numpy as np