Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function fib(n)
- a = b = i = 1
- while (i < n)
- c = a + b
- a = b
- b = c
- i = i + 1
- end
- if (i == n)
- return a
- end
- end
- function find_fib(n)
- i = 1
- while (fib(i) < n)
- i = i + 1
- end
- return i
- end
- function fibonacci_method(f, interval, epsilon)
- a = first(interval)
- b = last(interval)
- n = find_fib((abs(b-a))/epsilon)
- lambda = a + (fib(n-2)/fib(n)) * (b-a)
- miu = a + (fib(n-1)/fib(n)) * (b-a)
- while (abs(b-a) > epsilon)
- if (f(lambda) > f(miu))
- a = lambda
- lambda = miu
- miu = a + (fib(n-1)/fib(n)) * (b-a)
- else
- b = miu
- lambda = a + (fib(n-2)/fib(n)) * (b-a)
- miu = lambda
- end
- end
- x_optim = (a+b)/2
- return x_min
- end
- f(x) = x^4 - 14*x^3 + 60*x^2 - 70*x
- interval = range(0, stop=2)
- epsilon = 0.3
- x_optim = fibonacci_method(f, interval, epsilon)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement