Cdigo de Matlab para el tratamiento de las Grficas de Electromagnetismo:
Para cada uno de los casos se realiz un Script distino
% AROS CON SAL SIN SIMETRIZAR
% Se usaron coordenadas polares para guradar los datos tomados, % espec?ficamente 9 radios y 20 ?ngulos dando un total de 181 puntos % (tomando en cuenta el origen)
% Debido a la simetr?a del problema el hecho de tomar coordenadas polares % facilita la derivada num?rica, ya que como se mantiene el ?ngulo % constante el gradiente se reduce a una derivada en la coordenada radial
% Para el caso del campo el?ctrico solo se usan 8 radios, ya que en el % borde no se tiene ningun dato con el cual realizar la derivada
% Desarrollo:
% El vector x guarda la coordenada x de cada uno de los puntos del % potencial x= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) x_d = 1:1:161;
% El vector y guarda la coordenada y de cada uno de los puntos del % potencial y= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) y_d = 1:1:161;
% El vector x guarda el valor del potencial en cada punto z= 1:1:181;
% El vector Derivadas guarda el valor de la magnitud de la derivada, como % se est? mantendiendo el ?ngulo constante la variaci?n es solo en la parte % radial derivadas = 1:1:161;
% Se leen los datos del Excel datos= xlsread('/Users/CarlosAnD/Documents/MATLAB/aros-aros con sal');
i = 1; % Inicializaci?n del valor del radio, se va a comenzar desde afuera hacia % adentro r = 9; m = 1;
% Inicializaci?n del ?ngulo, se va a iniciar desde pi y se va a mover 20 % posiciones en direcci?n horario theta = pi;
while r>0 % Mientras el radio sea mayor a cero theta = pi; n=0; while theta>-3.20 % Mientras no de la vuelta completa
% Se pasa de las coordenadas polares a caresianas, el tiempo se % toma el valor del potencial
% Despu?s de la primera linea se comienza el c?lculo de la % magnitud de la derivada
derivadas(m) = (-z(m)+z(20+m))/0.01;
% Para poder graficar el campo el?ctrico se usan otros % vectores, ya que los iniciales que contenian el paso de % coordenadas polares a cartesianas son muy largos (20 % posiciones para ser exactos)
x_d(m)= x(m+20); y_d(m)= y(m+20); m=m+1;
end i=i+1; n=n+1; end r=r-1;
end
x(181)=0; y(181)=0; z(181)=0;
% Grafica del potencial:
figure('Name','Grafica de los datos del potencial','NumberTitle','off') title('Grafica de los datos del pontencial'); stem3(x,y,z,'fill','-w',... 'LineWidth',0.01,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','k',... 'MarkerSize',7) xlabel('x'), ylabel('y'), zlabel('potencial') grid on
% Aunque se tomaron 180 puntos no es f?cil ver la superficie con esta % gr?fica, para mejorarla se hace uso de Interpolaci?n, espec?ficamente de % la funci?n 'griddata':
figure('Name','Grafica de los datos del potencial interpolados','NumberTitle','off') title('Grafica de los datos del pontencial interpolados'); [xi, yi] = meshgrid(-10:0.5:10, -10:0.5:10); zi = griddata(x,y,z, xi,yi); surf(xi,yi,zi); xlabel('x'), ylabel('y'), zlabel('potencial') grid on
figure('Name','Lineas equipotenciales','NumberTitle','off') title('Lineas equipotenciales'); contour(xi,yi,zi, 'LineWidth',2) grid on
% Se usaron coordenadas polares para guradar los datos tomados, % espec?ficamente 9 radios y 20 ?ngulos dando un total de 181 puntos % (tomando en cuenta el origen)
% Debido a la simetr?a del problema el hecho de tomar coordenadas polares % facilita la derivada num?rica, ya que como se mantiene el ?ngulo % constante el gradiente se reduce a una derivada en la coordenada radial
% Para el caso del campo el?ctrico solo se usan 8 radios, ya que en el % borde no se tiene ningun dato con el cual realizar la derivada
% Desarrollo:
% El vector x guarda la coordenada x de cada uno de los puntos del % potencial x= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) x_d = 1:1:161;
% El vector y guarda la coordenada y de cada uno de los puntos del % potencial y= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) y_d = 1:1:161;
% El vector x guarda el valor del potencial en cada punto z= 1:1:181;
% El vector Derivadas guarda el valor de la magnitud de la derivada, como % se est? mantendiendo el ?ngulo constante la variaci?n es solo en la parte % radial derivadas = 1:1:161;
% Se leen los datos del Excel datos= xlsread('/Users/CarlosAnD/Documents/MATLAB/aros-aros con sal SIM');
i = 1; % Inicializaci?n del valor del radio, se va a comenzar desde afuera hacia % adentro r = 9; m = 1;
% Inicializaci?n del ?ngulo, se va a iniciar desde pi y se va a mover 20 % posiciones en direcci?n horario theta = pi;
while r>0 % Mientras el radio sea mayor a cero theta = pi; n=0; while theta>-3.20 % Mientras no de la vuelta completa
% Se pasa de las coordenadas polares a caresianas, el tiempo se % toma el valor del potencial
% Despu?s de la primera linea se comienza el c?lculo de la % magnitud de la derivada
derivadas(m) = (-z(m)+z(20+m))/0.01;
% Para poder graficar el campo el?ctrico se usan otros % vectores, ya que los iniciales que contenian el paso de % coordenadas polares a cartesianas son muy largos (20 % posiciones para ser exactos)
x_d(m)= x(m+20); y_d(m)= y(m+20); m=m+1;
end i=i+1; n=n+1; end r=r-1;
end
x(181)=0; y(181)=0; z(181)=0;
% Grafica del potencial:
figure('Name','Grafica de los datos del potencial Simetrizado','NumberTitle','off') title('Grafica de los datos del pontencial Simetrizado'); stem3(x,y,z,'fill','-w',... 'LineWidth',0.01,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','k',... 'MarkerSize',7) xlabel('x'), ylabel('y'), zlabel('potencial') grid on
% Aunque se tomaron 180 puntos no es f?cil ver la superficie con esta % gr?fica, para mejorarla se hace uso de Interpolaci?n, espec?ficamente de % la funci?n 'griddata':
figure('Name','Grafica de los datos del potencial interpolados Simetrizado','NumberTitle','off') title('Grafica de los datos del pontencial interpolados Simetrizado'); [xi, yi] = meshgrid(-10:0.5:10, -10:0.5:10); zi = griddata(x,y,z, xi,yi); surf(xi,yi,zi); xlabel('x'), ylabel('y'), zlabel('potencial') grid on
figure('Name','Lineas equipotenciales','NumberTitle','off') title('Lineas equipotenciales'); contour(xi,yi,zi, 'LineWidth',2) grid on
% Se leen los datos del Excel datos= xlsread('/Users/CarlosAnD/Documents/MATLAB/plano - plano');
% El vector x va a contener todas las posiciones de las x por orden de las % equipotenciales, hay 6 voltajes y 20 y's, luego hay 140 x x = 1:1:120;
% El vector y va a contener todas las posiciones de las y por orden de las % equipotenciales, hay 6 voltajes y 20 y's, luego hay 140 y y = 1:1:120;
% El vector z va a contener el valor del voltaje z = 1:1:120;
% El vector d va a contener la magnitud de la derivada, porque como se % mantiene y constante solo hay una derivada en la direcci?n x, como no es % posible evaluar la derivada en el borde solo hay 100 puntos d = 1:1:100;
% x_d y y_d van a contener la posicion para la grafica de las derivadas x_d = 1:1:100; y_d = 1:1:100;
i = 1; m = 1;
while i<7
j=1;
while j<21
x(m) = datos(j,i); y(m) = j-11; z(m) = 8-i;
if i<6
d(m) = -(1)/(datos(j,i) - datos(j,i+1));
x_d(m) = x(m); y_d(m) = y(m);
end
j = j+1; m = m+1;
end
i = i+1;
end
% Grafica del potencial:
figure('Name','Grafica de los datos del potencial','NumberTitle','off') title('Grafica de los datos del pontencial'); stem3(x,y,z,'fill','-w',... 'LineWidth',0.01,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','k',... 'MarkerSize',7) xlabel('x'), ylabel('y'), zlabel('potencial') grid on
% Aunque se tomaron 180 puntos no es f?cil ver la superficie con esta % gr?fica, para mejorarla se hace uso de Interpolaci?n, espec?ficamente de % la funci?n 'griddata':
figure('Name','Grafica de los datos del potencial interpolados','NumberTitle','off') title('Grafica de los datos del pontencial interpolados'); [xi, yi] = meshgrid(-10:0.5:10, -10:0.5:10); zi = griddata(x,y,z, xi,yi); surf(xi,yi,zi); xlabel('x'), ylabel('y'), zlabel('potencial') grid on
figure('Name','Lineas equipotenciales','NumberTitle','off') title('Lineas equipotenciales'); contour(xi,yi,zi,'LineWidth',2) grid on
% Grafice del campo el?ctrico
X = [0,0]; Y = [0,0];
figure('Name','Campo Electrico y lineas equipotenciales','NumberTitle','off') title('Campo Electrico'); grid on
i = 1; m = 1;
while i<7
j=1;
while j<21
if i<6
X(1) = x_d(m); Y(1) = y_d(m);
X(2) = X(1) + (d(m)/5); Y(2) = Y(1);
plot(X,Y,'-b','LineWidth',2) hold on
end
j = j+1; m = m+1;
end
i = i+1;
end
i=1;
Y=-10:1:9;
while i<7
plot(datos(:,i),Y,':k','LineWidth',1.5) hold on
i = i+1;
end
% PLANOS SIN SAL SIMETRIZADOS
% Se leen los datos del Excel datos= xlsread('/Users/CarlosAnD/Documents/MATLAB/plano - plano - sim');
% El vector x va a contener todas las posiciones de las x por orden de las % equipotenciales, hay 6 voltajes y 20 y's, luego hay 140 x x = 1:1:120;
% El vector y va a contener todas las posiciones de las y por orden de las % equipotenciales, hay 6 voltajes y 20 y's, luego hay 140 y y = 1:1:120;
% El vector z va a contener el valor del voltaje z = 1:1:120;
% El vector d va a contener la magnitud de la derivada, porque como se % mantiene y constante solo hay una derivada en la direcci?n x, como no es % posible evaluar la derivada en el borde solo hay 100 puntos d = 1:1:100;
% x_d y y_d van a contener la posicion para la grafica de las derivadas x_d = 1:1:100; y_d = 1:1:100;
i = 1; m = 1;
while i<7
j=1;
while j<21
x(m) = datos(j,i); y(m) = j-11; z(m) = 8-i;
if i<6
d(m) = -(1)/(datos(j,i) - datos(j,i+1));
x_d(m) = x(m); y_d(m) = y(m);
end
j = j+1; m = m+1;
end
i = i+1;
end
% Grafica del potencial:
figure('Name','Grafica de los datos del potencial','NumberTitle','off') title('Grafica de los datos del pontencial'); stem3(x,y,z,'fill','-w',... 'LineWidth',0.01,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','k',... 'MarkerSize',7) xlabel('x'), ylabel('y'), zlabel('potencial') grid on
% Aunque se tomaron 180 puntos no es f?cil ver la superficie con esta % gr?fica, para mejorarla se hace uso de Interpolaci?n, espec?ficamente de % la funci?n 'griddata':
figure('Name','Grafica de los datos del potencial interpolados','NumberTitle','off') title('Grafica de los datos del pontencial interpolados'); [xi, yi] = meshgrid(-10:0.5:10, -10:0.5:10); zi = griddata(x,y,z, xi,yi); surf(xi,yi,zi); xlabel('x'), ylabel('y'), zlabel('potencial') grid on
figure('Name','Lineas equipotenciales','NumberTitle','off') title('Lineas equipotenciales'); contour(xi,yi,zi,'LineWidth',2) grid on
% Grafice del campo el?ctrico
X = [0,0]; Y = [0,0];
figure('Name','Campo Electrico y lineas equipotenciales','NumberTitle','off') title('Campo Electrico'); grid on
i = 1; m = 1;
while i<7
j=1;
while j<21
if i<6
X(1) = x_d(m); Y(1) = y_d(m);
X(2) = X(1) + (d(m)/5); Y(2) = Y(1);
plot(X,Y,'-b','LineWidth',2) hold on
end
j = j+1; m = m+1;
end
i = i+1;
end
i=1;
Y=-10:1:9;
while i<7
plot(datos(:,i),Y,':k','LineWidth',2) hold on
i = i+1;
end
% AROS SIN SAL SIN SIMETRIZAR
% Se usaron coordenadas polares para guradar los datos tomados, % espec?ficamente 9 radios y 20 ?ngulos dando un total de 181 puntos % (tomando en cuenta el origen)
% Debido a la simetr?a del problema el hecho de tomar coordenadas polares % facilita la derivada num?rica, ya que como se mantiene el ?ngulo % constante el gradiente se reduce a una derivada en la coordenada radial
% Para el caso del campo el?ctrico solo se usan 8 radios, ya que en el % borde no se tiene ningun dato con el cual realizar la derivada
% Desarrollo:
% El vector x guarda la coordenada x de cada uno de los puntos del % potencial x= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) x_d = 1:1:161;
% El vector y guarda la coordenada y de cada uno de los puntos del % potencial y= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) y_d = 1:1:161;
% El vector x guarda el valor del potencial en cada punto z= 1:1:181;
% El vector Derivadas guarda el valor de la magnitud de la derivada, como % se est? mantendiendo el ?ngulo constante la variaci?n es solo en la parte % radial derivadas = 1:1:161;
% Se leen los datos del Excel datos= xlsread('/Users/CarlosAnD/Documents/MATLAB/aros-aros sin sal');
i = 1; % Inicializaci?n del valor del radio, se va a comenzar desde afuera hacia % adentro r = 9; m = 1;
% Inicializaci?n del ?ngulo, se va a iniciar desde pi y se va a mover 20 % posiciones en direcci?n horario theta = pi;
while r>0 % Mientras el radio sea mayor a cero theta = pi; n=0; while theta>-3.20 % Mientras no de la vuelta completa
% Se pasa de las coordenadas polares a caresianas, el tiempo se % toma el valor del potencial
% Despu?s de la primera linea se comienza el c?lculo de la % magnitud de la derivada
derivadas(m) = (-z(m)+z(20+m))/0.01;
% Para poder graficar el campo el?ctrico se usan otros % vectores, ya que los iniciales que contenian el paso de % coordenadas polares a cartesianas son muy largos (20 % posiciones para ser exactos)
x_d(m)= x(m+20); y_d(m)= y(m+20); m=m+1;
end i=i+1; n=n+1; end r=r-1;
end
x(181)=0; y(181)=0; z(181)=0;
% Grafica del potencial:
figure('Name','Grafica de los datos del potencial','NumberTitle','off') title('Grafica de los datos del pontencial'); stem3(x,y,z,'fill','-w',... 'LineWidth',0.01,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','k',... 'MarkerSize',7) xlabel('x'), ylabel('y'), zlabel('potencial') grid on
% Aunque se tomaron 180 puntos no es f?cil ver la superficie con esta % gr?fica, para mejorarla se hace uso de Interpolaci?n, espec?ficamente de % la funci?n 'griddata':
figure('Name','Grafica de los datos del potencial interpolados','NumberTitle','off') title('Grafica de los datos del pontencial interpolados'); [xi, yi] = meshgrid(-10:0.5:10, -10:0.5:10); zi = griddata(x,y,z, xi,yi); surf(xi,yi,zi); xlabel('x'), ylabel('y'), zlabel('potencial') grid on
figure('Name','Lineas equipotenciales','NumberTitle','off') title('Lineas equipotenciales'); contour(xi,yi,zi,'LineWidth',2) grid on
% Se usaron coordenadas polares para guradar los datos tomados, % espec?ficamente 9 radios y 20 ?ngulos dando un total de 181 puntos % (tomando en cuenta el origen)
% Debido a la simetr?a del problema el hecho de tomar coordenadas polares % facilita la derivada num?rica, ya que como se mantiene el ?ngulo % constante el gradiente se reduce a una derivada en la coordenada radial
% Para el caso del campo el?ctrico solo se usan 8 radios, ya que en el % borde no se tiene ningun dato con el cual realizar la derivada
% Desarrollo:
% El vector x guarda la coordenada x de cada uno de los puntos del % potencial x= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) x_d = 1:1:161;
% El vector y guarda la coordenada y de cada uno de los puntos del % potencial y= 1:1:181;
% El vector x_d guarda la coordenada x de cada uno de los puntos del % campo el?ctrico (hay 20 menos porque en la frontera no se pude calcular) y_d = 1:1:161;
% El vector x guarda el valor del potencial en cada punto z= 1:1:181;
% El vector Derivadas guarda el valor de la magnitud de la derivada, como % se est? mantendiendo el ?ngulo constante la variaci?n es solo en la parte % radial derivadas = 1:1:161;
% Se leen los datos del Excel datos= xlsread('/Users/CarlosAnD/Documents/MATLAB/aros-aros sin sal SIM');
i = 1; % Inicializaci?n del valor del radio, se va a comenzar desde afuera hacia % adentro r = 9; m = 1;
% Inicializaci?n del ?ngulo, se va a iniciar desde pi y se va a mover 20 % posiciones en direcci?n horario theta = pi;
while r>0 % Mientras el radio sea mayor a cero theta = pi; n=0; while theta>-3.20 % Mientras no de la vuelta completa
% Se pasa de las coordenadas polares a caresianas, el tiempo se % toma el valor del potencial
% Despu?s de la primera linea se comienza el c?lculo de la % magnitud de la derivada
derivadas(m) = (-z(m)+z(20+m))/0.01;
% Para poder graficar el campo el?ctrico se usan otros % vectores, ya que los iniciales que contenian el paso de % coordenadas polares a cartesianas son muy largos (20 % posiciones para ser exactos)
x_d(m)= x(m+20); y_d(m)= y(m+20); m=m+1;
end i=i+1; n=n+1; end r=r-1;
end
x(181)=0; y(181)=0; z(181)=0;
% Grafica del potencial:
figure('Name','Grafica de los datos del potencial Simetrizado','NumberTitle','off') title('Grafica de los datos del pontencial Simetrizado'); stem3(x,y,z,'fill','-w',... 'LineWidth',0.01,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','k',... 'MarkerSize',7) xlabel('x'), ylabel('y'), zlabel('potencial') grid on
% Aunque se tomaron 180 puntos no es f?cil ver la superficie con esta % gr?fica, para mejorarla se hace uso de Interpolaci?n, espec?ficamente de % la funci?n 'griddata':
figure('Name','Grafica de los datos del potencial interpolados Simetrizado','NumberTitle','off') title('Grafica de los datos del pontencial interpolados Simetrizado'); [xi, yi] = meshgrid(-10:0.5:10, -10:0.5:10); zi = griddata(x,y,z, xi,yi); surf(xi,yi,zi); xlabel('x'), ylabel('y'), zlabel('potencial') grid on
figure('Name','Lineas equipotenciales','NumberTitle','off') title('Lineas equipotenciales'); contour(xi,yi,zi,'LineWidth',2) grid on
datos=xlsread('Barra y puntilla (agua y sal)(1) simetrizado.xlsx');%Permite extraer los datos de Excel para acomadarlos de forma matricial en Matlab [f,c]=size(datos); %creacion da una matriz con tamano igual a la cantidad de datos f corresponde a las fila y c corresponde a las columnas v=zeros(f-1,c-1);%Creacion de matriz del voltaje x=zeros(1,c-1);%Creacion de la matriz de x y=zeros(f-1,1);%Creacion de la matriz y for b=1:f,%Metodo que permite la extraccion de los datos, matriz de tamano f en pasos de 1 for a=1:c, %Matriz de tamano de las columnas if ((a>1) & (b>1)) v(b-1,a-1)=datos(b,a);%Permite la creacion de la matriz de voltajes end if ((b==1) & (a>1)) x(a-1)=datos(1,a); %posici?n x en cm end if ((b>1) & (a==1)) y(b-1)=datos(b,1); %posici?n y en cm end end end
figure(1) surf(x,y,v) figure(2) [X,Y] = meshgrid(x,y); mesh(X,Y,v) vmax=max(max(v)); vmin=min(min(v)); dv=(vmax-vmin)/20; nivel=vmin+(0.5*dv):dv:vmax; h=contour(X,Y,v,nivel); figure(3) [DX,DY] = gradient(v,.1,.1); contour(X,Y,v) hold on quiver(X,Y,DX,DY)
datos= xlsread('F:\Datos Electro\Barra y puntilla (agua y sal)(1)'); figure surf(datos)