2 장 MATLAB 기초 2.1 MATLAB 환경 2.2 배정 2.3 수학적연산 2.4 내장함수의사용 그래픽 2.6 다른자원

Similar documents
슬라이드 1

(Microsoft PowerPoint - Ch3_NumAnalysis.ppt [\310\243\310\257 \270\360\265\345])

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

<4D F736F F F696E74202D204D41544C4142B0ADC0C7B7CF28B9E8C6F7BFEB295F3031C0E55FBDC3C0DBC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx

<4D F736F F D20BACEB7CF2D4D61744C616220B1E2C3CA20B9D720C7C1B7CEB1D7B7A1B9D62E646F63>

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

PowerPoint Presentation

public key private key Encryption Algorithm Decryption Algorithm 1

fx-82EX_fx-85EX_fx-350EX

슬라이드 1

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

2005 7

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

-주의- 본 교재는 최 상위권을 위한 고난이도 모의고사로 임산부 및 노약자의 건강에 해로울 수 있습니다.

Open methods

해양모델링 2장5~ :26 AM 페이지6 6 오픈소스 소프트웨어를 이용한 해양 모델링 물리적 해석 식 (2.1)의 좌변은 어떤 물질의 단위 시간당 변화율을 나타내며, 우변은 그 양을 나타낸 다. k 5 0이면 C는 처음 값 그대로 농

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - m05_Equation1(Print) [호환 모드]

슬라이드 1

Modern Javascript

Microsoft PowerPoint - m22_ODE(Print) [호환 모드]

140307(00)(1~5).indd

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

Tcl의 문법

Microsoft PowerPoint - lect03.ppt [호환 모드]

Chapter4.hwp

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

초4-1쌩큐기본(정답)본지

歯엑셀모델링

% Rectangular Value 입력 t = -50 : 1 : 50; % 시간영역 for i = 1 : 101 if abs ( t ( i ) ) < 10 x ( i ) = 1; else x ( i ) = 0; % 화면을 2 열 1 행으로나눈후 % 2 열 1 행에 R

fx-570EX_fx991EX


비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint 프레젠테이션

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Microsoft PowerPoint - [2009] 02.pptx


기관고유연구사업결과보고

Microsoft PowerPoint - Divider2.ppt

Application TI-89 / Voyage TM 200 PLT application. application, application. APPLICATIONS :, N. 1. O application. 2. application : D C application,. a

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

목차 v M-file v 제어 v 변수 함수 스크립트 v 데이터타입 v Plot v variable save/load v File Open/Close, 데이터를쓰고, 읽는 fprintf, fscanf v Graphics with MatLab v 본강의자료는 MATLAB

11장 포인터

chap10.PDF

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - e pptx

<C6F7C6AEB6F5B1B3C0E72E687770>

PowerPoint Presentation

Microsoft PowerPoint - 26.pptx

G5 G25 H5 I5 J5 K5 AVERAGE B5 F5 AVERAGE G5 G24 MAX B5 F5 MIN B5 F5 $G$ $H$25 $G$25 $G$ $H$25 G24 H25 H24 I24 J24 K24 A5 A24 G5 G24, I5

C# Programming Guide - Types

Microsoft PowerPoint - Chapter8.pptx

컴파일러

Microsoft Word - SAS_Data Manipulate.docx

Microsoft PowerPoint - hw8.ppt [호환 모드]

산선생의 집입니다. 환영해요

슬라이드 1

π >> x=linspace(0,2*pi,30); >> y=sin(x); >> plot(x,y) π

Chapter 연습문제답안. y *sin-*cos*^ep-*/sqrt. y [ ; sinpi/ ; sin*pi ; ] 혹은 [ sinpi/ sin*pi ]. a ais[- ] b et.,., sin. c.. a A는주어진행렬 M의 번째열만을표시하는새로운행렬을나타낸다.

, ( ) 1) *.. I. (batch). (production planning). (downstream stage) (stockout).... (endangered). (utilization). *

Javascript.pages

슬라이드 1

(Microsoft PowerPoint - Ch6_NumAnalysis.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Presentation

<C6EDC1FDBABB2DB5F0C0DAC0CEBAD0BEDF2E687770>

Microsoft PowerPoint - MDA 2008Fall Ch2 Matrix.pptx

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

PowerPoint 프레젠테이션

Microsoft PowerPoint - 27.pptx

Manufacturing6

Java ...

13주-14주proc.PDF

K&R2 Reference Manual 번역본

chap 5: Trees

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

PowerPoint Presentation

SRC PLUS 제어기 MANUAL

Computer Architecture

PowerPoint Presentation

Microsoft PowerPoint - Lec06.ppt [호환 모드]

Advanced Engineering Mathematics

PowerPoint Presentation

Python과 함께 배우는 시스템 해석 - 부록 A.과학계산용 Python 프로그래밍 기초 A-2. Numpy, Matplotlib, Scipy, Sympy 소개

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

歯15-ROMPLD.PDF

MATLAB

Microsoft Word - matlab_manual.doc

Microsoft PowerPoint - ch07 - 포인터 pm0415

歯처리.PDF

Microsoft PowerPoint - 7-Work and Energy.ppt

Microsoft PowerPoint - Chapter_08.pptx

HWP Document

금오공대 컴퓨터공학전공 강의자료

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2


Microsoft PowerPoint - hci2-lecture4.ppt [호환 모드]

슬라이드 1

(001~042)개념RPM3-2(정답)

Transcription:

2 장 MATLAB 기초 2.1 MATLAB 환경 2.2 배정 2.3 수학적연산 2.4 내장함수의사용 25 2.5 그래픽 2.6 다른자원

2.1 MATLAB 환경 >> ( 명령어길잡이 ) >> 55-16 39 >> ans + 11 50 명령창 - 명령을입력하는창 그래프창 - 그래프를나타내는창 편집창 - M- 파일을편집하는창

2.2 배정 (1/10) [ 스칼라 ] >> a = 4 a = 4 >> A = 6; >> a =4, A=6; x= 1; a = 4 >> x x = 1

2.2 배정 (2/10) [ 스칼라 ] 복소수 >> x = 2 + i*4 x = 2.0000 + 4.0000i >> x = 2 + j*4 x = 2.0000 + 4.0000i

2.2 배정 (3/10) [ 스칼라 ] 포맷형태 >> pi 3.1416 >> format long (15자리유효숫자 ) >> pi 3.14159265358979 >> format short ( 소수점이하4자리 ) >> pi 3.1416

2.2 배정 (4/10) [ 배열, 벡터와행렬 ] >> a = [ 1 2 3 4 5] a = 1 2 3 4 5 >>b=[2;4;6;8;10] 열벡터 b = 2 4 6 8 10

2.2 배정 (5/10) [ 배열, 벡터와행렬 ] >> A = [1 2 3; 4, 5, 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> who Your variables are: A a ans b x

2.2 배정 (6/10) [ 배열, 벡터와행렬 ] >> whos Name Size Bytes Class A 3x3 72 double array a 1x5 40 double array ans 1x1 8 double array b 5x1 40 double array x 1x1 16 double array (complex) Grand total is 21 elements using 176 bytes

2.2 배정 (7/10) [ 배열, 벡터와행렬 ] >> b(4) A = 8 b = >> A(2,3) 6 >> E=zeros(2,3) E = 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 2 4 6 8 10

2.2 배정 (8/10) [ 콜론연산자 ] >> t = 1:5 t = 1 2 3 4 5 >> t = 1:0.5:3 t = 1.0000 1.5000 2.0000 2.5000 3.0000 >> t = 10: -1:5 t = 10 9 8 7 6 5

2.2 배정 (9/10) [ 콜론연산자 ] >> A(2,:) 4 5 6 >> t(2:4) 9 8 7 A= 1 2 3 4 5 6 7 8 9 t= 10 9 8 7 6 5

2.2 배정 (10/10) [linspace 와 logspace 함수 ] >> linspace(0,1,6) 0 0.2000 0.4000 0.6000 0.8000 1.0000 >> logspace(-1,2,4) 0.1000 1.0000 10.0000 100.0000

2.3 수학적연산 (1/7) [ 계산순서 ] 지수계산 (^) 음부호 (-) 곱셈과나눗셈 (*, /) 왼쪽나눗셈 (\) 덧셈과뺄셈 (+, -)

2.3 수학적연산 (2/7) >> 2*pi 6.2832 >> y=pi/4; >> y^2 2.45 0.5533 >> y=-4^2 y = -16

2.3 수학적연산 (3/7) >> y=(-4)^2 y = 16 >> x=2+4i x = 2.0000 + 4.0000i >> 3*x 6.0000 +12.0000i >> 1/x 0.1000-0.2000i

2.3 수학적연산 (4/7) >> x^2-12.0000 +16.0000i >> x+y 18.0000 + 4.0000i x = 2.0000 + 4.0000i y = 16 >> a=[1 2 3]; >> b=[4 5 6]'; >> A=[1 2 3; 4 5 6; 7 8 9];

2.3 수학적연산 (5/7) >> a*a 30 36 42 >> A*b 32 77 122 >> A*a??? Error using ==> * Inner matrix dimensions must agree. a = b = A = 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9

2.3 수학적연산 (6/7) >> A*A 30 36 42 66 81 96 102 126 150 >> A/pi 0.3183 0.6366 0.9549 1.2732 1.5915 1.9099 2.2282 2.5465 2.8648 A = 1 2 3 4 5 6 7 8 9

2.3 수학적연산 (7/7) >> A^2 행렬의곱 30 36 42 66 81 96 102 126 150 >> A.^2 원소별거듭제곱 1 4 9 16 25 36 49 64 81 A = 1 2 3 4 5 6 7 8 9

2.4 내장함수의사용 (1/9) Help 명령어를사용하여온라인도움을얻음 >> help log LOG Natural logarithm. LOG(X) is the natural logarithm of the elements of X. Complex results are produced if X is not positive. See also LOG2, LOG10, EXP, LOGM.

2.4 내장함수의사용 (2/9) >> help elfun ( 모든내장함수를볼수있음 ) Elementary math functions. Trigonometric. sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine.

2.4 내장함수의사용 (3/9) >> help elfun ( 모든내장함수를볼수있음 ) Exponential. exp - Exponential. log - Natural logarithm. log10 - Common (base 10) logarithm. sqrt - Square root.

2.4 내장함수의사용 (4/9) >> help elfun ( 모든내장함수를볼수있음 ) Complex. abs - Absolute value. angle - Phase angle. complex - Construct complex data from real and imaginary parts.

2.4 내장함수의사용 (5/9) >> help elfun ( 모든내장함수를볼수있음 ) Rounding and remainder. fix - Round towards zero. floor - Round towards minus infinity. ceil - Round towards plus infinity. round - Round towards nearest integer. mod - Modulus (signed remainder after division). rem - Remainder after division. sign - Signum.

2.4 내장함수의사용 (6/9) >> sin(pi/2) 1 >> exp(1) 2.7183 >> abs(1+2i) 2.2361 >> fix(1.9) : FIX(X) rounds the elements of X to the nearest integers towards zero. 1

2.4 내장함수의사용 (7/9) >> ceil(1.9) 2 >> round(1.9) 2 >> rem(7,3) : remainder after division 1 >> log(a) 0 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 2.1972 A = 1 2 3 4 5 6 7 8 9

2.4 내장함수의사용 (8/9) >> t=[0:2:20]' t = 0 2 4 6 8 10 12 14 16 18 20 >> length(t) () 11

2.4 내장함수의사용 (9/9) >> g=9.81; m=68.1; cd=0.25; >> v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t) v = 0 18.7292 33.1118 42.0762 46.9575 49.4214 50.6175 51.1871 51.4560 51.5823 51.6416

2.5 그래픽 (1/2) 그래프를빠르고편리하게그릴수있음 >> plot(t,v) >> title('plot of v versus t') >> xlabel('value of t') >> ylabel('value of v') >> grid

2.5 그래픽 (2/2) 그래프를빠르고편리하게그릴수있음 >> plot(t,v) >> title('plot of v versus t') >> xlabel('value of t') >> ylabel('value of v') >> grid >> plot(t,v,'bo:') % blue dotted line with circles on it ( 표 2.2 참조 )

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

3 장 MATLAB 프로그래밍 수학적모델 : dv c = g d v 2 dt m Euler 법 : v i+1 = v i + dv i dt Δt

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

예제 3.2 (1/3) 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 order drag %input: %t=time(s) %m=mass(kg) mass(kg) %cd=second order drag coefficient (kg/m) %output: %v=downward velocity y( (m/s) g=9.81; %accelearation of gravity v=sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t);

예제 3.2 (2/3) >> freefallvel(12, 68.1, 0.25) 50.6175 >> freefallvel(8, 100, 0.25) 53.1878

u1 예제 3.2 (3/3) >> help freefallvel freefallvel: bungee velocity with second-order drag v=freefallvel(t,m, f l(t cd) computes the free-fall f velocity of an object with second-order drag. input: v = downward d velocity (m/s)

슬라이드 7 u1 수정 user, 12/3/2007

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

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); ( d/ ) ) end 주함수 부함수

3.1 M- 파일 (5/5) >> freefallsubfunc (12, 68.1, 0.25) 50.6175 >> vel (12, 68.1, 0.25)??? Undefined command/function vel.

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

3.2 입력 - 출력 (2/4) disp 함수 - 어떤값을손쉽게나타낸다. disp(' ') disp('velocity (m/s): ') % 문자열을나타내는경우

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.2 입력 - 출력 (4/4) 포맷코드 설 명 %d %e 정수포맷 e를사용하는과학포맷 %E %f %g E를사용하는과학포맷소수포맷 %e 나 %f 중간단한포맷 제어코드 설 명 n t 새로운줄로시작탭

예제 3.3 (1/3) function freefalli % freefalli: interactive bunge velocity % freefalli f interactive i 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):'); i

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

3.3 구조프로그래밍 (2/12) function grader(grade) if grade >= 60 disp('passing passing grade:') disp(grade) end >> grader(95.6) passing grade: 95.6000

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

슬라이드 20 u2 수정 user, 12/3/2007

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

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

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

예제 3.4 (1/3) 풀이 ) 내장함수인 sign 함수의기능을알아보자. >> sign(25.6) 1 >> sign(-0.776) -1 >> sign(0) 0

예제 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.4 (3/3) 명령창에서다음과같이확인할수있다. >> mysign(25.6) 1 >> mysign(-0.776) -1 >> mysign(0) 0

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

예제 3.5 (1/3) 풀이 ) factorial 함수와같은기능을갖도록 for 루프를사용하여 프로그램을작성한다. >> factorial(5) 120

예제 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; end

예제 3.5 (3/3) 명령창에서다음과같이확인할수있다. >> factor(5) 120

u3 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); ()

슬라이드 31 u3 수정 user, 12/3/2007

3.3 구조프로그래밍 (9/12) [while 구조 ] while condition end statements

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

3.3 구조프로그래밍 (11/12) [while break 구조 ] while (1) statements if condition, break, end end statements

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

3.4 내포화와들여쓰기 내포화 - 다른구조안에구조를배치하는것이다.

예제 3.6 (1/3) f ( x) = ax + bx + 2 c x = b ± b 2 4ac 2aa

예제 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 order coefficient % b = first-order coefficient % c = zero-order coefficient % output: % r1: real part of first root

예제 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.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) else

예제 3.6 (2/3) end %complex roots r1 = -b/(2*a) i1 = sqrt(abs(d))/(2*a) r2=r1 i2=-i1 end

예제 3.6 (3/3) >>quadroots(111) quadroots(1,1,1) r1 = -0.5000 i1 = 0.8660 r2 = -0.5000 i2 = -0.8660

예제 3.6 (3/3) >>quadroots(151) quadroots(1,5,1) r1 = -0.2087 r2 = -4.7913 >> quadroots(0,0,0)??? Error using ==> quadroots Trivial solution. Try again!

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

슬라이드 44 u8 수정 user, 12/4/2007

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

u9 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); (9 1) ) >> fplot(vel, [0 12])

슬라이드 46 u9 수정 user, 12/4/2007

예제 3.7 gm gm vt () = tanh t C d C d 풀이 ) 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) 36.0870

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.5 M- 파일로의함수전달 (5/7) >> vel= @(t) sqrt(9.81*68.1/0.25)*tanh(sqrt(9.81*0.25/68.1)*t); >> funcavg(vel, 0, 12, 60) 36.0127 >> funcavg(@sin, 0, 2*pi, 180) -6.3001e-017

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

3.5 M- 파일로의함수전달 (7/7) >> 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 36.0127 >> funcavg(vel, 0, 12, 60, 100, 0.28) %m=100, cd=0.28 38.9345

3.6 사례연구 : 번지점프하는사람의속도 (1/4) 수학적모델 : dv cd 2 = g v dt m Euler 법 : v i+1 = v i + dv dt i Δt

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 i i value of dependent d variable (m/s)

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; end

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

3.6 MATLAB M- 파일 : 번지점프하는사람의속도 (4/4) >> velocity1(0.5, 0, 12, 0) %0.5초간격, 24 번을계산 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