2016년 1월 15일 금요일

파동방정식과 그 해(풀이)

수학도 언어라고 생각한다. 수학을 통해 자연현상에 대한 통찰을 아름답게 표현하고, 정확하게 전달할 수 있기 때문이다. 이 언어는 인류의 유산으로 계속해서 누적되고, 세련되게 진화할 것이다. 나는 이 언어를 이해하는 과정이 너무 길고 힘겹다. 이 언어를 능수능란하게 다루는 솜씨 좋은 대가들이 엄청 질투나고 부럽다!ㅎㅎ
한편 아름답게 표현한다는 것에서는 예술과 일맥상통하는 부분이 있는 것 같다. 어떤 때는 놀랍고 경이롭기까지 하니까.

어쨌든 잡설이 길었으나,,, 이번 블로그의 주제는 파동방정식이다.
줄의 진동을 통해 물리적 현상을 파동방정식으로 표현해보고, 그 해를 찾아 특징을 살펴보는 과정은 전자기학에 필수적이고, 더 나아가 통신공학 응용에도 많은 도움이 될 것이다. 설사 그렇지 않더라도 파동방정식의 표현은 참 멋지고, 파동은 일상이다.

먼저,,, 파동방정식의 증명이 필요한데, 이미 깔끔하게 블로그하신 분들이 많다. 그래서 나는 그냥 인용을 하기로 한다.

http://joonyoungsun.tistory.com/261

증명을 조금 더 정리하면,,,



초기속도 g(x)=0 이면, u(x, t)=ΣBn cos(cnπt/L) sin(nπx/L)

→  u(x, t)=1/2 ΣBn sin(nπ/L(x-ct)+1/2 ΣBn sin(nπ/L(x+ct)

→  u(x, t)=1/2[f*(x-ct)+f*(x+ct)]  

여기서 f* 는 2L주기를 가진 f의 기수주기확장(Odd periodic extension) 이다.
 ∵ u(x,t)는 연속함수이고, wave equation , boundary condition(u(0,t)=0 , u(L,t)=0 for all t) , inital condition(u(x,0)=f(x) , du/dt=g(x)) 만족한다.

 


그럼,,, 이제 이렇게 구한 파동방정식과 그 해를 실제적인 예로 시뮬레이션해보자!

<문제> 초기 휨이 삼각함수인 현의 진동

 
 

초기 휨이 삼각함수인 현의 진동 의 해를 실제로 시뮬레이션해보면,
증명으로 유도한대로 파동은 양방향으로 진행하는 함수의 기수주기확장의 합과 동일하다는 것을 알 수 있다.


L=2; T=10; N=10; k=1; c=1;
x=0:.1:L;
ux0=zeros(N,length(x)); uxt=zeros(N,length(x));
h=plot(x, sum(uxt));

for t=0:.1:T;
for n=1:N;
bn(n)=8*k/n^2/pi^2*sin(n*pi/2);
ux0(n,:)=bn(n)*sin(n*pi/L*x);
uxt(n,:)=cos(n*pi*c/L*t)*ux0(n,:);
end
% uxt=(8/pi^2)*[1/1^2*cos(pi/2*t)*sin(pi/2*x)-1/3^2*cos(3*pi/2*t)*sin(3*pi/2*x)...];
set(h, 'xdata', x, 'ydata', sum(uxt))
drawnow
axis([0 2 -1 1]);
pause(.1)
end