MATLAB for C/C++ Programmers

Similar documents
MATLAB for C/C++ Programmers

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

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

PowerPoint Presentation

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

MATLAB and Numerical Analysis

436 8., {(x, y) R 2 : y = x, < x 1} (, 1] φ(t) = (t, t), (, 2] ψ(t) = (t/2, t/2), [1, ) σ(t) = (1/t, 1/t).. ψ φ, σ φ. (φ, I) φ(i) φ : I φ(i). 8.2 I =

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

슬라이드 1

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut

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

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

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

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

MATLAB for C/C++ Programmers

A 001~A 036

Advanced Engineering Mathematics

<4D F736F F F696E74202D204D41544C4142B0ADC0C7B7CF28B9E8C6F7BFEB295F3031C0E55FBDC3C0DBC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

파이널생명과학1해설OK

ÀÎÅͳÝ-°ø°£µµÇüÇØ

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

11장 포인터

FGB-P 학번수학과권혁준 2008 년 5 월 19 일 Lemma 1 p 를 C([0, 1]) 에속하는음수가되지않는함수라하자. 이때 y C 2 (0, 1) C([0, 1]) 가미분방정식 y (t) + p(t)y(t) = 0, t (0, 1), y(0)

0 cm (++x)=0 x= R QR Q =R =Q = cm =Q =-=(cm) =R =x cm (x+) = +(x+) x= x= (cm) =+=0 (cm) =+=8 (cm) + =0+_8= (cm) cm + = + = _= (cm) 7+x= x= +y= y=8,, Q

HWP Document

Microsoft PowerPoint - ch07 - 포인터 pm0415

장연립방정식을풀기위한반복법 12.1 선형시스템 : Gauss-Seidel 12.2 비선형시스템 12.1 선형시스템 : Gauss-Seidel (1/10) 반복법은초기근을가정한후에더좋은근의값을추정하는체계적인절차를이용한다. G-S 방법은선형대수방정

슬라이드 1

= ``...(2011), , (.)''

제 12강 함수수열의 평등수렴

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

Microsoft PowerPoint - Chapter_04.pptx

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

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

미시경제학을위한기초수학 조남운 March 20, 함수 1.1 함수란무엇인가 여러분이미시경제학을배우면서미분을배우는이유는계산을통해함수의최대값이나최소값을구해야하기때문이다. 최대값이나최소값을구하기위해서는함수의미분을알

소성해석

2005 7

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

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

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

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

<B1B9BEEE412E687770>

Microsoft PowerPoint - MDA 2008Fall Ch2 Matrix.pptx

Chapter4.hwp

fx-82EX_fx-85EX_fx-350EX

10김묘선

슬라이드 1

기본서(상)해답Ⅰ(001~016)-OK

슬라이드 1

01

KNK_C_05_Pointers_Arrays_structures_summary_v02

A y y y y y # 2#

Microsoft Word - LectureNote.doc

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - chap06-2pointer.ppt

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

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

슬라이드 1

Microsoft PowerPoint - 05-chap03-ArrayAndPointer.ppt

PowerPoint 프레젠테이션

Check 0-9, 9,, - 6, 6, 6, =0.04, (-0.) = , =64 8 8, -8 (-6) =6 (-6) 6, -6 7, , -0. 8, -8 6, '7 ' '

슬라이드 1

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

°ø¾÷-01V36pš


제 3강 역함수의 미분과 로피탈의 정리

16중등빨이수학3-2교부(01~23)

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

컴파일러

fx-570EX_fx991EX

슬라이드 1

Matlab Graphics

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>

Vector Space Vector space : 모든 n 차원컬럼벡터의집합 : {, :, } (, 2), (2, 5), (-2.4, 3), (2.7, -3.77), (,), 이차원공간을모두채움 : {,, :,, } (2,3,4), (3,2,-5), Vector spa

02장.배열과 클래스

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

Ⅰ. Introduction 우리들을 둘러싸고 잇는 생활 환경속에는 무수히 많은 색들이 있습니다. 색은 구매의욕이나 기호, 식욕 등의 감각을 좌우하는 것은 물론 나뭇잎의 변색에서 초목의 건강상태를 알며 물질의 판단에 이르기까지 광범위하고도 큰 역할을 하고 있습니다. 하

% 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

1 1 x + # 0 x - 6 x 0 # x # 2r sin2x- sin x = 4cos x r 3 r 2r 5 r 3r

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.


2

PowerPoint Presentation

PowerPoint 프레젠테이션

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

<4D F736F F F696E74202D2035BBF3C6F2C7FC5FBCF8BCF6B9B0C1FA2E BC8A3C8AF20B8F0B5E55D>

MATLAB for C/C++ Programmers

PowerPoint Presentation

Microsoft PowerPoint - 제05장.ppt [호환 모드]

2014 학년도수학성취도측정시험 (2014 학년도정시모집합격자대상 ) 2014 년 2 월 17 일, 고사시간 90 분 1번부터 11번까지는단답형이고, 12번부터 16번까지는서술형입니다. 답안지는깨끗한글씨로바르게작성하되, 단답형은답만쓰고, 서술형은풀이과정과답을명시하시오.

Microsoft PowerPoint - e pptx

OCW_C언어 기초

7. 인실수 에대하여 log 의지표를 이라할때, 옳 은것을보기에서모두고르면? ( 단, 는 를넘지않는최대의정수이다.) 7 ) ㄱ. log ㄴ. log 의지표는 이다. ㄷ. log log 이면 은 자리의정수 이다. 10. 다음은어느인터넷사이트의지도상단에있는버튼의기능을설명한

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

차례 제 1 장 MATLAB 연습 MATLAB에서사용되는기호들

(001~007)수능기적(적통)부속

Microsoft PowerPoint - chap-05.pptx

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

<4D F736F F D20BACEB7CF2D4D61744C616220B1E2C3CA20B9D720C7C1B7CEB1D7B7A1B9D62E646F63>

Transcription:

오늘강의내용 (2014/01/14) Symbolic Math Toolbox 숫자로주어진변수 값 이아니라변수심볼에대한수식연산 ( 즉, symbolic expression 계산 ) 미분, 극한, 적분, 변환의 symbolic expression 계산 1

Symbolic Expression 김탁은 kmste2@kaist.ac.kr 2

Symbolic Math Toolbox 지금까지우리가해온계산방법 변수에숫자가대입되어있을때, 변수들을사칙연산을통해계산하여수치값을얻음 >> x = 1; >> y = x + x y = 2 y = x + x 의결과로 y = 2*x 라는결과를얻을순없을까? Symbolic Math Toolbox 를이용하면가능하다! Symbolic Expression 을계산하기위한툴박스 3

간단한 Symbolic Expression 연산 Symbolic Expression 연산에사용할심볼을정의해야함 syms 키워드를사용하여 x, y, z 을 symbolic 형의데이터타입으로선언 >> syms x y z Symbolic Expression 을적으면, 해당연산이수행되어계산결과가 symbol 들의표현으로나타남 >> y = x + x + 2*z y = 2*x + 2*z 4

간단한 Symbolic Expression 연산 Symbolic 형의데이터타입으로선언되지않았을때 Symbolic Expression 을계산하려고하면다음과같은에러발생 >> syms x >> y = x + k Undefined function or variable 'k'. 사전에정의한 Symbol 형변수에수치값을대입하면, 해당변수는수치값의데이터타입으로변경됨 >> syms x >> class(x) sym >> x = single(10.3125); >> class(x) single 5

Symbolic Toolbox 의기능 기능 분야 Calculus Linear Algebra Simplification Equation Solving Variable-Precision Arithmetics Transformation Special Functions 미분, 적분, 극한, 급수, 역행렬, 고유치, determinant, canonical forms, 인수분해, 전개, 분수표현, 미분방정식, 다항식해계산, 주어진정밀도에근거하여수식계산 Fourier Transform, Laplace Transform, Z-transform, 응용수학에필요한각종특수함수계산 6

sym 함수 S = sym(a) A 로부터 symbolic number/variable/object 를생성 A 가스칼라또는행렬인경우, 해당값들의 symbolic representation 을리턴 >> x = magic(2); >> xsym = sym(x) xsym = [ 1, 3] [ 4, 2] >> class(xsym) sym 7

sym 함수 x = sym( x ) x 라고이름을가진 symbolic variable 을정의 x = sym( x, real ) x 란이름을가진정수형의 symbolic variable 을정의 >> syms x real 과동일 real 특성없애려면 >> x = sym( x, unreal ) k = sym( k, positive ) 양의실수값을가지는 symbolic variable k 를정의 x = sym( x, clear ) symbolic variable x 에 real, positive 등의속성들을모두제거 A = sym( A, [M N]) 이름이 A 인 M x N 행렬의 symbolic variable 정의 각원소의이름은 Ai_j 가됨. 벡터의경우에는 Ak 가됨 A = sym( A, N) 이름이 A 인 N x N 정사각형행렬의 symbolic variable 정의 각원소의이름은 Ai_j 가됨. 벡터의경우에는 Ak 가됨 >> A = sym('a', [2 3]) A = [ A1_1, A1_2, A1_3] [ A2_1, A2_2, A2_3] >> A = sym('a', [1 3]) A = [ A1, A2, A3] >> A = sym('a', 2) A = [ A1_1, A1_2] [ A2_1, A2_2] 8

sym 함수 A = sym( A_%d_%d, [M N]) 각원소의이름이 A_i_j 가되며, 행렬의이름이 A 인 M x N 행렬의 symbolic variable 정의 벡터의경우각원소의이름이 A_k 가됨 행렬의원소접근은 A(i, j) 로할수있음 S = sym(a, flag) A 가스칼라또는행렬인경우, flag 는 r, f, e, d 가능 r : rational (default) f : floating point e : estimated error d : decimal >> r = sym(1/3) r = 1/3 >> f = sym(1/3, 'f') f = 6004799503160661/18014398509481984 >> d = sym(1/3, 'd') d = 0.33333333333333331482961625624739 >> A = sym('a_%d_%d', [3 2]) A = [ A_1_1, A_1_2] [ A_2_1, A_2_2] [ A_3_1, A_3_2] >> B = sym( B_%d_%d', [3 1]) B = B_1_1 B_2_1 B_3_1 >> A(2,2) A_2_2 >> e = sym(1/3, 'e') e = 1/3 - eps/12 9

행렬연산 두행렬의사칙연산의결과로, 각행렬원소명들간의연산결과가결과로나옴 예제 2 x 3 행렬 A, B, 스칼라값 c, d 가 symbolic variable 로정의되어있다고했을때, 두행렬의합 >> A = sym('a_%d_%d', [2, 3]); >> B = sym('b_%d_%d', [2, 3]); >> syms c d % 스칼라값 >> A = sym(a, real ); >> B = sym(b, real ); >> A+B [ A_1_1 + B_1_1, A_1_2 + B_1_2, A_1_3 + B_1_3] [ A_2_1 + B_2_1, A_2_2 + B_2_2, A_2_3 + B_2_3] 행렬 A, B 의각원소가복소수가아니게설정 두행렬의차 >> A-B [ A_1_1 - B_1_1, A_1_2 - B_1_2, A_1_3 - B_1_3] [ A_2_1 - B_2_1, A_2_2 - B_2_2, A_2_3 - B_2_3] 10

행렬연산 행렬과스칼라연산 ( 곱과합 / 차 ) 스칼라에행렬나눗셈 행렬원소간곱 행렬곱 >> c*a+d [ d + A_1_1*c, d + A_1_2*c, d + A_1_3*c] [ d + A_2_1*c, d + A_2_2*c, d + A_2_3*c] >> c./a [ c/a_1_1, c/a_1_2, c/a_1_3] [ c/a_2_1, c/a_2_2, c/a_2_3] >> A.* B [ A_1_1*B_1_1, A_1_2*B_1_2, A_1_3*B_1_3] [ A_2_1*B_2_1, A_2_2*B_2_2, A_2_3*B_2_3] >> A * B' [ A_1_1*B_1_1 + A_1_2*B_1_2 + A_1_3*B_1_3, A_1_1*B_2_1 + A_1_2*B_2_2 + A_1_3*B_2_3] [ A_2_1*B_1_1 + A_2_2*B_1_2 + A_2_3*B_1_3, A_2_1*B_2_1 + A_2_2*B_2_2 + A_2_3*B_2_3] 11

행렬연산 역행렬 >> A = sym('a_%d_%d', [2 2]); >> inv(a) aa cc bb dd 1 = 1 aaaa bbbb dd cc bb aa [ A_2_2/(A_1_1*A_2_2 - A_1_2*A_2_1), -A_1_2/(A_1_1*A_2_2 - A_1_2*A_2_1)] [ -A_2_1/(A_1_1*A_2_2 - A_1_2*A_2_1), A_1_1/(A_1_1*A_2_2 - A_1_2*A_2_1)] >> pretty(ans) Determinant >> det(a) A_1_1*A_2_2 - A_1_2*A_2_1 12

Complex Value 심볼릭변수의속성을 real로설정한다음, 아래와같이허수 i와조합하여복소수 표현 >> x = sym('x', 'real'); >> class(z) >> y = sym('y', 'real'); >> z = x + i * y sym z = x + y*i >> conj(z) x - y*i 심볼릭변수의속성을 real 로설정하지않으면, 의도한복소수를얻을수없음 >> x = sym('x'); >> y = sym('y'); >> z = x+y*i z = x + y*i >> conj(z) conj(x) - conj(y)*i 13

sym 함수로 Expression 정의하기 y = sym( 5*x^2 3 ) >> y = sym('5*x^2+3') y = 5*x^2 + 3 >> ezplot(y) 14

sym 함수로 Expression 정의하기 등호를포함한 expression 도정의가능 예 ) y = sym( 5*x^2 3 = 2 ) >> y = sym('5*x^2+3=2') y = 5*x^2 + 3 == 2 >> solve(y) (5^(1/2)*i)/5 -(5^(1/2)*i)/5 15

정의한 expression 들의합, 차, 곱 >> z1 = sym('3*(1-x)^2+5*x-(y+1)^2'); >> z2 = sym('y^2-5*x*y+2*(x+y)-5'); >> z1 z1 = 5*x + 3*(x - 1)^2 - (y + 1)^2 >> z2 z2 = 2*x + 2*y - 5*x*y + y^2-5 >> z1+z2 7*x + 2*y + 3*(x - 1)^2 - (y + 1)^2-5*x*y + y^2-5 >> z1-z2 3*x - 2*y + 3*(x - 1)^2 - (y + 1)^2 + 5*x*y - y^2 + 5 >> z1*z2 (5*x + 3*(x - 1)^2 - (y + 1)^2)*(2*x + 2*y - 5*x*y + y^2-5) 16

Symbolic Math 함수들에대한정보얻기 예를들어, diff 라는 symbolic math 함수에대한정보를얻고싶을때 >> help diff 로나오는결과는 symbolic math 함수 diff 에대한정보가아님 help 페이지에서는여러다른 toolbox 에서정의된동일한이름의함수들을친절하게알려줌 예 ) Overloaded methods: sym/diff >> help sym/diff 수행시나오는결과가찾고자하는정보 17

Symbolic Math 로미분계산하기 함수 f(x) 를미분하려면 1. 함수에쓰인변수들을 symbolic 데이터타입으로변경 >> syms x n 2. 앞서정의한심볼변수로함수를정의 >> f = x^n 3. sym/diff 함수를이용해함수 f(x) 를미분 >> df = diff( f ) df = n*x^(n - 1) 또는 >> df = diff( f, x ) df = n*x^(n - 1) 18

Symbolic Math 로미분계산하기 함수 f(x) 를미분하려면 1. 함수에쓰인변수들을 symbolic 데이터타입으로변경 >> syms x n 2. 앞서정의한심볼변수로함수를정의 >> f = x^n x 로미분해야한다는것을어떻게알았을까? symbolic toolbox 는변수명이문자 x 에알파벳순으로가장변수로미분수행 따라서, x 와가장가까운변수 x 로미분계산 3. sym/diff 함수를이용해함수 f(x) 를미분 >> df = diff( f ) df = n*x^(n - 1) 또는 >> df = diff( f, x ) df = n*x^(n - 1) 19

미분계산하기 n 차도함수계산하기 diff( 함수, 변수, n) >> syms x n >> f = x^n; >> df = diff(f, x, 2) df = n*x^(n - 2)*(n - 1) >> df = diff(f, x, 3) 함수 f 의 2 차도함수 >> syms a b t >> g = cos(a*t+b); >> dg1 = diff(g, t) dg1 = -a*sin(b + a*t) >> dg2 = diff(gd1, t) dg2 = 함수 g 의 1 차도함수 함수 g 의 1 차도함수의 1 차도함수 df = n*x^(n - 3)*(n - 1)*(n - 2) 함수 f 의 3 차도함수 -a^2*cos(b + a*t) >> gd = diff(g, 2) gd = 함수 g 의 2 차도함수 -a^2*cos(b + a*t) 20

여러수식을동시에미분하기 A = diff( 수식행렬 ) m x n 크기의행렬에수식이있으면, 각각의수식에대해미분을수행한다음, 입력수식행렬과동일한크기의행렬 A 에미분결과를반환 >> syms a b x >> M = [a*x^2+b x*exp(-a*x); cos(a*x) -sin(a*x+b)] M = [ a*x^2 + b, x*exp(-a*x)] [ cos(a*x), -sin(b + a*x)] >> gm = diff(m, x, 1) gm = [ 2*a*x, exp(-a*x) - a*x*exp(-a*x)] [ -a*sin(a*x), -a*cos(b + a*x)] 21

편미분 n 개의독립변수들로구성된함수의경우, 변수를명시적으로지정하면해당변수로편미분수행 >> syms x y >> f = x^2*exp(-y^2)-y/x; >> fx = diff(f, x) fx = 2*x*exp(-y^2) + y/x^2 >> fy = diff(f, y) fy = >> fxy1 = diff(fx, y) fxy1 = 1/x^2-4*x*y*exp(-y^2) >> fxy2 = diff(fy, x) fxy2 = 1/x^2-4*x*y*exp(-y^2) - 1/x - 2*x^2*y*exp(-y^2) 22

접선벡터 어떤곡선 P(t) = (x(t), y(t), z(t)) 의접선벡터는 v(t) = [x (t0), y (t0), z (t0)] P(t) = (cos(t), sin(t), t/2pi) 일때접선벡터를그려봅시다. syms t x = cos(t); y = sin(t); z = t/(2*pi); m = 0:0.1:4*pi; plot3( subs(x,m), subs(y,m), subs(z,m) ); hold on; dx = diff(x); dy = diff(y); dz = diff(z); for s = linspace(0, 4*pi, 20) p = [subs(x,s), subs(y,s), subs(z,s)]; v = [subs(dx,s), subs(dy,s), subs(dz,s)]; nv = v / norm(v); ar = [p' p'+nv']; plot3(ar(1,:), ar(2,:), ar(3,:), 'color', 'r'); end grid on; axis on; 23

함수의극한 limit( F, x, a ) 함수 F 에서 x a 일때극한값 limit( F ) 함수 F 가 a 0 일때극한값 limit( F, x, a, right ) 함수 F 가 x a 일때의우극한값 limit( F, x, a, left ) 함수 F 가 x a 일때의좌극한값 수식 lim ff(xx) xx 0 lim ff(xx) xx aa MATLAB 수식 limit( f ) 또는 limit( f, x, 0 ) limit( f, x, a ) 또는 limit( f, a) lim xx aa limit( f, x, a, left ) lim xx aa + limit( f, x, a, right ) >> syms x a t h; >> limit(sin(x)/x) 1 >> limit((x-2)/(x^2-4),2) 1/4 >> limit((1+2*t/x)^(3*x),x,inf) exp(6*t) >> limit(1/x,x,0,'right') Inf >> limit(1/x,x,0,'left') -Inf >> limit((sin(x+h)-sin(x))/h,h,0) cos(x) >> v = [(1 + a/x)^x, exp(-x)]; >> limit(v,x,inf,'left') [ exp(a), 0] sin xx lim xx 0 xx xx 2 lim xx 2 xx 2 4 lim xx 1 lim xx 0 + xx 1 lim xx 0 xx lim xx 0 lim xx 1 + 2tt xx 3xx sin xx + h sin xx h 1 + aa xx lim xx ee xx xx 24

함수의극한 Symbolic Math Toolbox 와 MATLAB 수치계산을통한극한값비교 ff xx = lim nn nn 2 1 nn 1 % MATLAB 수치계산 >> n = realmax n = 1.7977e+308 >> x = n*(2^(1/n)-1) x = % Symbolic Math Toolbox >> syms n >> f = n*(2^(1/n)-1); >> limit(f, inf) log(2) 0 25

Quiz 다음수식들의극한값을 limit 함수를이용하여계산해봅시다. ff xx = lim nn 1 + xx nn nn ff xx = 1 lim xx 0 xx 4xx ff xx = lim 2 3xx+1 xx 3xx 2 +2xx 5 ee ff xx = lim xx 1 xx 0 sin xx 26

Quiz 미분은다음과같이극한으로정의됩니다. ff xx+h ff(xx) ff xx = lim h 0 h ff xx = cccccc xx 함수의미분값이 diff 함수를써서얻었을때와, 위의극한값을계산해서얻어낸결과가동일한지비교해봅시다. 27

적분 int( F ) 함수 F 를부정적분 int( F, v ) 함수 F 를변수 v 에대해부정적분 int( S, a, b ) 함수 F 를 [a, b] 구간에서부정적분 int( S, v, a, b ) 함수 F 를변수 v 에대해 [a, b] 구간에서부정적분 >> syms x x1 alpha u t; >> int(1/(1+x^2)) atan(x) >> int(x1*log(1+x1),0,1) 1/4 >> int(4*x*t,x,2,sin(t)) -2*t*(cos(t)^2 + 3) 1 1 + xx 2 ddxx 1 xx 1 log 1 + xx 1 ddxx 1 0 sin tt 4xxxx ddxx 2 수식 ff(xx) ddxx MATLAB 수식 int( f ) int( f, x ) ff(tt) ddtt int( f, t ) bb ff(xx) ddxx int( f, x, a, b ) aa 적분상수 C 는출력하지않음!! >> A = [cos(x*t),sin(x*t);-sin(x*t),cos(x*t)]; >> int(a,t) [ sin(t*x)/x, -cos(t*x)/x] [ cos(t*x)/x, sin(t*x)/x] >> int([exp(t),exp(alpha*t)]) [ exp(t), exp(alpha*t)/alpha] cos xxxx ddtt sin xxxx ddtt ee tt ddtt sin xxxx ddtt cos xxxx ddtt ee ααtt ddtt 28

Quiz 다음수식들의적분값을 int 함수를이용하여계산해봅시다. ff xx = ee (kkkk)2, xx ff xx = xx sin xx ff xx = xx 3 2xx 2 + xx 1, 0 xx 2 ff xx = tan 1 xx, 0 xx 1 xx 3 2 ff xx = xx 3 ee xx sin xx, 0 xx ππ 29

수치적분 정적분 aa bb ff xx dddd 의근사를계산하는적분방법 trapz 함수 trapezoidal method 사용 quad 함수 Simpson quadrature rule 사용 quadl 함수 Lobatto quadrature rule 사용 30

수치적분 >> syms x real >> int( x*log(x), x, 2, 4 ) 14*log(2) 3 >> quad( @(x) x.*log(x), 2, 4 ) 2 4 xx log xx ddxx 6.7041 0 1 ee xx 2 log 1 + xx 2 ddxx >> syms x real >> int( exp(-x^2)*log(1+x^2), x, 0, 1 ) Warning: Explicit integral could not be found. int(exp(-x^2)*log(x^2 + 1), x == 0..1) >> quadl( @(x) exp(-x.^2).*log(1+x.^2), 0, 1 ) 0.1539 >> syms x real >> int( sin(x)^2/sqrt(1+cos(x)^2), x, 0, 2*pi ) Warning: Explicit integral could not be found. 0 2ππ ssssss 2 xx 1+cccccc 2 (xx) ddxx int(sin(x)^2/(cos(x)^2 + 1)^(1/2), x == 0..2*pi) >> quadl( @(x) sin(x).^2./sqrt(1+cos(x).^2), 0, 2*pi ) 2.8478 31

수치적분의응용 프레넬적분 두함수 x(t), y(t) 가변수 t 에종속적 tt xx tt = cos uu 2 dddd 0 tt yy tt = sin uu 2 dddd 0 clear all; n = 1000; x = zeros(1, n); y = zeros(1, n); t = linspace(0, 4*pi, n+1); for i = 1:n x(i) = quadl(@(x) cos(x.^2), t(i), t(i+1), 1e-3); y(i) = quadl(@(x) sin(x.^2), t(i), t(i+1), 1e-3); end x = cumsum(x); y = cumsum(y); plot([-x(end:-1:1) 0 x], [-y(end:-1:1) 0 y]) axis equal; 32

다중적분 다중적분은아래와같이반복적분으로계산할수있음 ff xx, yy dddd = cc dd aa bb ff xx, yy dddddddd = aa bb cc dd ff xx, yy dddddddd 1 2 0 3 (xx 2 + xx + yy)dddddddd >> syms x y real >> f = x^3 + x + y; >> int(int(f,y,0,3),x,1,2) 81/4 >> syms x y real >> f = y^2*exp(x)+x*cos(y); >> int(int(f,x,0,1), y,4,6) 4 6 0 1 (yy 2 ee xx + xx cos yy)dddddddd (152*exp(1))/3 - sin(4)/2 + sin(6)/2-152/3 >> double(ans) 87.2983 33

다중적분의수치적분 numerical method 로다중적분의근사치를계산 dblquad, triplequad 이중적분, 삼중적분의수치적분을위한함수 4 6 0 1 (yy 2 ee xx + xx cos yy)dddddddd >> fxy = @(x, y) (y^2*exp(x) + x*cos(y)); >> dblquad(fxy, 0, 1, 4, 6) 87.2983 0 1 0 1 0 1 (yy + zz) sin ππ xx 2 + yy 2 >> syms x y z real >> f = (y+z)*sin(pi*(x^2+y^2)); >> int(int(int(f,x,0,1),y,0,1),z,0,1) dddddddddddd >> f = @(x,y,z) (y+z).*sin(pi*(x.^2+y.^2)); >> triplequad(f,0,1,0,1,0,1) (fresnelc(2^(1/2))*(2^(1/2) + pi*fresnels(2^(1/2))))/(2*pi) >> double(ans) 0.3078 0.3078 34

Symbolic 다중적분 정적분시매개변수를변수로주는경우 예 : aa bb cc dd (xx 2 + xx + yy)dddddddd >> syms x y a b c d real >> f = x^3 + x + y; >> int(int(f,y,c,d),x,a,b) ((a - b)*(c - d)*(a^3 + a^2*b + a*b^2 + 2*a + b^3 + 2*b + 2*c + 2*d))/4 다른좌표계에대한적분 eg) 실린더의부피계산 0 h 0 2ππ 0 aa rrddrrddθθdddd >> syms r theta z h a real >> V = int(int(int(r,r,0,a),theta,0,2*pi),z,0,h) V = pi*a^2*h 35

다항식표현바꾸기 다항식인수분해 (factor 함수 ) >> syms x y >> f = x^3-6*x^2 + 11*x - 6; >> factor(f) (x - 3)*(x - 1)*(x - 2) 다항식전개 (expand 함수 ) >> expand(ans) x^3-6*x^2 + 11*x 6 >> expand(cos(x+y)) cos(x)*cos(y) - sin(x)*sin(y) 36

다항식표현바꾸기 다항식수식단순화 (simplify 함수 ) >> syms x c alpha beta >> simplify(sin(x)^2 + cos(x)^2) 1 >> simplify(exp(c*log(sqrt(alpha+beta)))) (alpha + beta)^(c/2) 37

다항식표현바꾸기 다항식수식에서공통항모으기 (collect 함수 ) >> syms x y >> collect(x^2*y + y*x - x^2-2*x) (y - 1)*x^2 + (y - 2)*x collect(s, v) : 함수 S 를 v 의 polynomial 로해서공통항모으기 >> syms x >> f = -1/4*x*exp(-2*x)+3/16*exp(-2*x) f = (3*exp(-2*x))/16 - (x*exp(-2*x))/4 >> collect(f, exp(-2*x)) (3/16 - x/4)*exp(-2*x) 38

다항식표현바꾸기 함수를분수식으로표현 (pretty 함수 ) >> syms x y >> f = 1/(x-1)*sin(x) f = sin(x)/(x - 1) >> pretty(f) sin(x) ------ x - 1 >> syms x >> int(sqrt(tan(x))) (2^(1/2)*(log(2^(1/2)*tan(x)^(1/2) - tan(x) - 1) - log(tan(x) + 2^(1/2)*tan(x)^(1/2) + 1)))/4 + (2^(1/2)*(atan(2^(1/2)*tan(x)^(1/2) - 1) + atan(2^(1/2)*tan(x)^(1/2) + 1)))/2 >> pretty(ans) 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 2 (log(2 tan(x) - tan(x) - 1) - log(tan(x) + 2 tan(x) + 1)) 2 (atan(2 tan(x) - 1) + atan(2 tan(x) + 1)) -------------------------------------------------------------------------- + ---------------------------------------------------------- 4 2 39

심볼에값대입하기 subs 함수 symbolic substitution 을수행 subs(s) 심볼릭표현 S 의모든변수들을 MATLAB workspace 상에정의된변수들의값으로대체 subs(s, NEW) 심볼릭표현 S 의자유변수 (free variable) 이 NEW 로대체 subs(s, OLD, NEW) 심볼릭표현 S 에서심볼 OLD 를심볼 NEW 로대체 OLD 와 NEW 는동일한사이즈의벡터또는셀배열로, OLD 의각원소가 NEW 의각원소로 1:1 로대체됨 40

심볼에값대입하기 subs( S ) 아래와같이심볼릭표현이정의되었다고할때, >> syms a t y C1 >> y = exp(-a*t)*c1 y = C1*exp(-a*t) a, C1에값을대입 >> a = 980; C1= 3; >> y y = C1*exp(-a*t) workspace 상에저장된값 a, C1을심볼릭표현에반영 >> y = subs(y) y = 3*exp(-980*t) 41

심볼에값대입하기 subs( S, NEW ) >> syms a b c x t >> f = a*sin(b*x)*exp(-a*x^c+t) f = a*exp(t - a*x^c)*sin(b*x) >> syms h >> subs(f, h) a*exp(t - a*h^c)*sin(b*h) subs( S, OLD, NEW ) >> syms a b omega >> f = sin(t) f = sin(t) >> f = subs(f, t, omega*t) f = sin(omega*t) 42

심볼에값여러개동시에대입하기 배열 substitution >> syms a b alpha >> subs(cos(a)+sin(b),{a,b},[alpha,2]) sin(2) + cos(alpha) 행렬값을 substitution >> syms a t >> subs(exp(a*t), a,-magic(2)) [ exp(-t), exp(-3*t)] [ exp(-4*t), exp(-2*t)] 스칼라 substitution >> syms x y >> subs(x*y,{x,y},{[0 1;-1 0],[1-1;-2 1]}) [ 0, -1] [ 2, 0] 43

Symbolic Summation 급수의합을계산 symsum( f ) 기본변수 (default variable) 에대해 f(0) + f(1) + + f(n-1) 를계산 symsum( f, x ) 심볼리변수 x 에대해 f(0) + f(1) + + f(n-1) 를계산 symsum( f, a, b ) 기본변수 (default variable) 에대해 f(a) + f(a+1) + + f(b) 를계산 symsum( f, x, a, b ) 심볼릭변수 x 에대해 f(a) + f(a+1) + + f(b) 를계산 44

Symbolic Summation 급수의합계산예제 >> syms k n >> symsum(k) k^2/2 - k/2 >> symsum(k,0,n-1) (n*(n - 1))/2 >> symsum(k,0,n) (n*(n + 1))/2 >> simplify(symsum(k^2,0,n)) (n*(2*n + 1)*(n + 1))/6 >> symsum(k^2,0,10) 385 >> symsum(k^2,11,10) 0 >> symsum(1/k^2) -psi(1, k) >> symsum(1/k^2,1,inf) pi^2/6 45

Symbolic Production 급수의곱을계산 >> syms i k n >> symprod(k) factorial(k) >> symprod(k,1,n) factorial(n) >> symprod('1/k*i',i,1,n) (k*factorial(n))/k^(n + 1) >> symprod(1/k*i,i,1,n) (k*factorial(n))/k^(n + 1) >> symprod(i^2/(i^2-1), i, 2, Inf) 2 46

Quiz 11 + xx + xx 22 + 의합을계산해봅시다. 47