본문 바로가기

매트랩

【MATLAB】 if~elseif 구조 sign 함수 M-파일 개발 문제풀이 -Chapra의 응용수치해석 3판 예제 3.4 [문제] Q. 스칼라에 대하여 MATLAB의 내장함수인 sign 함수는 인수의 부호에 따라 (-1, 0, 1)의 값을 넘겨준다. 다음은 이 함수가 MATLAB에서 어떻게 수행되는지를 나타낸다. 같은 기능을 수행하기 위한 M-파일을 개발하라. [문제풀이] 이번 문제는 if ~ else if 구문으로 쉽게 풀이할 수 있습니다. 먼저, 사용자가 값을 입력하기 위해 input 함수를 사용했습니다. (교재 풀이는 함수풀이인데, 저는 input이 편해서 사용했습니다.) 결과는 위와 같이 출력되었습니다. 아무래도 한국인이다보니 한글이 더 편하게 받아들여지네요. 참고로 sign 함수의 설명은 다음과 같습니다. 직역하자면, 입력한 x가 0보다 크면 1을, 0보다 작으면 -1..
【MATLAB】 발사체 운동에 대한 동영상 예제 풀이 [문제] Q. 초기 속도 (V0)와 각도(θ0)로 발사된 발사체의 직교좌표는 다음과 같이 계산 된다. (공기 저항은 없다고 가정한다.) 여기서 g는 9.81 m/s^2이다. V0 = 5 m/s 이고, θ0 = 45˚ 인 경우, 발사체의 궤적에 대한 동영상을 만드는 스크립트를 작성하라. [문제풀이] 우선, 문제에서 주어진 기본값들을 위처럼 입력해줍니다. 중력가속도나 초기속도, 초기 각도입니다. 그리고 1번줄에 clear, clc, clf는 스크립트가 실행될때마다 모든 것을 정리하기 위한 하나의 예의입니다. 그리고 주어진 함수는 아래와 같이 작성할 수 있습니다. 우선, 시간을 나눠줘야하기 때문에 위와같이 dt라는 변수로 시간을 나눠줄 준비를 하고 for구문을 통해서 i를 1~1000까지 (1번은 위에서 정의..
【MATLAB】 화학반응 Arrhenius 방정식 문제풀이 - Chapra의 응용수치해석 3판 문제 2.20 [문제] 화학반응의 온도에 대한 의존성은 다음과 같은 Arrhenius 방정식으로 계산할 수 있다. 여기서 k는 반응속도(s^-1), A는 진동(또는 주파수) 인자, E는 활성에너지(J/mol), R은 기체상수[8.314 J/(mole*K)], 그리고 Ta는 절대온도(K)이다. 혼합물은 E = 1 x 10^5 J/mol 이며 A = 7 x 10^16 이다. MATLAB을 사용하여 온도 253에서 325K까지 반응속도의 값을 구하라. subplot을 사용하여 (a) Ta에 대한 k(녹색 선)와, (b) 1/Ta에 대한 log10k(붉은색 선)의 그래프를 나란히 그려라. semilogy 함수를 적용하여 (b)를 구하라. 두 subplot의 축에 라벨과 제목을..
【MATLAB】 문제 2.18 풀이 - Chapra의 응용수치해석 3판 문제 2.18 [문제] 다음의 MATLAB 명령어를 입력하면 무엇이 화면에 출력되는가? (a) (b) [문제풀이] (a) 순서대로 풀이하면 이렇습니다. 먼저, x에 5를 대입합니다. 그리고 세제곱을 해주어서 결과를 냅니다. 그리고 y = 8-x에 x를 넣어주어 결과를 8 - 5 이므로 y는 3이 됩니다. 여기서 중간에 쓰여진 x^3은 y=8-x 식에서 사용되지 않습니다. 그 이유는 변수가 이용되지 않았다는 것과 두번째줄의 결과는 세미콜론을 붙이지 않으면 알 수 있듯이 ans = 125로 나올 뿐입니다. 위 상태가 세미콜론(;)을 붙이지 않고 계산해본 결과입니다. 위에서 알 수 있듯이 x^3을 하면 ans변수에 125라는 값이 저장되는 것입니다. 만약에 y=8-ans라고..
【MATLAB】 Manning 방정식 개수로 행렬문제 풀이 - chapra의 응용수치해석 3판 문제 2.10 [문제] Manning 방정식은 직사각형 단면의 개수로 내에서 물의 속도를 계산하는데 사용된다. 여기서 U는 속도(m/s), S는 수로의 기울기, n은 거칠기 계수, B는 폭(m), 그리고 H는 깊이(m)이다. 다음의 데이터는 5개의 수로에서 얻은 것이다. 거칠기 계수 n 수로의 기울기 S 수로의 폭 B 수로의 깊이 H 0.035 0.0001 10 2 0.020 0.0002 8 1 0.015 0.0010 20 1.5 0.030 0.0007 24 3 0.022 0.0003 15 2.5 이 값을 행렬에 저장하는데, 각 행은 각 수로를 표현하고 각 열은 각 매개변수를 표현하도록 하라. 매개변수 행렬 내의 값을 기초로 속도의 열벡터를 계산하는 MATLAB 문장을..
【MATLAB】 간단한 수학계산 문제풀이 [ MATLAB 간단한 수학계산 문제풀이 ] 1번. 2번. matlab에서 곱하기 기호는 * 입니다. 3번. 나누기 기호는 슬래쉬(/) 입니다. 역슬래쉬는 반대로 나눠줍니다. 4번. 괄호안에 4+3을 먼저 수행하여 7이되고 더하기보다 곱하기가 먼저이므로 2*7을 해서 14가 되고 마지막으로 3+14를 통해 답이 17이 나옵니다. 5번. 곱하기와 나누기는 우선순위가 같기때문에 좌측부터 수행이 됩니다ㅏ. 6번. 소수점계산도 가능합니다. 7번. 8번. 더하기보다 지수승이 먼저 계산됩니다. 9번. sqrt()는 루트(root)를 붙여주는 기능입니다. 괄호안에 숫자가 루트 내에 들어가게 됩니다. help sqrt하게 되면 위와 같이 'square root'라는 설명을 보실 수 있습니다. 10번. 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의..
【MATLAB】 표준정규확률 밀도함수 그래프 문제풀이 [문제] 표준정규확률 밀도함수는 다음과 같이 종 모양의 곡선으로 나타낼 수 있다. MATLAB을 이용하여 z가 -5에서 5까지 이 함수의 그래프를 그려라. 수평축은 z, 수직축은 주파수(frequency)로 놓아라. [문제풀이] 우선, 위 함수를 matlab에서 이해할 수 있는 수식으로 적어주는 것이 중요한 듯 합니다. 위에서 2번줄이 문제에서 알려준 공식을 적은 것입니다. 루트는 sqrt() 명령어를 사용하고 지수함수 e는 exp() 명령어를 통해 작성했습니다. 그리고 z가 행렬이기때문에 요소끼리 계산하기위에 바로 뒤에 콤마(.)를 붙여주었습니다. 그리고 1번 줄, 2번 줄 뒤에 각각 세미콜론(;)을 붙여주어 값이 보이지 않게 하였습니다. 위와 같이 작성한 후, 실행(F5)를 눌러주면, 위와 같은 그래..
【MATLAB】 기초 연습문제 2.5 (함수, plot) [연습문제 2.5] 다음 식은 x의 함수로서 y값을 계산하는 데 사용된다. 여기서 a와 b는 매개변수이다. MATLAB을 실행할 수 있는 식을 써라. 여기서 a=2, b=5 그리고 x는 증분 로 0에서 pi/2까지의 값을 가지는 벡터이다. 식이 최소 개수의 구두점들(점 표기)을 사용하여 y에 대한 벡터를 산출할 수 있도록 하라. 또한 벡터 을 계산하라. 여기서 z의 각 원소는 y의 각 원소의 제곱이다. x, y와 z를 합하여 행렬 w로 만들라. 여기서 행렬 w는 각 열은 x, y와 z변수들 중 한개를 나타내게 하고, short g 포맷을 사용하여 w를 출력하라. 또한 x에 대한 y와 z의 그래프를 라벨을 포함시켜 그려라. 그래프에 설명문(legend)을 포함하라(설명문을 포함시키는 방법을 알기 위해서는 ..
【MATLAB】 기초 연습문제 2.1~2.3 : 콜론 표기법과 linspace 책 : Chapra의 응용수치해석 3판 [연습문제 2.1] 콜론 표기법으로 나타낸 다음과 같은 벡터를 만들기 위하여 linspace 함수를 사용하라. (a) t = 4 : 6 : 35 (b) x = -4 : 2 [문제풀이] (a) 우선, t = 4 : 6 : 35는 다음과 같다. 그리고 linspace는 다음과 같다. 위 화면은 help linspace를 치면 상세하게 알려주는 도움말같은 기능이다. 위와 같이 입력하면, linspace로도 (a)와 같은 결과를 낼 수 있었습니다. (b) 우선, x = -4 : 2는 다음과 같다. -4에서 2까지 1씩 증가시켜 표현해준다. (a)에서는 사이에 6이라는 숫자가 증감단위였지만, (b)에서는 생략했기때문에 증감단위가 1로 되는 것이다. 이를 linspace로 표..