본문 바로가기

프로그램/MATLAB

【MATLAB】 매개변수 방정식, 3차원 원추형 나선 그래프 문제풀이

- Chapra의 응용수치해석 3판 문제 2.17

[문제]

다음의 매개변수 방정식은 원추형 나선(conical helix)을 나타낸다.


범위 t = 0에서 6π까지 증분 Δt = π/64로 x, y 및 z의 값을 계산하라. subplot을 사용하여 위쪽 구획에 (x,y)의 2차원 그래프(붉은색 실선)를, 아래쪽 구획에 (x,y,z)의 3차원 그래프(청록색 실선)를 그려라. 두 그래프 모두 축에 라벨을 표시하라.

[문제풀이]

우선, t가 0부터 6π까지 증분을 Δt = π/64으로 아래와 같이 2가지 표현중 하나를 사용하면 됩니다.

1) 콜론 표기법


2) linspace()


저는 이번문제에서 좀더 표시하기 쉬운 1번 콜론 표기법으로 계속 풀어보겠습니다. 다만 2번 방법으로 하려면 마지막에 사이 갯수를 입력해야하는데 정확하게 알수있는 방법을 더 사용해야하는 단점이 있습니다. 이번 경우에는 콜론 표기법이 더 쉽습니다.


첫문장은 예의상 clear로 변수의 중첩을 방지했습니다. 그리고 위에서 1)번 콜론 표기법으로 진행해보겠습니다.

5~7번째줄이 문제에서 주어진 수식을 matlab언어로 적은 것입니다. 이때, 곱하기는 스타(*)를 적어주어야하고, 변수 t가 벡터이기때문에 뒤에 콤마(.)를 붙여주었습니다. 뒤에 세미콜론(;)은 그래프만 결과로 보기위해서 작성했습니다.

(추가로, 콤마와 곱하기 기호를 떨어뜨려 쓰면 안되는 경우를 확인했습니다. 예를 들어서 (.   *)처럼 사이에 띄어쓰기로 한칸이상 띄우게되면 matlab에서 제대로 인식하지 못해서 error가 발생했습니다. 이 경우엔 무조건 콤마와 스타를 붙여서 사용해야합니다.)


9~12번째줄이 문제에서 그리라고한 첫 그래프입니다. 위와같이 subplot으로 여러개 그래프를 한번에 볼 준비를 해두고, plot에 'r'을 사용해서 빨간색 선을 그렸고 각각 축이름을 붙여주었습니다.


그러면 위와 같이 그래프가 표현됩니다. 이때, t가 매우 연속적이지 못하기때문에 위 그래프도 완벽한 곡선이 아니라 직선이 이어진 형태를 볼 수 있습니다.


그리고 두번째 그래프를 그리는 코드입니다. 14번줄은 위의 경우와 동일하고 마지막자리에 숫자 2로 바꿔줍니다. 15번줄에 3D 그래프를 그릴 것이므로 plot3()라는 명령을 사용합니다. 그리고 'g'는 녹색으로 그래프를 그리기 위해서 넣었습니다. 또한 x,y,z축에 이름을 붙여주고 마지막에 gird를 붙여주어서 3차원의 그래프를 조금더 보기 편하게 수정해보았습니다.


위와 같은 그래프를 얻었습니다.

아래는 전체 코드와 결과 그래프 입니다.