Hello,
I’m really new to programming and want to create a programm that uses the newton method to find the zero points of a function. To do that I need the differentiated function. I’m supposed to differentiate numerically by using f(x)-f(x-1)/x-(x-1). I have no idea how im supposed to implement this into Julia. Any help would be much appreciated. Thanks in advance.
Hi!, welcome to the julia community!
there is packages that can do that for you, for example:
you can directly derivate using ForwardDiff (better than numerical aproximation and faster than symbolic derivation)
if you are looking for the univariate newton algorithm, there is Roots.jl, it has a lot of algorithms, including the newton one.
if you need to implement this yourself as a part of a course, we can help you too, do you have something in mind?
2 Likes
the grid search if i remember correctly implies finding zeros of a multivariate function in one direction iteratively, here is a newton implementation in julia, that is one part of the grid search algorithm:
function mynewton(f,df,x0,tol=1e-08,itermax=100) #here i give optional
# arguments, so later i don't need to write it in the function
xiplus1 = zero(eltype(x0)) #basically 0.0, but more adaptable
#good to remember that 1 and 1.0 are of distinct type, the first one is
#an integer, the second one is a float
xi = x0
#main loop
tolf=1000
iter_count=0
while (tolf>=tol) && (iter_count<=itermax) #the loop stops
# if the tolerance or the maximum number of iterations is achieved
xiplus1 = xi - f(xi)/df(xi)
tolf = abs(f(xiplus1))
iter_count+=1 #it adds 1 to the variable
xi = xiplus1
end
return xiplus1
end
have a look at my package
https://github.com/chakravala/Fatou.jl
it uses my package Reduce.jl for symbolic differentiation
unless you have some really weird function, I’d recommend a symbolic over finite difference
Is this a homework problem?
2 Likes