Advertisement
Guest User

Untitled

a guest
May 25th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.97 KB | None | 0 0
  1. function Jacc = ieqprime(k, R_data);
  2. %
  3. % "Распаковываем" R_data
  4. %
  5. T = R_data.T; alpha = R_data.alpha; beta = R_data.beta;
  6. %
  7. % Создаем "смещенный" на один элемент назад вектор k:
  8. % k(i) = k_disp(i+1)
  9. % Обрежем последний элемент за ненадобностью и чтобы не мешал увеличенной
  10. % размерностью вектора
  11. %
  12. k_disp = [0; k];
  13. k_disp = k_disp(1:T+2);
  14. %
  15. % Создадим матрицу Якоби и поначалу заполним его целиком по общему правилу
  16. % (помним про особенности нумерации).
  17. % Обращаем внимание на то, как функция spdiags заполняет матрицу значениями
  18. % из массивов, и сдвигаем массивы для неглавных диагоналей, чтобы
  19. % соответствовать правилам spdiags и логике требуемого якобиана.
  20. % Поправки в конце якобиана для производных от последней функции будут
  21. % применены позднее
  22. %
  23. l_diagn = alpha^2*beta*(k.^(alpha-1)).*(k_disp.^(alpha-1));
  24. l_diagn = [l_diagn; 0];
  25. l_diagn = l_diagn(2:T+3);
  26.  
  27. m_diagn = alpha*(alpha-1)*beta*(k.^(alpha-2)).*(k_disp.^alpha) - ...
  28.                  (alpha^2*beta + alpha)*(k.^(alpha-1));
  29.                
  30. u_diagn = ones(T+2, 1);
  31. u_diagn = [0; u_diagn];
  32. u_diagn = u_diagn(1:T+2);
  33. Jacc = spdiags([l_diagn m_diagn u_diagn], -1:1, T+2, T+2);
  34. %
  35. % Сделаем поправки для первой (нулевой) и последней (T+1-ой) функции.
  36. % Для этого вспомним вид этих функций.
  37. %
  38. % F_{0} = k_0 - k* = k(1) - k0;
  39. % F_{T+1} = 0 = const.
  40. %
  41. Jacc(1, 1) = 1; Jacc(1, 2:T+2) = zeros(1, T+1);
  42. Jacc(T+2, 1:T+1) = zeros(1, T+1); Jacc(T+2, T+2) = 1;
  43. det(Jacc(2:T+1,2:T+1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement