기계공학/진동및소음

[기계공학/진동및소음] 02. 기본 수학1

johyeongseob 2024. 9. 18. 23:58

교재: Julia 프로그래밍을 활용한 구조물의 진동해석 (곽문규, 김수민)

 

2.1 미분방정식

 

 공학과 미분방정식은 어떻게 연결되어 있을까? 미분은 변화율을 나타낸다. 즉, 미분방정식은 변화를 설명하는 식이라고 말할 수 있다. 그리고 공학 문제 대부분은 이 변화를 예측하는 것과 관련이 있다. 공과대학에서 공부하는 역학 과목들은 대부분 뉴턴 역학에 기반을 두고 있다. 역학 문제들은 공간상의 변화 또는 시간상의 변화에 관한 식으로 귀결된다. 즉, 미분방정식을 얻게 된다.

 

 먼저 종속변수가 하나인 상미분방정식(ODE, Ordinart Differential Equation)을 살펴보자. ODE는 오른쪽 항이 0이면 제차(homogeneous)이고 종속변수의 함수이면 비제차(non-honogeneous)로 나뉜다. 처음으로는 제차 상미분방정식을 공부하자. 뉴턴 제2법칙은 F = ma 이며, 여기서 a는 가속도를 나타낸다. 가속도가 변위를 시간에 대해 두 번 미분한 것임을 감안할 때 미분방정식은 2차가 될 것으로 예상할 수 있다. 그러므로 우리가 해석할 기계시스템의 진동에 관한 제일 간단한 운동방정식은 2차 미분방정식으로 표현된다. 만일 미분방정식에 대한 지식을 충분히 가지고 있다면 해당 02. 기본수학은 건너뛰어도 된다.

 

2.2 미분방정식의 해를 구하는 방법

 

 공학 설계에 있어 정확한 모델링을 통해 구조물의 거동을 정밀하게 묘사하는 운동방정식(EOM, Equation of Motion)이 유도된다. 운동방정식은 대부분 미분방정식으로 표현되는데, 시간이나 공간상의 변화를 나타낸다. 이 방정식의 해를 수학으로 구할 수 있으면 구조물이 어떻게 변화하는지에 대한 정성적인 분석을 할 수 있다. 그리고 공식 형태의 식을 제공하기 때문에 물성치의 변화에 따른 변화를 손쉽게 예측할 수 있다.

 

2.3 지수법(Exponential Method)을 이용한 미분방정식의 해

 

 다음과 같은 선형 제차의 일차 상미분방정식을 고려해 보자.

 

$\frac{dx(t)}{dt} + x(t) = 0$

 

이 미분방정식은 시간 t에 따라 변화하는 x(t)가 이런 미분방정식을 만족하면서 변화한다는 것을 의미한다. 우리는 진동을 다루기 때문에 종속변수가 시간 t 인 경우를 고려한다. 위 식의 해는 다음과 같은 지수(exponential) 함수 형태로 주어진다.

 

$x(t) = A \times e^{st}$

 

미지수는 A와 s이므로 식이 하나 더 필요하다. x(t)가 시간에 따라 변하는 값이기 때문에 처음 시작하는 시점에서의 값을 알아야 할 필요가 있다. 시작점을 의미하는 초기조건(initial Condition)이 필요하다. 다음과 같은 초기조건을 고려해 보자.

 

$x(0) = 1$

 

즉, 시간 t = 0 일 때 x(t)가 1 이라는 위치에 있다는 것을 나타낸다. 두 식을 만족하기 위해서는 s + 1 = 0 으로 결론이 지어진다. 식 s = -1 을 특성방정식(characteristic Equation)이라고 부른다. s의 값에 따라 시간에 따른 해의 거동을 예측할 수 있기 때문이다. 최종 해는 다음과 같이 쓸 수 있다.

 

$x(t) = e^{-t}$

 

해를 구하기 위해 Julia 프로그래밍 언어를 다음과 같이 이용할 수 있다.

using Plots

t=range(0,10,length=1000)
x=exp.(-t)

p=plot(t,x,label="exp(-t)")
xlabel!("t(s)")
ylabel!("x(t)")

display(p)

 

 

 s가 실수로 표현되면 exponential 함수로 나타나고 시간이 지남에 따라 증가하거나 감소한다. s가 양의 실수가 되면 x가 계속 커지기 때문에 위험하다. 수학적으로는 시스템이 불안정(unstable)하다고 말한다. s가 허수로 표현되면 cos 또는 sin 함수로 표현되는 해를 얻게 된다.

 

2.4 Julia 패키리즐 이용한 ODE의 해

 

 Julia의 Sympy 패키지를 사용하면 모든 과정을 julia 프로그래밍으로 해결할 수 있다. 이전 문제를 다시 고려해 보자.

 

$x'(t) + x(t) = 0, \quad x(0)=1$

 

Julia를 이용해 이 미분방정식의 해를 구하는 프로그램은 다음과 같다.

using SymPy
using Plots

x=SymFunction("x")
t=symbols("t")

diffeq=Eq(x'(t) + x(t), 0) #좌항, 우항
ics=(x,0,1) # 초기조건, x(0) = 1
res=dsolve(diffeq,ics=ics)
display(res)

t=0:0.1:10
p=plot(t,res,label="x(t)")

display(p)

 

2.5 라플라스 변환 방법(Laplace Transform Method)을 이용한 ODE의 해

 

 라플라스 변환 방법은 ODE를 푸는데 효과적으로 사용된다. 라플라스 변환은 t 영역의 미분방정식을 s 영역 문제로 변환해 미분방정식을 대수방정식(algebraic Equation)으로 변환한다. 대수방정식의 해는 비교적 쉽게 구할 수 있기 때문에 그 해의 역변환을 통해 t 영역의 해를 구하면 우리가 원하는 해를 얻을 수 있다. 아래는 라플라스 변환에 대한 표이다.

 

2.6 비제차 선형 상미분방정식의 해

 

 대부분의 진동은 외부에서 작용하는 힘에 의해서 발생한다. 따라서 운동방정식을 유도해 보면 비제차 선형 상미분방정식의 형태를 갖게 된다. 만일 초기값이 0이고 외부에서 작용하는 힘이 있다고 가정하자. 그리고 이런 외력이 시간에 따라 변한다고 가정한 후, 다음과 같은 미분방정식을 고려해 보자.

 

$x''(t)+x(t)=sin(2t), \quad x(0)=x'(0)=0$

 

미분방정식의 우항이 0인 경우의 해를 제차해(Homogeneous Solution)라고 하고 이 제차해를 결정하는 것은 초기조건이다. 비제차해의 형태는 미분방정식의 우항에 의해 결정된다. 진동의 경우 반복적인 힘에 의해 발생하는 경우가 많으므로 조화기진력에 대한 응답을 구하고 싶어 한다. 조화기진력이 있는 경우의 비제차해는 다음과 같다.

 

$ xp = A \times sin(2t) + B \times cos(2t)$

 

위 $xp$를 미분방정식에 대입하면 비제차해는 다음과 같다.

 

$xp = -\frac{1}{3} \times sin(2t)$

 

하지만 $xp$는 비제차상미분방정식의 해는 아니다. 우리가 제차해를 무시할 수 없기 때문이다. 완전한 해는 다음과 같은 형태여야 한다.

 

$x = xh + xp = A \times sin(t) + B \times cos(t) + C \times sin(2t) + D \times cos(2t)$

 

이를 미분방정식에 대입하면 완전한 해는 다음과 같이 된다.

 

$x(t) = \frac{2}{3} \times sin(t) - \frac{1}{3} \times sin(2t)$