본문 바로가기

프로그램/MATLAB

【MATLAB】 Hooke의 법칙, 포텐셜에너지 문제풀이 (for, max)

[문제]

힘 F(N)이 스프링을 압축하기 위해 작용할 때, 변위 x(m)는 Hooke의 법칙에 의해 다음과 같이 표현할 수 있다.


여기서 k는 스프링 상수(N/m)이다. 스프링에 저장된 포텐셜에너지 U(J)는 다음의 식으로 계산할 수 있다.


5개의 스프링으로 실험을 하여 다음과 같은 데이터를 수집하였다.


힘 F(N)
14
18
8
9
13
변위 x(m)
0.013
0.020
0.009
0.010
0.012

MATLAB을 이용하여 F와 x를 벡터로 저장하라. 그리고 스프링 상수와 포텐셜에너지의 벡터를 계산하라. max 함수를 이용하여 최대 포텐셜에너지를 구하라.



[문제풀이]

우선, 위 표를 벡터화해보면 다음과 같습니다.


다음으로 스프링 상수를 구해보겠습니다. 5개의 스프링을 사용했다고 했으니 위 F와 x의 값을 이 식에서 연립하면 5개의 값이 나올 것입니다.


위와 같이 편집창에서 for문으로 작성해서 아래처럼 나왔습니다. 벡터화하라고 할때는 이렇게 for구문을 적어야할지 몰랐습니다 ㅎㅎ 위에는 그냥 참고만 하시길! for구문으로 배열개념을 이용해서 k(i)를 각각 구해주고 마지막 k값을 display해주면 눈으로 볼 수 있습니다.


명령창에서 스크립트의 이름을 치면 위와 같이 나옵니다. k값이 총 5개가 나왔네요. e형식으로 표현해서 다소 보기 힘들수도? 쉬울수도 있네요 ㅎ


이제, 포텐셜에너지를 구해보겠습니다. 문제에 적힌 식을 이용합니다.


위에서 적었던 식에 그대로 이어서 아래에 for구문을 하나더 만들어서 아래의 결과를 냈습니다.


위에값이 k이고 아래값이 포텐셜에너지인 U입니다. 일부러 k값도 보여주게 했습니다. 윗줄이 k값이고 아랫줄이 U값입니다. 행벡터로 표현이 되고 있습니다.


좌측에 있는 workspace에서도 정확한 값을 나타내주고 있습니다. (확인차...ㅎ)

이제 문제에서 마지막으로 묻고 있는 '포텐셜에너지의 최대값'을 max 명령으로 찾아내야 합니다. 우선, help max 해설은 아래와 같습니다.


너무 길어서 중간에 짤랐습니다.. 혹여 더 필요하시다면 matlab 명령창에서 help max를 쳐보시길 바랍니다.


max(U)를 입력하면 위와 같이 U의 최대값이 ans = 0.18 이라고 저장되면서 알려줍니다. 이상!