3장 MATLAB 프로그래밍 3.1 M-파일 3.2 입력-출력 3.3 구조 프로그래밍 3.4 내포화와 들여쓰기

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

Python Essential 세미나 1 CGI 프로그램 작성법 발표자 : 박승기 ( 수 )
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
Power Java 제3장 이클립스 사용하기.
4. Matlab-Simulink를 이용한 메카니즘 해석
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
Visual Basic 함수.
양방향 파이프의 활용 양방향 통신 파이프는 기본적으로 단방향이므로 양방향 통신을 위해서는 파이프를 2개 생성한다.
1. C++ 시작하기.
Ch1 MATLAB Environment 제1장 매트랩 환경.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
For/While Syntax & Practice!!
CAS (Computer Algebra System) 소개
2주차: 변수, 수식, Control Flow.
2007 1학기 11 프로젝트 기초 실습.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
KIM HEESANG PL/SQL 2 KIM HEESANG
제4장 제어 시스템의 성능.
From Block To C SW 코딩을 위한 5단계 교육
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
MATLAB
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
3D 프린팅 프로그래밍 05 – 반복패턴 만들기 강사: 김영준 목원대학교 겸임교수.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #06 : 반복문 Choi Seong Yun
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
Fucntion 요약.
CAS (Computer Algebra System) 소개
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
제3장 함수와 배열수식 전진환
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
Flow Diagram IV While.
[INA240] Data Structures and Practice
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
함수, 모듈.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
2.1 MATLAB 환경 2.2 배정 2.3 수학적 연산 2.4 내장함수의 사용 2.5 그래픽 2.6 다른 자원
Basic Function 김윤성 박로빈 이지호 천영재
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
I. 수와 식 1. 유리수와 순환소수.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
어서와 C언어는 처음이지 제21장.
Docker Study 6~7.
Report #2 (기한: 3/16) 데이터 구조 과목의 수강생이 50명이라고 가정한다. 이 학생(학번은 2016????으로 표현됨)들의 중간 시험(0~100), 기말 시험(0~100) 성적을 성적 파일에 작성하라(프로그램을 통해서 또는 수작업으로). 성적 파일을 읽어들여서.
6 객체.
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
20 XMLHttpRequest.
5. 1 두 수를 입력받아 큰 수를 구하는 순서도를 작성하시오
Presentation transcript:

3장 MATLAB 프로그래밍 3.1 M-파일 3.2 입력-출력 3.3 구조 프로그래밍 3.4 내포화와 들여쓰기 3.6 사례연구: 번지점프하는 사람의 속도

3장 MATLAB 프로그래밍 수학적 모델: Euler법: 3장 MATLAB 프로그래밍

3.1 M-파일 (1/5) 스크립트 파일 - 일련의 MATLAB 명령어를 구성되어 저장된 M-파일이다. %scriptdemo.m g=9.81; m=68.1; cd=0.25; t=12; v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t) >> scriptdemo v = 50.6175 3장 MATLAB 프로그래밍

3.1 M-파일 (2/5) 함수 파일 - function이라는 단어로 시작하는 M-파일이다. function outvar = funcname(arglist) %helpcomments statements outvar = value; 여기서 outvar = 출력변수의 이름 funcname = 함수의 이름 arglist = 함수의 인수목록 helpcomments = 사용자가 제공하는 함수에 관한 정보 statements = value를 계산하여 그 값을 outvar에 배정하는 문장 3장 MATLAB 프로그래밍

예제 3.2 (1/3) Q. 번지점프하는 사람의 자유낙하 속도를 함수 파일을 사용하여 구하라. 3장 MATLAB 프로그래밍 function v = freefallvel(t, m, cd) %freefallvel: bungee velocity with second-order drag %v=freefallvel(t,m,cd) computes the free-fall velocity % of an object with second-order drag %input: %t=time(s) %m=mass(kg) %cd=second order drag coefficient (kg/m) %output: %v=downward velocity (m/s) g=9.81; %accelearation of gravity v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t); 3장 MATLAB 프로그래밍

예제 3.2 (2/3) Q1. 68.1 kg 인 사람의 12초 후의 속도를 구하려면… >> freefallvel(12, 68.1, 0.25) ans = 50.6175 >> freefallvel(8, 100, 0.25) 53.1878 3장 MATLAB 프로그래밍

예제 3.2 (3/3) 도움 설명을 불러내려면 다음과 같이 입력한다. >> help freefallvel freefallvel: bungee velocity with second-order drag v=freefallvel(t,m, cd) computes the free-fall velocity of an object with second-order drag. input: … v = downward velocity (m/s) 3장 MATLAB 프로그래밍

3.1 M-파일 (3/5) - 함수 M-파일은 2개 이상의 결과를 반환할 수 있다. 예) 벡터의 평균과 표준편차의 계산 function [mean, stdev] = stats(x) n=length(x); mean=sum(x)/n; stdev=sqrt(sum((x-mean).^2/(n-1))); >> y=[8 5 10 12 6 7.5 4]; >> [m,s] =stats (y) m = 7.5000 S = 2.8137 3장 MATLAB 프로그래밍

3.1 M-파일 (4/5) 부함수(subfunctions) - 함수가 다른 함수를 부를 수 있다. 이러한 함수는 M-파일을 구분하여 작성할 수도 있고, 한 개의 M 파일에 포함시킬 수도 있다. function v= freefallsubfunc(t, m, cd) v=vel(t, m, cd); end function v=vel(t, m, cd) g=9.81; v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t); 주함수 부함수 3장 MATLAB 프로그래밍

3.1 M-파일 (5/5) >> freefallsubfunc (12, 68.1, 0.25) ans = 50.6175 >> vel (12, 68.1, 0.25) ??? Undefined command/function ‘vel’. 3장 MATLAB 프로그래밍

3.2 입력-출력 (1/4) input 함수 - 사용자로 하여금 명령창에서 직접 입력하도록 한다. m = input ('Mass (kg): ') name = input ('Enter your name: ', 's') %문자열을 받는 경우 3장 MATLAB 프로그래밍

3.2 입력-출력 (2/4) disp 함수 - 어떤 값을 손쉽게 나타낸다. disp(' ') disp('Velocity (m/s): ') %문자열을 나타내는 경우 3장 MATLAB 프로그래밍

3.2 입력-출력 (3/4) fprintf 함수 - 정보를 표현할 때 추가적인 제어를 제공한다. fprintf ('format', x, …) %포맷코드와 제어코드를 넣어서 나타내는 경우 >> fprintf(‘The velocity is %8.4f m/s\n’ velocity) The velocity is 50.6175 m/s 3장 MATLAB 프로그래밍

3.2 입력-출력 (4/4) 표 3.1 fprintf 함수에서 사용하는 포맷 코드와 제어 코드 포맷 코드 설 명 %d %e 설 명 %d %e %E %f %g 정수 포맷 e를 사용하는 과학 포맷 E를 사용하는 과학 포맷 소수 포맷 %e나 %f 중 간단한 포맷 제어 코드 \n \t 새로운 줄로 시작 탭 3장 MATLAB 프로그래밍

예제 3.3 (1/3) Q. 예제 3.2에서와 같이 번지점프하는 사람의 자유낙하 속도를 계산하라. 입출력으로 input과 disp 함수를 사용하라. function freefalli % freefalli: interactive bunge velocity % freefalli interactive computation of the % free-fall velocity of an object % with second-order drag. g=9.81; % acceleration of gravity m=input('Mass(kg):'); cd=input('Drag Coefficient(kg/m):'); 3장 MATLAB 프로그래밍

예제 3.3 (2/3) Q. 예제 3.2에서와 같이 번지점프하는 사람의 자유낙하 속도를 계산하라. 입출력으로 input과 disp 함수를 사용하라. t=input('Time(s):'); disp(' ') disp('Velocity (m/s):') disp(sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t)) minusvelocity= -sqrt(g*m/cd)* tanh(sqrt(g*cd/m)*t); fprintf('The velocity is %8.4f m/s\n', minusvelocity) name = input ('Enter your name: ', 's'); disp('Your name is'); disp(name) 3장 MATLAB 프로그래밍

예제 3.3 (3/3) 명령창에서 다음과 같이 입력한다. >> freefalli Mass (kg): 68.1 Drag coefficient (kg/m): 0.25 Time (s): 12 Velocity (m/s): 50.6175 The velocity is -50.6175 m/s Enter your name: Kim Your name is Kim 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (1/12) 명령을 연속적으로 수행하지 않는 것을 허용하는 구문 판정 - 판정 (또는 선택): 판정에 기초를 둔 흐름의 분기점이다. - 루프 (또는 반복): 반복을 허용하는 흐름의 루프이다. 판정 [if 구조] if condition statements end 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (2/12) <파일 편집기> <명령창> >> grader(95.6) <파일 편집기> <명령창> >> grader(95.6) passing grade: 95.6000 function grader(grade) if grade >= 60 disp('passing grade:') disp(grade) end 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (3/12) [에러 함수] error ( msg) 3장 MATLAB 프로그래밍 >> errortest(10) ans = 0.1000 >> errortest(0) ??? Error using ==> errortest zero value encountered function f = errortest(x) if x==0, error(' zero value encountered'), end f=1/x; 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (4/12) [논리조건] ~ (Not) & (And) | (Or)   ~ (Not) - 논리적 부정을 나타낼 때 사용한다. & (And) - 두 식에서 논리적 곱을 나타낼 때 사용한다. | (Or) - 두 식에서 논리적 합을 나타낼 때 사용한다. value1 relation value2 3장 MATLAB 프로그래밍

<복잡한 논리식의 단계별 계산> 3.3 구조 프로그래밍 (5/12) <복잡한 논리식의 단계별 계산>                                                                                                    3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (6/12) [if … else 구조] [if … elseif 구조] if condition statements1 else statements2 end if condition1 statements1 elseif condition2 statements2 … else statementselse end 3장 MATLAB 프로그래밍

예제 3.4 (1/3) Q. 내장함수인 sign 함수와 같은 기능을 갖도록 if …else 구조를 사용하여 mysign 함수를 작성하라. 풀이) 내장함수인 sign 함수의 기능을 알아보자. >> sign(25.6) ans = 1 >> sign(-0.776) -1 >> sign(0) 3장 MATLAB 프로그래밍

예제 3.4 (2/3) function sgn = mysign(x) % mysign(x) returns 1, -1, and 0 for positive, negative, and zero values, respectively. % if x > 0 sgn = 1; elseif x < 0 sgn = -1; else sgn = 0; end 3장 MATLAB 프로그래밍

예제 3.4 (3/3) 명령창에서 다음과 같이 확인할 수 있다. >> mysign(25.6) ans = 1 -1 >> mysign(0) 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (7/12) 루프 [for … end 구조] for index = start:step:finish statements end 3장 MATLAB 프로그래밍

예제 3.5 (1/3) Q. 순차곱셈을 위한 for 루프 풀이) factorial 함수와 같은 기능을 갖도록 for 루프를 사용하여 프로그램을 작성한다. >> factorial(5) ans = 120 3장 MATLAB 프로그래밍

예제 3.5 (2/3) function fout = factor(n) % computes the product of all integers from 1 to n. % x = 1; for i=1:n x = x * i; end fout = x; 3장 MATLAB 프로그래밍

예제 3.5 (3/3) 명령창에서 다음과 같이 확인할 수 있다. >> factor(5) ans = 120 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (8/12) [벡터화] i = 0; for t = 0:0.02:5 i = i + 1; y(i) = cos(t); end t = 0:0.02:5; y = cos(t); 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (9/12) [while 구조] while과 end 사이의 조건이 참인 동안에만 반복한다. while condition statements end 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (10/12) >> x = 8 x = 8 >> while x > 0 disp(x) end 5 2 -1 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (11/12) [while … break 구조] while (1) statements while과 end 사이의 조건이 참인 동안 반복하나, while 루프 내의 어떤 위치에서도 종료할 수 있다. 그 예는 다음과 같다. [while … break 구조] while (1) statements if condition, break, end end 3장 MATLAB 프로그래밍

3.3 구조 프로그래밍 (12/12) 3장 MATLAB 프로그래밍 >> x= 0.24 x = 0.2400 >> while(1) x = x - 0.05 if x<0, break, end %후기점검 루프 end 0.1900 0.1400 0.0900 0.0400 -0.0100 3장 MATLAB 프로그래밍

3.4 내포화와 들여쓰기 내포화 다른 구조 안에 구조를 배치하는 것이다. 3장 MATLAB 프로그래밍

예제 3.6 (1/3) Q. 2차방정식을 풀기 위해 내포화를 이용함 3장 MATLAB 프로그래밍

예제 3.6 (2/3) function quadroots(a, b, c) % quadroots : roots of a quadratic equation % quadroots(a, b, c) : real and complex roots % of quadratic equation % input: % a = second-order coefficient % b = first-order coefficient % c = zero-order coefficient % output: % r1: real part of first root 3장 MATLAB 프로그래밍

예제 3.6 (2/3) % i1: imaginary part of first root % r2: real part of second root % i2: imaginary part of second root if a == 0 %special cases if b~= 0 %single root r1=-c/b else %trivial root error(' Trivial solution. Try again! ') end 3장 MATLAB 프로그래밍

예제 3.6 (2/3) else %quadratic formula d=b^2 – 4*a*c; %discriminant if d>=0 % real roots r1 = (-b+sqrt(d))/(2*a) r2 = (-b-sqrt(d))/(2*a) 3장 MATLAB 프로그래밍

예제 3.6 (2/3) %complex roots r1 = -b/(2*a) i1 = sqrt(abs(d))/(2*a) r2=r1 i2=-i1 end 3장 MATLAB 프로그래밍

예제 3.6 (3/3) 명령창에서 다음과 같이 확인할 수 있다. >> quadroots(1,1,1) r1 = -0.5000 i1 = 0.8660 r2 = i2 = -0.8660 3장 MATLAB 프로그래밍

예제 3.6 (3/3) 명령창에서 다음과 같이 확인할 수 있다. >> quadroots(1,5,1) r1 = -0.2087 r2 = -4.7913 >> quadroots(0,0,0) ??? Error using ==> quadroots Trivial solution. Try again! 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (1/7) 무명 함수 M-파일을 만들지 않고 간단한 함수를 생성할 수 있게 한다. 명령창에서 다음과 같은 구문을 사용한다. fhandle = @(arglist) expression >> outvar =feval('cos',pi/6) >> fl = @(x,y) x^2 + y^2; >> fl (3,4) ans = 25 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (2/7) inline 함수 - Matlab 7 이전에서 무명함수와 같은 역할 수행. funcname = inline('expression',`'var1' , 'var2' ,…) >> f1 =inline('x^2 + y^2', 'x', 'y') f1 = inline function: f1(x,y) = x^2 + y^2 >> f1(3,4) ans = 25 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (3/7) function 함수 다른 함수에 작동하는 함수. 예 ) fplot (fun, lims) >> vel= @(t)… sqrt(9.81*68.1/0.25)* tanh(sqrt(9.81*0.25/68.1)*t); >> fplot(vel, [0 12]) 3장 MATLAB 프로그래밍

예제 3.7 Q. 어떤 범위에서 함수의 평균값을 구하기 위한 M-파일 만들기 풀이) t=0에서 t=12까지의 범위에서 함수 값을 그래프로 그릴 수 있다. >> t=linspace(0, 12); >> v= sqrt(9.81*68.1/0.25)*tanh(sqrt(9.81*0.25/68.1)*t); >> mean(v) ans =      36.0870 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (4/7) function favg = funcavg(f, a, b, n) % input: % f = function to be evaluated % a= lower bound of range % b= upper bound of range % n= number of intervals % output: % favg = average value of function x = linspace(a,b,n); y=f(x); favg=mean(y); 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (5/7) 명령창에서 다음과 같이 확인할 수 있다. 3장 MATLAB 프로그래밍 >> vel= @(t)… sqrt(9.81*68.1/0.25)*tanh(sqrt(9.81*0.25/68.1)*t); >> funcavg(vel, 0, 12, 60) ans = 36.0127 >> funcavg(@sin, 0, 2*pi, 180) -6.3001e-017 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (6/7) 매개변수의 전달 매개변수에 새로운 값을 취할 때 편리함. function 함수의 마지막 입력인수에 varargin 추가함. [ funcavg의 수정 ] function favg = funcavg (f, a, b, n, varargin) x = linspace(a,b,n); y = f(x, varargin{:}); favg = mean(y) 3장 MATLAB 프로그래밍

3.5 M-파일로의 함수 전달 (7/7) 명령창에서 다음과 같이 확인할 수 있다. 3장 MATLAB 프로그래밍 >> vel= @(t, m, cd) sqrt(9.81*m/cd)*tanh(sqrt(9.81*cd/m)*t); >> funcavg(vel, 0, 12, 60, 68.1, 0.25) %m=68.1, cd=0.25 ans = 36.0127 >> funcavg(vel, 0, 12, 60, 100, 0.28) %m=100, cd=0.28 38.9345 3장 MATLAB 프로그래밍

3.6 사례연구: 번지점프하는 사람의 속도 (1/4) 수학적 모델: Euler법: 3장 MATLAB 프로그래밍

3.6 MATLAB M-파일: 번지점프하는 사람의 속도 (2/4) function vend = velocity1(dt, ti, tf, vi) % velocity1: Euler solution for bungee velocity % vend = velocity1(dt, ti, tf, vi) % Euler method solution of bunge % jumper velocity % inputs: % dt = time step (s) % ti = initial time (s) % tf = final time (s) % vi = initial value of dependent variable (m/s) 3장 MATLAB 프로그래밍

3.6 MATLAB M-파일: 번지점프하는 사람의 속도 (2/4) % output: % vend = velocity at tf (m/s) t = ti; v = vi; n = (tf - ti)/dt; for i=1:n dvdt= deriv(v); v = v + dvdt *dt; t = t + dt; end vend = v; 3장 MATLAB 프로그래밍

3.6 MATLAB M-파일: 번지점프하는 사람의 속도 (3/4) function dv = deriv( v) dv = 9.81 – (0.25 / 68.1)*v^2; end 3장 MATLAB 프로그래밍

3.6 MATLAB M-파일: 번지점프하는 사람의 속도 (4/4) 명령창에서 다음과 같이 확인할 수 있다. >> velocity1(0.5, 0, 12, 0) %0.5초 간격, 24번을 계산 ans = 50.9259 >> velocity1(0.01, 0, 12, 0) %0.01초 간격, 1,200번을 계산 50.6239 >> velocity1(0.001, 0, 12, 0) %0.001초 간격, 12,000번을 계산 50.6181 3장 MATLAB 프로그래밍