Advertisement
Guest User

shit#2

a guest
Mar 30th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.61 KB | None | 0 0
  1. clc, clear variables, close all
  2.  
  3. q0 = 0.5; % input wartość funkcji w punkcie początkowym
  4. q0p = 0.5; % input pochodna kierunkowa funkcji w punkcie początkowym
  5. tau0 = 0.2; % input krok początkowy
  6. tau_max = 0.3; % krok max.
  7. chi = 2.1; % input wsp. ekspansji
  8. beta = 0.1; % input wsp. testu skośnego
  9. J = 10; % input dopuszczalna liczba korzystnych obliczeń wartości funkcji
  10. K = 15; % input dopuszczalna liczba ogólnych obliczeń wartości funkcji
  11. Delta = 10e-21; % input dop. minimalna wartość wsp. kroku
  12. delta = 0.1; % pożadana dokładność określenia kroku optymalnego
  13.  
  14. %inicjalizacja zmiennych
  15. q_min = q0;
  16. tau_opt = 0;
  17. j = 0;
  18. k = 0;
  19. l = 0;
  20. e = 0;
  21. c = 0;
  22. tau = tau0;
  23. qf = @(tau) 2 * tau^3 - 4 * tau^2 -0.5 * tau + 7;
  24. while 1
  25.     q = qf(tau);
  26.     if q < q_min
  27.         q_min = q;
  28.         tau_opt = tau;
  29.         l = l + 1;
  30.     end
  31.    
  32.     if q <= q0
  33.         j = j + 1;
  34.     else
  35.         k = k + 1;
  36.     end
  37.    
  38.     if k + j >= K
  39.         if j <= 0
  40.             disp('Błąd 1');
  41.             return;
  42.         else
  43.             break;
  44.         end
  45.     end
  46.    
  47.     if j >= J
  48.         break;
  49.     end
  50.    
  51.     if q < q0 + beta * q0p * tau
  52.         if c == 1
  53.             break;
  54.         else
  55.             e = 1;
  56.             tau = chi * tau;
  57.         end
  58.     else
  59.         if e == 1
  60.             break;
  61.         else
  62.             c = 1;
  63.             tau = chi ^ (-1) * tau;
  64.         end
  65.     end
  66. end
  67.  
  68. % sekwencja końcowa
  69. if q >= q0
  70.     disp('Błąd 2');
  71.     return;
  72. end
  73.  
  74. if abs(tau_opt) <= Delta
  75.     disp('Błąd 3');
  76. end
  77.  
  78. fprintf('f( %f ) == %f <-- minimum w kierunku', tau_opt, q_min);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement