Advertisement
Guest User

Untitled

a guest
Jul 15th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scilab 1.84 KB | None | 0 0
  1. //Limpando o console
  2. clear;
  3. clc;
  4. tic
  5.  
  6. //Variáveis
  7. xmin = 0; //Início do domínio
  8. xmax = 1; //Fim do domínio
  9. L = (xmax - xmin); //Domínio
  10. a = 0.4; //Limitador inferior de S
  11. b = 0.5; //Limitador superior de S
  12. N = 500; //Número de partições
  13. dt = 0.002; //Passo de tempo
  14. t = 0; //Tempo atual
  15. tmax = 5; //Tempo máximo
  16. v = 1; //Velocidade
  17. Q0 = zeros(1,N);
  18.  
  19. //Discretizando o domínio
  20. dx = L/N; //Tamanho das células
  21. x = xmin - dx/2 : dx : xmax + dx/2; //Delimitando as células no domínio e adicionando células para condições de contorno
  22.  
  23. C = (dt/dx);
  24.  
  25. //Condições iniciais
  26. i=1
  27. for y=xmin -dx / 2:dx:xmax + dx/2
  28.     if(y>=a & y<=b)
  29.         s = 1;
  30.     else
  31.         s = 0;
  32.     end
  33.     Q0(i) = exp(-200.*((y+dx/2)-0.3).^2) + s;
  34.     i = i + 1;
  35. end
  36. Q = [Q0(1) Q0 Q0(i-1)];
  37. Qnmais1 = Q0;
  38.  
  39. //Passo iterativo
  40. npassos = tmax/dt;
  41.  
  42. //Quantidade de iterações
  43. qntItera = 0;
  44.  
  45. //Configurando a exibição
  46. f0=figure('figure_position',[420,0],'figure_size',[800,500],'auto_resize','on','BackgroundColor',[0.75 0.75 0.75],'figure_name','Métodos Numéricos para Equações Diferenciais II');
  47. xgrid(1, 1, 2)
  48. a = get("current_axes");
  49. a.data_bounds = [xmin xmax -0.5 1.5];
  50. xlabel('x','fontsize',5);
  51. ylabel('c(x,t)','fontsize',5);
  52.  
  53. for n = 1 : npassos;
  54.    
  55.     //Calculo do Lax-Friedrichs
  56.     for i = 2 : N + 1
  57.         Qnmais1(i) = ( Q(i-1) + Q(i+1) )/2 -(C/2)*v*( Q(i+1) -2*Q(i) + Q(i-1) );
  58.         qntItera = qntItera + 1;
  59.     end
  60.    
  61.     //Atualizando t e Q
  62.     t = t + dt;
  63.     Q = Qnmais1;
  64.     Q(1) = Q(N+1);
  65.    
  66. end
  67.  
  68.     //Propriedades do Gráfico
  69.     plot(x,Q0,'r-','thickness', 2);
  70.     plot(x,Q,'b-','markersize',5);
  71.     legend(['exata';'numérica']);
  72.     title(sprintf('tempo = %1.3f - número de iterações: %d - tempo de execução: %1.3f s',t, qntItera, toc()),'fontsize',4); //Mostra o tempo atual no gráfico
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement