'static electric field'에 해당되는 글 1건

Electric field를 표현하는 방법에는 2가지 방법이 있습니다. 먼저, 잘알려진 전기장 구하는 식을 통해 전기장을 표현하는 방법과 전위를 계산해 Gradient를 구하는 방법 두가지 방법이 있습니다.

 

(Coulomb's law in vector form)

 1. 전기장을 직접 계산한다.

 프로그램을 짤땐 x성분 y성분 z성분 분리해서 계산합니다.

2. 전위를 계산해서 Gradient를 구한다.

 matlab안에는 자체의 gradient를 구하는 함수가 있기 때문에 쉽게 전기장을 구할 수 있습니다.

저는 1번방법을 사용해 전기장뿐만 아니라 전위까지 계산해보겠습니다.

가장 먼저 x-y plane 상에 전하를 배치 시킵니다. 먼저 전하를 array에 배치시키고 그 전하의 위치를 정의 해주기 위해  다음과 같이 x array와 y array를 만들었습니다. 그리고 +전하를 빨간색 -전하를 파란색으로 표현했습니다.

 

q(1)=10; q(2)=-10; q(3)=10; q(4)=-10; q(5)=10;
x(1)=1; x(2)=-1; x(3)=0; x(4)=0; x(5)=0;
y(1)=0; y(2)=0; y(3)=1; y(4)=-1; y(5)=0;

k=1; 
N=length(q);
for n=1:N
if q(n)>=0
    hold on
    plot(x(n),y(n),'og','Color','red')
else
    hold on
   plot(x(n),y(n),'og','Color','blue') 
end
end

(전하의 배치)

 

그 다음 전기장을 그리기 위해 전 단계로 meshgrid라는 함수를 사용합니다. meshgrid란 위치벡터를 정의하는 함수 입니다.

[xpos, ypos]=meshgrid(-4:1:4,-4:1:4)

이러한 함수를 적으면 1 간격으로 x범위 -3~3, y범위 -3~3 까지의 격자로 위치 백터를 정의 할 수 있습니다. x의 범위는 xpos에 담기게 되고 y의 범위는 ypos에 담기게 됩니다. xpos와 ypos의 이름은 마음대로 정할 수 있습니다.

 

(meshgrid의 표현)

이렇게 격자를 만들 수 있습니다. 위에서는 설명하기 편하게 1간격으로 격자를 그렸지만 더 세밀한 각격으로 표현하기 위해서 간격을 좁혀주셔도 됩니다. 나중에 보면 벡터 표현에 상당히 편한 함수인것을 알 수 있습니다.

이제 저는 2차원 평면에서 전기장을 표현하기 위해 전기장을 x성분과 y성분으로 분리 하겠습니다.

여기에서 alpha는 전하의 번호 입니다. 우리는 전하를 5개 놓았습니다.

 

xmin=-3;
xmax=3;
ymin=-3;
ymax=3;
[xPos yPos]=meshgrid(xmin:0.2:xmax,ymin:0.2:ymax);


scale=10;
ex=0; ey=0;
Ex=0; Ey=0;
v=0; v2=0;

for n=1:N;
    r=sqrt((x(n)-xPos).^2+(y(n)-yPos).^2);
    ex=-k*(q(n)./r.^2).*((x(n)-xPos)./r);
    Ex=Ex+ex;
    ey=-k*(q(n)./r.^2).*((y(n)-yPos)./r);
    Ey=Ey+ey;
    
    
    v=v-ex.*(r.*((x(n)-xPos)./r));
    v=v-ey.*(r.*((y(n)-yPos)./r));
end
image=figure(1);
hold on
contour(xPos,yPos,v);
hold on
ima=quiver(xPos,yPos,Ex*scale,Ey*scale,'Color','bLACK');

이렇게 하면 static electric field를 계산할 수 있습니다. 저는 덤으로 전위까지 계산했습니다.

 

(Static Electric Field)

 

'about My major > MATLAB' 카테고리의 다른 글

[MATLAB] cell에서 문자열 인덱스 찾기  (0) 2017.07.24
matlab 으로 고차 방정식 풀기  (0) 2015.10.02
블로그 이미지

TFPW

,