Files
eth-summaries/semester3/numcs/parts/03_zeros/04_newton-one-d.tex
2026-01-14 19:04:44 +01:00

32 lines
1.0 KiB
TeX

\newsectionNoPB
\subsection{Newtonverfahren in 1D}
Beim Newtonverfahren verwendet man für jeden Iterationsschritt die lineare Funktion $\tilde{F} = F(x^(k)) + F'(x^{(k)})(x - x^{(k)})$. Die Nullstelle ist dann:
\rmvspace
\begin{align*}
x^{(k + 1)} := x^{(k)} - \frac{F(x^{(k)})}{F'(x^{(k)})}, \mediumhspace \text{falls } F'(x^{(k)}) \neq 0
\end{align*}
\stepLabelNumber{all}
\inlineremark Die Newton-Iteration ist eine Fixpunktiteration mit quadratischer lokaler Konvergenz, mit
\rmvspace
\begin{align*}
\phi(x) = x - \frac{F(x)}{F'(x)} \Longrightarrow \phi'(x) = \frac{F(x) F''(x)}{(F'(x))^2} \Longrightarrow \phi'(x^*) = 0
\end{align*}
\drmvspace
falls $F(x^*) = 0$ und $F^(x^*) \neq 0$
\newpage
\innumpy Ist das Newton-Verfahren mit sehr wenig code implementierbar:
\begin{code}{python}
def newton_method(f, df, x: float, tol=1e-12, maxIter=100):
""" Use Newton's method to find zeros, requires derivative of f """
iter = 0
while (np.abs(df(x)) > tol and iter < maxIter):
x -= f(x)/df(x); iter += 1
return x, iter
\end{code}