Advertisement
proteinfolder

RK4 - SBPC2017 (Octave)

Jul 20th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.53 KB | None | 0 0
  1. % Código utilizado no minicurso de computação científica na 69 SBPC, UFMG - Belo Horizonte
  2.  
  3. % 'Entre com o tamanho inicial da populacao (10): N(0)= '
  4. N_0 = 10;
  5.  
  6. %'Taxa (razao) de crescimento (0.1 equivale a 10%), r= '
  7. r = 0.1;
  8.  
  9. % taxa de morte (0.05 equivale a 5%) d =  (0.05)
  10. d = 0.05;
  11.  
  12. % Capacidade de suporte
  13. k = 1000;
  14.  
  15. % 'Tamanho do passo de integracao (0.00001 - 100), h= '
  16. dt  = 1;
  17.  
  18. % 'Numero de geracoes (200): '
  19. N_t = 200;
  20.  
  21. % Numero de passos adaptado ao tamnho do passo para dar o numero desejado de geracoes
  22. N_t = N_t / dt;
  23.  
  24. % constroi um vetor de 0 a N_t com N_t elementos igualmente espacados
  25. t = linspace(0, (N_t)*dt, N_t);
  26.  
  27. % constroi um vetor de N com 0 em cada posicao e tamnho N_t+2
  28. N = zeros(N_t, 1);
  29.  
  30. % primeira posicao e o valor inicial
  31. N(1) = N_0;
  32.  
  33. % primeiro t e zero
  34. t(1) = 0;
  35.  
  36. % time step
  37. h = dt;
  38.  
  39. % modelo exponencial
  40. fpop = @(t,x) r*x;
  41.  
  42. % modelo com morte
  43. % fpop = @(t,x) r*x - (x*d);
  44.  
  45. % modelo logistico
  46. % fpop = @(t,x) (r*x)*(k-x)/k;
  47.  
  48. % laco do runge-kutta RK4 de 1 a N_t
  49. for n = 1:N_t
  50.    
  51.     % calcula os 4 coeficientes
  52.     k1 = h*fpop(t(n),N(n));
  53.     k2 = h*fpop(t(n)+.5*h,N(n)+.5*k1);
  54.     k3 = h*fpop(t(n)+.5*h,N(n)+.5*k2);
  55.     k4 = h*fpop(t(n)+h,N(n)+.5*k3);
  56.  
  57.     % aplica a formula de RK
  58.     N(n+1) = N(n) + (k1 + 2*k2 + 2*k3 +k4)/6;
  59.    
  60.     % calcula o proximo tempo
  61.     t(n+1) = t(n) + h;
  62. end
  63.  
  64. plot(t, N);
  65. xlabel('t'); ylabel('N(t)');
  66.  
  67. legend('runge-kutta');
  68. filestem = strcat('rk4_', num2str(N_t), '_', num2str(h));
  69. print(filestem, '-dpng');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement