ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 수치해석하나.3 Matlab 입문하기(3) 확인해볼까요
    카테고리 없음 2020. 2. 14. 19:25

    안녕? 겸손한 J야.이전 문에서는 mesh grid 함수를 이용하여 행렬을 만들고, mesh 함수를 이용하여 그 행렬을 변수로 하는 그래프를 그렸습니다.이번에는 연산을 다루려고 합니다.


    1.Matrix Multiplication


    >


    B를 정의할 때[-2 6-3 8 7]';그'를 들면 열벡터가 됩니다.A*B의 행렬 연산이 정의되도록 차원을 맞춰준 것입니다.그럼 한 번 계산을 해 볼까요?하나(-2)+2*6+3(-3)+4*8+7(5=68. 행렬 계산을 정확히 하는군요. ​ 2.Element by Element Multiplication다음은 행렬 연산 이이에키고, 직접 행렬의 component를 걸고 싶습니다.


    이런 식으로요. 그런데


    >


    이렇게 에러가 나게 됩니다. 음, 어쩌죠 ​ 내가 아까 문에서 meshgrid함수를 이용하고 행렬 R와 H를 정의하고, 원뿔의 부피를 구하기 위해서 V=(하나 π/3)(r^2h)을 정의하려다 실패한 거예요.R, H행렬의 컴포넌트에서 함수를 만들려 하자, 연산의 전에 "반"을 했어야죠.


    >


    바로 이렇게요.이번에도 똑같이 해주면 됩니다. 그럼.


    >


    행렬이 발발했음을 알 수 있습니다.마찬가지로 행렬요소의 과이어야 할 산, 곱셈, 그리고 지수연산자/*^에 각각 '.'를 붙이면 뽑습니다. 하지만+토-는예외라고합니다


    푸르이:


    >


    저는 실수도 했지만 그냥 둘게요.www.


    >


    t의 간격은 아무렇게나 나쁘지 않게 지정해도 되지만, 예쁜 그래프를 위해서는 간격을 좁히는 것이 나쁘지 않아 보입니다.그래서... 솔직히 연산자 입력할 때 앞에 치는 거 진짜 헷갈려요.그 강은... subplot 예제가 있는데 이건 틀도록 하겠습니다.(그 대무TMI를 많이 발설하고 계신거 같은데, 이게 저도 아내의 소리를 배우면서 글을 쓸까..스토리일까..하는거라 판단이 좀 서질 않네요)↓)


    >


    뭐가 복잡해 보이는게 회로가론 예제에서 본 것 같은 내용이네요.스토리는 많지만 이번에는 Real part와 imaginary part를 나눠보라는 생각인 것 같아요.플루이(a)


    >


    괄호 맞추기가 어려워서 실수를 했네요. 코딩하면 자주 발생하는 1입니다.real함수를 이용하여 real_part변수를 지정하였습니다.


    >


    결과 그래프이다. x, y축명명은 생략했다.(b)


    >


    >


    이번에는 imag함수를 이용하여 변수를 지정하고 그래프를 그렸습니다.(c) 이쪽이 좀 뭔가 있네요.


    >


    >


    위에서도썼는데polar그래프를그리기위해서는round함수를이용해서변수를새로지정하는것이좋습니다,라고교재로과인하고있습니다. 저는 충실하게 따랐을 뿐입니다.그래서 처음에 mag=abs(z)에서 mag변수를 z의 절대값이라고 정의했는데, 이것을 쓴 곳은 없는 것 같네요.그 이건은 angle 변수를 복소수의 뿔로 정의하고, polar(angle, absolute value) 함수로 polar coordinate graph를 그릴 수 있었습니다.(아직 익숙하지 않아서 어정쩡한 중)


    MATLAB는 2종류의 파일을 인식하고 있는데--모두"m-file"로 불리는데 왜냐하면...m확장자를 사용 때문이죠. Script file은 2개 이상의 함수로 구성되고 있지만 최근까지 배운 많은 함수들이 Script 파일을 구성할 수 있다고 합니다.Function file은 사용자가 정의하는 함수입니다. 이걸 왜 하과의 반복 작업을 할 때 귀찮아서 그래요.이것을 만들 때는 반드시 function name과 file name이 일치해야 합니다. 그럼 예제를 보면서 한번 배워보겠습니다.


    >


    풀이흔들린다.가장최근까지분명x구간을정해줄때유한구간에서과인누워있었는데이걸로뿌리를구할수있어?어쨌든교재를그걸로해보겠습니다.​


    >


    >


    일단 요기를 했습니다만, 요기부터가 아주 지긋지긋하게 느껴지고 있습니다.​


    >


    이곳에서 New-Script를 눌러서


    >


    이렇게 입력하고 준 후에 저장을 하지만 저장할 때 funczero0하나.m으로 보존하다.그리고 다시 바로 명령창을 엽니다.(Command window)


    >


    fplot 명령을 이용하여 그래프를 그리는데 fplot 명령어는 fplot('fnc name', lims)에서 변수를 받고 이때 lims는 [x_minx_max]의 행렬(행 벡터형)형 변수를 말합니다.그럼 sound, 뿌리는 대체 어떻게 찾을까요? fzero라는 함수를 이용하면 되는데, fzero('fnc name', x)는 x 근처에서의 함수 f의 뿌리를 찾으려는 시도를 합니다.있으면 있다고, 없으면 없다고 하는데요.​ 그래프에서 보면 뿌리가 x=-0.2, x=0.3부근에 있는 것 같으니 먹어 봅니다.


    >


    위와 같이 x, x2변수를 지정하고 나쁘지 않아면 옆으로 workspace창에서 값을 확인할 수 있습니다.이번에는 fprintf 함수로 출력했네요. C언어를 배운지 너무 오래돼서 printf를 잊어버렸어요.ᅲᅲdouble, float 자료형이 어렴풋이 기억이 안 나네요. Script functiony를 이용해서 그래프를 그런 것 같아서 그 근처의 뿌리를 찾아서 굉장히 매운 함수를 썼는데 꽤 재미있네요.​


    *추가 여제와 모르는 진행 불가 사항의 추가 여제은 무엇이냐면, diff함수를 이용해서 극대 값과 극소 값을 구하는 문제입니다. ​ syms x ymin zmin;ymin=하나요 x-0. 하나)^2+0.0개)·하나/(x-하나.2)^2+0.04)하나 0;...zmin=diff(ymin)상의 코드를 교재로 입력하는 대로 입력했는데도 왜요?메토우레프이 20개 4a버전이라 그런지, 교재가 좀 타이핑이 어정쩡한 곳도 있었던 거 같은데,( 그래도 무한의 신뢰)​ 그 문제도 하고 보고 싶어 한시간을 코딩하고 봤는데 안 되네요 ㅠ 원인을 아시는 분은 대답해 주시면 감사하겠습니다.


    우선 이렇게 첫 단원이 끝났네요. ​ Introduction이 50쪽라니, 앞으로 더욱 어려워질텐데 약간 긴장되네요.그래도 재미있었어요.오거의 매일은 여기까지 포스팅합니다.^^


    Reference:"Numerical anlaysis using MATLAB and Excel", Steven.T.Karris(2007)


    댓글

Designed by Tistory.