Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [x, y, s0] = odj_gadjanje_linpr(T, g, a, b, A, B, c, n, s0, tol)
- [m, ~] = size(A);
- x = linspace(a, b, n + 1);
- y = zeros(n + 1, m);
- max_it = 10;
- s = s0;
- br_koraka = 0;
- for i = 1:max_it
- s
- [x, y] = odj_rk4(@(x, y) (T(x) * y' + g(x))', n + 1, a, s, b);
- Fsi = A * s' + B * y(n + 1, :)' - c;
- if norm(Fsi) < tol
- break;
- endif
- dy = zeros(length(s));
- for j = 1:length(s)
- ds = s;
- deltas = sqrt(tol) * s(j);
- ds(j) += deltas;
- [~, yds] = odj_rk4(@(x, y) (T(x) * y' + g(x))', n + 1, a, ds, b);
- dy(:, j) = (-y(n + 1, :)' + yds(n + 1, :)') / deltas;
- end
- dF = A + B * dy;
- d = dF \ Fsi;
- s = s - d';
- br_koraka += 1;
- endfor
- fprintf("Broj koraka u Newtonovoj metodi: %d\n", br_koraka);
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement