Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clc, clear variables, close all
- q0 = 0.5; % input wartość funkcji w punkcie początkowym
- q0p = 0.5; % input pochodna kierunkowa funkcji w punkcie początkowym
- tau0 = 0.2; % input krok początkowy
- tau_max = 0.3; % krok max.
- chi = 2.1; % input wsp. ekspansji
- beta = 0.1; % input wsp. testu skośnego
- J = 10; % input dopuszczalna liczba korzystnych obliczeń wartości funkcji
- K = 15; % input dopuszczalna liczba ogólnych obliczeń wartości funkcji
- Delta = 10e-21; % input dop. minimalna wartość wsp. kroku
- delta = 0.1; % pożadana dokładność określenia kroku optymalnego
- %inicjalizacja zmiennych
- q_min = q0;
- tau_opt = 0;
- j = 0;
- k = 0;
- l = 0;
- e = 0;
- c = 0;
- tau = tau0;
- qf = @(tau) 2 * tau^3 - 4 * tau^2 -0.5 * tau + 7;
- while 1
- q = qf(tau);
- if q < q_min
- q_min = q;
- tau_opt = tau;
- l = l + 1;
- end
- if q <= q0
- j = j + 1;
- else
- k = k + 1;
- end
- if k + j >= K
- if j <= 0
- disp('Błąd 1');
- return;
- else
- break;
- end
- end
- if j >= J
- break;
- end
- if q < q0 + beta * q0p * tau
- if c == 1
- break;
- else
- e = 1;
- tau = chi * tau;
- end
- else
- if e == 1
- break;
- else
- c = 1;
- tau = chi ^ (-1) * tau;
- end
- end
- end
- % sekwencja końcowa
- if q >= q0
- disp('Błąd 2');
- return;
- end
- if abs(tau_opt) <= Delta
- disp('Błąd 3');
- end
- fprintf('f( %f ) == %f <-- minimum w kierunku', tau_opt, q_min);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement