한편 아름답게 표현한다는 것에서는 예술과 일맥상통하는 부분이 있는 것 같다. 어떤 때는 놀랍고 경이롭기까지 하니까.
어쨌든 잡설이 길었으나,,, 이번 블로그의 주제는 파동방정식이다.
줄의 진동을 통해 물리적 현상을 파동방정식으로 표현해보고, 그 해를 찾아 특징을 살펴보는 과정은 전자기학에 필수적이고, 더 나아가 통신공학 응용에도 많은 도움이 될 것이다. 설사 그렇지 않더라도 파동방정식의 표현은 참 멋지고, 파동은 일상이다.
먼저,,, 파동방정식의 증명이 필요한데, 이미 깔끔하게 블로그하신 분들이 많다. 그래서 나는 그냥 인용을 하기로 한다.
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 |