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