Advertisement
Guest User

Met3

a guest
Nov 24th, 2015
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.81 KB | None | 0 0
  1. function [x,fx,n,rez] = parabola( fun, x1, x3, tol )
  2. % Metoda Parabole - trazenje minimuma funkcije jedne promenljive FUN
  3. % aproksimacijom polinomom.
  4. % Pocetne tacke su X1 i X3, TOL je trazena tacnost.
  5. % Minimum je u X i ima vrednost FX posle N iteracija.
  6. X = [ x1 (x1+x3)/2 x3 ]';
  7. Y = [ [1 1 1]' X X.*X ];
  8. F = feval(fun, X);
  9. abc = Y \ F;
  10. x = -abc(2) / 2 / abc(3);
  11. n = 1;
  12. rez=[];
  13. rez = [rez; [n X' F' abc' x abs( [1 x x*x] * abc - feval(fun,x))] ];
  14.  
  15. while abs( [1 x x*x] * abc - feval(fun,x)) > tol
  16.   if x > X(2)
  17.     X = sort( [ X(2); x; X(3) ] );
  18.   else
  19.     X = sort( [ X(1); x; X(2) ] );
  20.   end
  21.   Y = [ [1 1 1]' X X.*X ];
  22.   F = feval(fun, X);
  23.   abc = Y \ F;
  24.   x = -abc(2) / 2 / abc(3);
  25.   fx = feval(fun, x);
  26.   n = n + 1;
  27.   rez = [rez; [n X' F' abc' x abs( [1 x x*x] * abc - feval(fun,x))] ];
  28. end
  29. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement