In [1]:
%pylab
%matplotlib inline
import mpld3
Vi skal tilnærme løsningen av $\ln(x)+cos(x)-1=0$.
In [2]:
def f(x):
return log(x) + cos(x) - 1
Vi tegner for å finne $x_0$:
In [3]:
x = linspace(1,20,200)
y = f(x)
plot(x,y, lw=2)
plot([1,20],[0,0], lw=2, color='k')
ax = gca()
mpld3.display()
Out[3]:
Vi ser en løsning nær $4$, så vi velger $x_0=4$. Vi deriverer og finner at $f'(x)=1/x-\sin(x)$.
In [4]:
def fder(x):
return 1/x - sin(x)
Vi kan beregne det en om en:
In [5]:
x0=4
x1=x0- f(x0)/fder(x0)
print(x1)
x2=x1-f(x1)/fder(x1)
print(x2)
x3=x2-f(x2)/fder(x2)
print(x3)
Når stopper vi? Vi kan sjekke for x3:
In [6]:
f(x3)
Out[6]:
Liten nok? Da kan vi stoppe!
Ellers kan Python vurdere selv når vi kan stoppe, f.eks. når $|f(x_n)|$ er liten...
In [7]:
x=4
for i in range(100):
x = x-f(x)/fder(x)
if abs(f(x)) < 0.001:
break
print(x)