Advertisement
canezzy

Untitled

Nov 11th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. function [ x,fx,n ] = MetodParabole( fun,x1,x3,tol )
  2.  
  3. X = [ x1 (x1+x3)/2 x3 ]';
  4. Y = [ [1 1 1]' X X.*X ];
  5. F = feval(fun, X);
  6. abc = Y \ F;
  7. x = -abc(2) / 2 / abc(3);
  8. fx = feval(fun,x);
  9. n = 0;
  10. while abs( [1 x x^2] * abc - fx ) > tol
  11. if (x > X(2)) && (x < X(3))
  12. if (fx < F(2)) && (fx < F(3))
  13. X = [X(2); x; X(3)]; F = [F(2); fx; F(3)];
  14. elseif (fx > F(2)) && (fx < F(3))
  15. X = [X(1); X(2); x]; F = [F(1); F(2); fx];
  16. else
  17. error('Greska: Fopt > min(F2,F3)')
  18. end %...
  19. % ...
  20. elseif (x > X(1)) && (x < X(2))
  21. if (fx < F(1)) && (fx < F(2))
  22. X = [X(1); x; X(2)]; F = [F(1); fx; F(2)];
  23. elseif (fx > F(2)) && (fx < F(1))
  24. X = [x; X(2); X(3)]; F = [fx; F(2); F(3)];
  25. else
  26. error('Greska: Fopt > min(F1,F2)')
  27. end
  28. else
  29. error('x lezi van granica')
  30. end
  31. Y = [ [1 1 1]' X X.*X ];
  32. abc = Y \ F;
  33. x = -abc(2) / 2 / abc(3);
  34. fx = feval(fun, x);
  35. n = n + 1;
  36. end
  37. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement