본문 바로가기

프로그램

【MATLAB】 sin 함수를 무한급수로 푸는 문제 풀이 -Chapra의 응용수치해석 3판 연습문제 3.5 [문제] sin함수는 다음의 무한급수에 의해 계산된다. 이 무한급수에서 각 항이 더해질 때마다 sin x의 값을 계산하고 출력하는 M-파일을 만들어라. 다시 말하면 다음 식에 대해 선택할 수 있는 차수의 항까지의 값을 순차적으로 계산하고 출력하라. 각각의 경우에 대해 다음의 백분율 상대오차를 계산하고 출력하라. sin(0.9)를 계산하기 위해 시범적으로 8번째 항까지 포함하도록 프로그램을 수행하라. [문제풀이] 이번 문제는 sin함수를 계산하기 위한 sin(x)라는 내장함수를 사용하지 않고, 무한급수를 통해서 계산해보고 참값인 sin(x)와 상대오차로 비교해보는 것입니다. 우선 1번째에서 5번째 줄까지 아래에서 잠시보시면, clc, clear는 예의상 해..
【MATLAB】 복리 이자 계산 문제풀이 - Chapra의 응용수치해석 3판 연습문제 3.2 [문제] Q. 연말에 이자가 복리로 계산되는 계좌에 금액 P의 자금이 투자되었다. 미래의 원리금 F는 이자율 i로 n번(년)의 기간 후에 다음의 공식으로 결정된다. F = P(1+i)^n 1에서부터 n 까지 매년 투자의 미래 가치를 계산하는 M-파일을 만들어라. 함수의 입력인자로 초기 투자금 P, 이자율 i(소수점 수), 미래 가치가 계산되는 동안의 년수 n 을 포함해야 한다. P = 100,000, i = 0.05, n =10년에 대한 프로그램을 실행하라. [문제풀이] 즐거운 문제이다. 미래의 원리금 F를 벌기위해서 어느 은행에 맡겨두었더니 이자율 i =0.05 이다. 5%의 이자율을 주는 은행은 어디일까... 아래는 그 사람의 은행계좌가 1년이 지날..
【MATLAB】 원추형+원통형 탱크의 부피 문제 풀이 - Chapra의 응용수치해석 3판 연습문제 3.1 [문제] 그림은 밑부분이 원추형인 원통형 탱크이다. 액체의 높이가 상당히 낮아 원추형 부분에만 있다면 유체의 부피는 원추형의 부피와 같을 것이다. 액체가 원통형 부분까지 차게 되면 액체의 총 부피는 원추형 부분의 액체 부피와 원통형 부분에 있는 액체 부피를 더한 것과 같다. 탱크의 부피를 R과 d 값의 함수로 계산하기 위한 M-파일을 판정구조를 이용하여 만들어라. 깊이가 3R보다 작은 경우에 대한 부피를 계산하는 함수를 설계하라. 만약 d > 3R 인 경우에는 "Overtop"이라는 에러 메시지를 반환할 수 있도록 하라. 다음의 데이터를 가지고 검증하라. 탱크의 반경이 R임에 유의하라. R 0.9 1.5 1.3 1.3 d 1 1.25 3.8 4.0 [문..
ANSYS Fluent 독학 연습 8번째 - 목 적 : 간단한 파이프 열 및 유동 해석 - 설 정 : 건물 내 수도관의 일부로 가정 및 겨울철 조건 설정 - 이 유 : 개인 학습 - 줄거리 : 라이센스 제한 상 기본메쉬로 진행하여 전체적인 동향을 살펴본다. 겨울철에 어떠한 재료를 사용할 경우에 에너지 손실을 대략적이나마 추측할 수 있다. 이번 연습을 뒤로하고 최적화를 위해 다른 재료를 사용하고 보다 현실적인 모델링이 필요하다. (1) 형상 - DesignModeler - 지름 10mm - 길이 1,000mm (지름의 100배) (2) Mesh - 기본 메쉬 - nodes : 48,488 - elements : 42,042 (3) 조건 - 중력 : 9.81 m/s - Models : Energy equation, Laminar - 유체 : 밀도 ..
【MATLAB】 순차곱셈 (펙토리얼) 계산을 위한 for 루프 문제풀이 [문제] Q. 순차곱셈(factorial, 펙토리얼)을 계산하기 위한 M-파일을 만들어라. [문제풀이] 순차곱셈은 간단하게 factorial(x) 함수를 이용해서 바로 구하는게 가능하지만, 이번 문제는 for 루프구조를 이용해서 펙토리얼 기능을 하는 코드를 짜보라는 문제입니다. 우선 코드는 위와 같이 함수로 작성했습니다. 이름에 빨간표시가 있네요. 하지만, 구동하는데에는 문제가 없어서 포스팅합니다. [출력값] = 함수이름 (입력값) 으로 작성해주고 for 구문을 통해 펙토리얼 기능을 할 수 있도록 만들었습니다. 1부터 입력받은 값까지 쭈욱~ 곱해주면 됩니다. 위에가 출력된 결과물입니다. 이상!
【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】 대화식 M-파일 함수 문제풀이 - Chapra의 응용수치해석 3판 예제 3.3 [문제] Q. 번지점프하는 사람의 자유낙하 속도를 계산한다. 입출력으로 input과 disp 함수를 사용하라. [문제풀이] 항력계수 공식은 책에 적혀있는데로 적을 수 있습니다. 이번 대화식 M-파일 문제는 input 함수를 사용하는데에 초점이 있습니다. %뒤에 초록색 한글로 설명을 적어두었습니다. 순서대로 조건들을 입력해주고, input 함수로 사용자가 입력하게하고, 결과를 도출하는 중입니다. 위 결과가 출력된 모습입니다. 1~3번을 직접 숫자로 입력해주면 결과가 자동으로 함수에의해 계산되어 출력됩니다. 이상!
LabVIEW (랩뷰) 평가판 프로그램 설치 안내 안녕하세요. 실험 및 알고리즘 설계에서 많이 사용하는 LabVIEW (랩뷰) 평가판 프로그램 설치 안내입니다. 제가 설치한 방법을 내용으로 포스팅합니다. 평가판은 7일 사용할 수 있고 연장하면 한달?정도 더 사용이 가능합니다. NI 홈페이지로 들어갑니다. http://www.ni.com/ko-kr.html 상단의 'SHOP'을 클릭하여 들어갑니다. 그리고 스크롤을 조금 내려서 '엔지니어링 교육'을 클릭하여 들어갑니다. 스크롤을 조금 아래로 내려서 소프트웨어에서 LabVIEW를 클릭합니다. 구매하시는 분은 아래 페이지에서 계속 진행해주시고, 평가판 다운로드로 설명하겠습니다. 아래 중간에서 '평가판 다운로드하기'를 클릭합니다. 그럼 아래와 같은 화면이 나오는데 스크롤을 조금 더 내려서.... 엔지니어링 교육..
ANSYS Student 학생용 설치 안내 학업상 ANSYS program을 자주 사용하다가 사용처에 계속 왔다갔다 하는게 너무 귀찮아져서 개인 노트북에 ANSYS student 버전을 찾아서 깔았습니다. 저도 초창기에 어디서 다운 받는지 몰라서 많이 해맨 기억이 있어서 이렇게 블로그에 게시합니다. 아래 순서들을 따라하시면 쉽게 다운 하실 수 있을 겁니다. 학생용 라이센스로 12개월간 사용이 가능하다고 합니다. 그리고 갱신도 가능하다는데, 그 때가 되면 갱신하는 것도 포스팅해보도록 하겠습니다. ANSYS 메인 설치 홈페이지인 아래 사이트로 접속합니다. http://www.ansys.com/ko-KR/academic/free-student-products (참고로 저는 ANSYS 한국 홈페이지에서 다운 받은 거고 다른 블로거 분께서 영문?으로 다운..
【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번은 위에서 정의..