 module Minim where

 --тестовые функции
 f1 x =(1-x)*(1-x)
 f2 x =  (x-2)^2

 --функция поиска минимума методом деления интервала пополам
 findMin :: Float -> Float -> Float -> (Float -> Float) -> Float
 findMin eps a b f | (b-a<eps)        = (a+b)/2
	           | ( f(x1)< f(xm) ) = findMin eps a xm f
                   | ( f(x2)< f(xm) ) = findMin eps xm b f
		   | True             = findMin eps x1 x2 f
		  where
			x1=a+(b-a)/4
                        x2=b-(b-a)/4
			xm=(a+b)/2

 --пример findMin 0.00001 (-100) 150 f1