# Project 1 / Functions - A Newton Scanner

## Project 1

Please develop the function *ScanForRoots *to scan a given function *f*(*x*) for it’s roots using the newton’s algorithm.

## The Interface

The program should read the following input parameters from an input file. The file’s format is given as follows.

- [max number of roots to find]
- [lower bound: lb] [upper bound: up] [step width: sw]
- [precision eps] [stepwidth h] [max iteration: ix]

The program should search the root of a function with the starting position *x*_{0}. The starting position *x*_{0 }should be taken from the interval which is described by the parameters ub, lb and sw read from the input file. The found roots of the function should be saved in an dynamical array, which should be a parameter of the function *ScanForRoots *The size of the array should be set by a parameter, which is read from the input file.

An example data file is given below.

- 10
- -10. +10. 0.1
- e-7 0.01 100

In the project a reasonable interval should be selected to be able to check the quality of the developed software.

## The Function *ScanForRoots*

So the interface to *ScanForRoots *is the following.

integer function ScanForRouts(f,lb,ub,sw,eps,h,maxit,roots)

Parameter |
Type Comment | |

f |
function function to analyse | |

lb |
real(8) |
lower bound of search interval |

ub |
real(8) |
upper bound of search interval |

sw |
real(8) |
step width for the starting position |

eps |
real(8) |
precision for the newton algorithm |

maxit |
integer |
maximal number of iteration for one root search |

roots |
real(8) |
one indexed array for the found roots |

The return value of *ScanForRoots *should give the number of found roots. The roots should not be stored multiple.

The main program which should call *ScanForRoots *should do the following.

- open, read and close the input file ScanForRoots.inp.
- call ScanForRoots
^{1 }to search for the function’s roots. - write a little report which gives a list of the found roots