Search code examples
latexnewtons-method

Newton Raphson Method LaTeX


How to implement Newton Raphson Method in LaTeX?


Solution

  • \documentclass{article}
    \usepackage[ngerman]{babel}
    \usepackage{xfp}
    \usepackage{tikz}
    
    \newcount\MaxIter
    \newcount\Counter
    % the function
    \newcommand{\f}[1]{%
        #1%
    }
    % first derivation of the function
    \newcommand{\df}[1]{%
        1%
    }
    % the command
    % 1. variable: max iterations
    % 2. variable: start value x_0
    \newcommand{\NewtonRaphson}[2][5]{
        \Counter=0%
        \MaxIter=#1%
        \pgfmathsetmacro{\x}{#2}%
        \Loop%
    }
    % the loop
    \newcommand{\Loop}{%
        \let\next= \Loop%
        \pgfmathsetmacro{\tempf}{\fpeval{\f{\x}}}%
        \pgfmathsetmacro{\tempdf}{\fpeval{\df{\x}}}%
        \pgfmathsetmacro{\x}{\fpeval{\x-\tempf/\tempdf}}%
        \ifnum\Counter<\MaxIter \advance\Counter by 1 \else \let\next=\relax \fi%
        \next%
    }
    
    \begin{document}
        % set function
        \renewcommand{\f}[1]{%
            #1^2-2%
        }
        % set first derivation
        \renewcommand{\df}[1]{%
            2*#1%
        }
        % calculate
        \NewtonRaphson[10]{0.5}
        % print
        \pgfmathprintnumber[precision=10]{\x}
    \end{document}