Been a while since I added new methods, but here comes two.
The first one is called Newton's method. Basically it will "draw" a tangent that goes through the initial guess. Then in the next iteration it will draw a second tangent for the x point where the first tangent crossed the x-axis and so on. You need to supply it an initial guess.
The formula is x = x0 - f(x0)/f'(x0).
type F = Float
newton :: (F -> F) -> (F -> F) -> F -> Integer -> [F]
newton _ _ _ 0 = []
newton f f' xi k = xc : newton f f' xc (k-1)
where xc = xi - f(xi)/f'(xi)
func :: F -> F
func x = x^3+x-1
func' :: F -> F
func' x = 3*x^2+1
main = do
let answer = newton (func) (func') 1 4
print answer
The second method is called the Secant method. Instead of using a tangent it uses a secant line, which is a line intersecting two points on the function curve. In the next iteration the next secant line will go through the last two x values. In this method like in the Bisection Method we need to choose the two initial guesses around the true solution! In other words for the two initial guesses x0, x1 the following must be true f(x0)*f(x1)<0 to guarantee a solution for a continues function.
The formula is x = x1 - f(x1)(x1-x0)/(f(x1)-f(x0)).
type F = Float
secant :: (F -> F) -> F -> F -> Integer -> [F]
secant _ _ _ 0 = []
secant f x0 x1 k = xc : secant f x1 xc (k-1)
where xc = x1 - f(x1)*(x1-x0)/(f(x1)-f(x0))
func :: F -> F
func x = x^3+x-1
main = do
let answer = secant (func) 0.5 1 4
print answer