Advertisement
Guest User

Untitled

a guest
May 21st, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.80 KB | None | 0 0
  1. function [x, y, s0] = odj_gadjanje_linpr(T, g, a, b, A, B, c, n, s0, tol)
  2.   [m, ~] = size(A);
  3.   x = linspace(a, b, n + 1);
  4.   y = zeros(n + 1, m);
  5.   max_it = 10;
  6.   s = s0;
  7.   br_koraka = 0;
  8.   for i = 1:max_it
  9.     s
  10.     [x, y] = odj_rk4(@(x, y) (T(x) * y' + g(x))', n + 1, a, s, b);
  11.     Fsi = A * s' + B * y(n + 1, :)' - c;
  12.     if norm(Fsi) < tol
  13.       break;
  14.     endif
  15.     dy = zeros(length(s));
  16.     for j = 1:length(s)
  17.       ds = s;
  18.       deltas = sqrt(tol) * s(j);
  19.       ds(j) += deltas;
  20.       [~, yds] = odj_rk4(@(x, y) (T(x) * y' + g(x))', n + 1, a, ds, b);
  21.       dy(:, j) = (-y(n + 1, :)' + yds(n + 1, :)') / deltas;
  22.     end
  23.     dF = A + B * dy;
  24.     d = dF \ Fsi;
  25.     s = s - d';
  26.     br_koraka += 1;
  27.   endfor
  28.   fprintf("Broj koraka u Newtonovoj metodi: %d\n", br_koraka);
  29. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement