Advertisement
losmi93

KUBNA1

Nov 25th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.52 KB | None | 0 0
  1. function [x,fx,n,rez] = kubna1( fun, dfun, x1, x2, tol )
  2. % Kubna metoda - trazenje minimuma funkcije jedne promenljive FUN
  3. % aproksimacijom polinomom 3. reda;
  4. % Pocetni interval je [X1, X3], TOL je trazena tacnost.
  5. % Minimum je u X i ima vrednost FX posle N iteracija.
  6.  
  7. X = [ x1 x2 ]';
  8. Y = [ [1 1]' X X.*X X.*X.*X;  [0 0]' [1 1]' 2*X 3*X.*X ];
  9. F = [ feval( fun,  X);  feval( dfun, X) ];
  10. abcd = Y \ F;  b = abcd(2); c = abcd(3); d = abcd(4);
  11. D = 4*c*c - 12*b*d;
  12. xa = ( -2*c - sqrt(D) ) / 6 / d;
  13. xb = ( -2*c + sqrt(D) ) / 6 / d;
  14. n = 0;
  15. rez = [n X' F' abcd' D xa xb ];
  16.  
  17. if (xa>X(1)) & (xa<X(2))
  18.   x = xa;
  19. else
  20.   if (xb>X(1)) & (xb<X(2))
  21.     x = xb;
  22.   else
  23.     disp('Greska u racunanju')
  24.     return
  25.   end
  26. end
  27. if feval(dfun,x) < 0
  28.   X(1) = x;
  29. else
  30.   X(2) = x;
  31. end
  32. rez = [rez X' abs( [1 x x*x x*x*x] * abcd - feval(fun,x))];
  33.  
  34. while abs( [1 x x*x x*x*x] * abcd - feval(fun,x)) > tol
  35.   Y = [ [1 1]' X X.*X X.*X.*X;  [0 0]' [1 1]' 2*X 3*X.*X ];
  36.   F = [ feval( fun,  X);  feval( dfun, X) ];
  37.   abcd = Y \ F;  b = abcd(2); c = abcd(3); d = abcd(4);
  38.   D = 4*c*c - 12*b*d;
  39.   xa = ( -2*c - sqrt(D) ) / 6 / d;
  40.   xb = ( -2*c + sqrt(D) ) / 6 / d;
  41.   n = n + 1;
  42.   pom=[n X' F' abcd' D xa xb ];
  43.  
  44.   if (xa>X(1)) & (xa<X(2))
  45.     x = xa;
  46.   else
  47.     if (xb>X(1)) & (xb<X(2))
  48.       x = xb;
  49.     else
  50.       disp('Greska u racunanju')
  51.       break
  52.     end
  53.   end
  54.   if feval(dfun,x) < 0
  55.     X(1) = x;
  56.   else
  57.     X(2) = x;
  58.   end
  59.  
  60.   rez = [rez; [pom X' abs( [1 x x*x x*x*x] * abcd - feval(fun,x))] ];
  61. end
  62. fx = feval(fun, x);
  63. 
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement