Advertisement
domdealm

07/12

Dec 7th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 5.05 KB | None | 0 0
  1. Programa 1:
  2.  
  3. %IFPB 07/12/2017
  4. %EXEMPLO 1 - EQUAÇÃO DE LAPLACE COM CONDIÇÕES DE CONTORNO DE DIRICHLET
  5. %LINHA DE MICROFITA SUSPENSA NO AR
  6.  
  7. close all, clear all, clc;
  8. %malha computacional bidimensional
  9. n = 100; r = 10; V = 100;
  10. p=n; q=n;x=1:n; y=x;h=1;
  11. %condições de contorno
  12. u=zeros(p,q);
  13. u(r,40:60)=V;
  14. %equação de diferenças
  15. for iter=1:1000
  16.     for i=2:p-1
  17.         for j=2:q-1
  18.             if i==r & j>=40 & j<=60,u(r,j)=V;
  19.             else
  20.                 u(i,j)=0.25*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1));
  21.             end
  22.         end
  23.     end
  24. end
  25.  
  26. %SAÍDA GRÁFICA
  27. %DISTRIBUIÇÃO DE POTENCIAL 3D
  28. ss=get(0,'ScreenSize');
  29. fig1 = figure(1)
  30. set(fig1,'Position',ss,'Color',[1 1 1]);
  31. mesh(u),colormap(jet),colorbar
  32. label(1)=xlabel('x');
  33. label(2)=ylabel('y');
  34. label(3)=zlabel('z');
  35. label(4)=title('Equação de Laplace: uxx-uyy=0');
  36. label(5)= legend('Diferenças Finitas',1);
  37. drawnow,pause(1);
  38.  
  39. %LINHAS EQUIPOTENCIAIS E DISTRIBUIÇÃO DO CAMPO ELÉTRICO
  40. fig2 = figure(2)
  41. set(fig2,'Position',ss,'Color',[1 1 1]);
  42. [x1,y1] = meshgrid(x,y);
  43. [px,py] = gradient(u,h,h/2);
  44. [c,h] = contour(x1,y1,u,[0.1:0.1:0.7]*V),cl=clabel(c,h);set(cl,'Fontsize',14);
  45. colorbar; set(h,'Linewidth',2.5);
  46. hold on, s =1:2:n;
  47. g=quiver(x(s),y(s),-px(s,s),-py(s,s),0.7,'k-');
  48. hold off, set(g,'ShowArrowHead','on')
  49. label(1)=xlabel('x');
  50. label(2)=ylabel('y');
  51. label(3)=title('Equação de Laplace: uxx+uyy=0');
  52. label(4)= legend('Diferenças Finitas',1);
  53. set(label,'FontSize',16);axis([30 70 0 20])
  54. l(1) = line([40 60],[10 10]);
  55. l(2) = line([0 100],[0 0]);
  56. set(l,'Linewidth',5);
  57.  
  58. drawnow
  59.  
  60.  
  61.  
  62. Programa 2:
  63.  
  64. %IFPB 07/12/2017
  65. %EXEMPLO 2 - EQUAÇÃO DE LAPLACE COM CONDIÇÕES DE DIRICHLET E DE NEWMANN
  66. %LINHA DE MICROFITA SUSPENSA NO AR
  67.  
  68. close all, clear all, clc;
  69. %malha computacional bidimensional
  70. n = 100; r = 10; V = 100;
  71. p=n; q=n;x=1:n; y=x;h=1;
  72. %condições de contorno
  73. u=zeros(p,q);
  74. u(r,50:60)=V,g=0;
  75. %equação de diferenças
  76. for iter=1:1000
  77.     for i=2:p-1
  78.         for j=50:q-1
  79.             if i==r & j>=50 & j<=60,
  80.                 u(r,j)=V;
  81.             elseif i~=r&j==50,
  82.                 u(i,j)=0.25*(u(i+1,j)+u(i-1,j)+2*u(i,j+1)+2*h*g);
  83.             else
  84.                 u(i,j)=0.25*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1));
  85.             end
  86.             end
  87.         end
  88. end
  89.    
  90. %SAÍDA GRÁFICA
  91. %DISTRIBUIÇÃO DE POTENCIAL 3D
  92. ss=get(0,'ScreenSize');
  93. fig1 = figure(1)
  94. set(fig1,'Position',ss,'Color',[1 1 1]);
  95. mesh(u),colormap(jet),colorbar
  96. label(1)=xlabel('x');
  97. label(2)=ylabel('y');
  98. label(3)=zlabel('z');
  99. label(4)=title('Equação de Laplace: uxx-uyy=0');
  100. label(5)= legend('Diferenças Finitas',1);
  101. drawnow,pause(1);
  102.  
  103. %LINHAS EQUIPOTENCIAIS E DISTRIBUIÇÃO DO CAMPO ELÉTRICO
  104. fig2 = figure(2)
  105. set(fig2,'Position',ss,'Color',[1 1 1]);
  106. [x1,y1] = meshgrid(x,y);
  107. [px,py] = gradient(u,h,h/2);
  108. [c,h] = contour(x1,y1,u,[0.1:0.1:0.7]*V),cl=clabel(c,h);set(cl,'Fontsize',14);
  109. colorbar; set(h,'Linewidth',2.5);
  110. hold on, s =1:2:n;
  111. g=quiver(x(s),y(s),-px(s,s),-py(s,s),0.7,'k-');
  112. hold off, set(g,'ShowArrowHead','on')
  113. label(1)=xlabel('x');
  114. label(2)=ylabel('y');
  115. label(3)=title('Equação de Laplace: uxx+uyy=0');
  116. label(4)= legend('Diferenças Finitas',1);
  117. set(label,'FontSize',16);axis([30 70 0 20])
  118. l(1) = line([40 60],[10 10]);
  119. l(2) = line([0 100],[0 0]);
  120. set(l,'Linewidth',5);
  121. drawnow
  122.  
  123.  
  124. Programa 3:
  125.  
  126. %IFPB 07/12/2017
  127. %EXEMPLO 3 - EQUAÇÃO DE LAPLACE COM CONDIÇÕES DE DIRICHLET E DE NEWMANN
  128. %LINHA DE MICROFITA SUSPENSA NO AR
  129.  
  130. close all, clear all, clc;
  131. %malha computacional bidimensional
  132. n = 100; r = 10; V = 100; a=40; b=60;
  133. p=n; q=n;x=1:n; y=x;h=1; e1=1; e2=12;
  134. %condições de contorno
  135. u=zeros(p,q);
  136. u(r,a:b)=V,g=0;
  137. %equação de diferenças
  138. for iter=1:1000
  139.     for i=2:p-1
  140.         for j=2:q-1
  141.             if i==r & j>=a & j<=b,
  142.                 u(r,j)=V;
  143.             elseif i==r,
  144.                 u(i,j)=(e1/(2*(e1+e2)))*u(i+1,j)+(e2/(2*(e1+e2)))*u(i-1,j)+0.25*(u(i,j-1)+u(i,j+1));
  145.             else
  146.                 u(i,j)=0.25*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1));
  147.             end
  148.             end
  149.         end
  150. end
  151.    
  152. %SAÍDA GRÁFICA
  153. %DISTRIBUIÇÃO DE POTENCIAL 3D
  154. ss=get(0,'ScreenSize');
  155. fig1 = figure(1)
  156. set(fig1,'Position',ss,'Color',[1 1 1]);
  157. mesh(u),colormap(jet),colorbar
  158. label(1)=xlabel('x');
  159. label(2)=ylabel('y');
  160. label(3)=zlabel('z');
  161. label(4)=title('Equação de Laplace: uxx-uyy=0');
  162. label(5)= legend('Diferenças Finitas',1);
  163. drawnow,pause(1);
  164.  
  165. %LINHAS EQUIPOTENCIAIS E DISTRIBUIÇÃO DO CAMPO ELÉTRICO
  166. fig2 = figure(2)
  167. set(fig2,'Position',ss,'Color',[1 1 1]);
  168. [x1,y1] = meshgrid(x,y);
  169. [px,py] = gradient(u,h,h/2);
  170. [c,h] = contour(x1,y1,u,[0.1:0.1:0.7]*V),cl=clabel(c,h);set(cl,'Fontsize',14);
  171. colorbar; set(h,'Linewidth',2.5);
  172. hold on, s =1:2:n;
  173. g=quiver(x(s),y(s),-px(s,s),-py(s,s),0.7,'k-');
  174. hold off, set(g,'ShowArrowHead','on')
  175. label(1)=xlabel('x');
  176. label(2)=ylabel('y');
  177. label(3)=title('Equação de Laplace: uxx+uyy=0');
  178. label(4)= legend('Diferenças Finitas',1);
  179. set(label,'FontSize',16);axis([30 70 0 20])
  180. l(1) = line([40 60],[10 10]);
  181. l(2) = line([0 100],[0 0]);
  182. set(l,'Linewidth',5);
  183. drawnow
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement