第5回 MATLAB入門

実施日:1996年7月11日




目次
  1. MATLABの起動
  2. 演算と基本関数と数量
  3. 演習1:連立方程式
  4. 演習2:FFT
  5. 演習3:数値積分と微分  

  1. MATLABの起動
                             ⇒
  2. 演算と基本関数と数量
    • 演算
      演算子変数変数
      加算++
      減算--
      乗算.**
      除算.//
      べき乗.^^
      共役・転置.''
         
    • 関数
        〇基本数学関数
        〇特殊関数
        〇基本統計関数
        〇行列関数
          inv,det,cond,eig,norm,...
        〇図形処理関数
          axis,line,surface,patch,subplot,...
        〇コマンド
          help ,save, load,print,!,look for,......
    • 数量
          pi,inf,eps,eye(単位行列),ones(全要素が1の行列),zeros( ”が0の行列)
                             ⇒
  3. *** 演習1:連立方程式 ***
    1   |1 2|
      A=|3 4|を入力してみる.
      ★実行例:
      ★    % A=[1 2;3 4]
      ★    % A=[1 2;3 4] ;
      ★ 最後にセミコロンがあるかないかでどう違いましたか?

    2 復素行列 |1+5i 2+6i|
         A=|3+7i 4+8i| の入力
      ★実行例:
      ★    % WA= [1 2;3 4] ;WB=[5 6;7 8]
      ★    % A=WA+i*WB
      ★ 復素行列も扱えます。

    3 Ax=bを求めてみよう.
       ただし, | 1|
          b=|−2|とする.
      ★実行例:
      ★    % b=[1 -2]'
      ★    % x=A¥b

    4 xx=inv(A)*bとしてみるとどうなるでしょうか?やってみましょう。

    5 桁数をあげる.
      ★実行例:
      ★    % format long
      ★    % x
      ★    % xx

    6 Aの固有値,固有ベクトルを求める.
      ★実行例:
      ★    % eig(A)
      ★    % [X,D]=eig(A)

     参考  [X,D]=eig(A,B).........一般固有値,固有ベクトル
                             ⇒
  4. *** 演習2:FFT ***

     太陽の黒点の数が300年にわたってデータファイルsunspot.datに作られている.
     それを,読んできてフーリエ変換し,太陽活動の周期を求めてみよう.

    1 sunspot.datを自分のカレントデレクトリーにcopyしてください.
      まず内容をながめてみる.
      ★実行例:
      ★    % !cp /tmp/matlab/sunspot.dat sunspot.dat
      ★    % !more sunspot.dat

    2 そのsunspot.datをプロットしてみましょう.
      ★実行例:
      ★    % load sunspot.dat     .....データの読み込み
      ★    % year=sunspot(:,1);
      ★    % wolf=sunspot(:,2);
      ★    % plot(year,wolf);     .....X軸にyear,Y軸にwolfをとる
      ★    % title('Sunspot Data')   .....タイトルをつける

    3 最初の50年分を表示する.
      ★実行例:
      ★    % plot(year(1:50),wolf(1:50))
      ★    % plot(year(1:50),wolf(1:50),'go')
      ★    % plot(year(1:50),wolf(1:50), year(1:50),wolf(1:50),'co')

    4 フーリエ変換
      ★実行例:
      ★    % Y=fft(wolf);
      ★    % Y          .....fftした結果を見る.
      ★    % Y(1:2)
      ★    % Y(1)=[ ];
          .....1行目のデータを取り除く
      ★    % Y(1)          .....Y(1)が取り除かれていることを確認
      ★    % plot(Y,'co')
      ★    % title('Fourier Coefficients')
      ★    % xlabel('Real Axis')
      ★    % ylabel('Imaginary Axis')

    5 周期を求め表示する.
      ★実行例:
      ★    % n=length(Y)
      ★    % power=abs(Y(1:n/2)).^2;
      ★    % nyquist=1/2
      ★    % freq=(1:n/2)/(n/2)*nyquist;
      ★    % period=1./freq;
      ★    % plot(period,power);
      ★    % ylabel('Power');
      ★    % xlabel('Period(year /Cycle)');

    6 peakになる点の座標を求める.
      ★実行例:
      ★    % index=find(power==max(power))
      ★    % period(index)
                             ⇒
  5. *** 演習3:数値積分と微分 ***
    1 MATLABを終了

    2 エディターでhumps.mファイルをつくります.
      ★実行例:
      ★    % more humps.m
      ★     function y=humps(x)
      ★     y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;

    3 MATLABに入りの範囲でこの関数をプロットしてみましょう.

      ★実行例:
      ★    % x=-1:0.01:2;
      ★    % plot(x,humps(x))

    4 humps(x)=0の0近傍と1近傍の解を求めましょう.

      ★実行例:
      ★    % r1=fzero('humps',0)
      ★    % r2=fzero('humps',1)

    5 3.で描いたグラフに0近傍と1近傍の解を書き込んでみましょう.

      ★実行例:
      ★    % fplot('humps',[-1 2])
      ★    % grid
      ★    % hold on;plot(r1,0,'go');
      ★    %     plot(r2,0,'bo'); hold off

    6 r1<=x<=r2, humps(x)<=0で囲まれた部分の面積を求めてみましょう.

      つまり,humps(x)をr1からr2まで積分すればよい.
      まず、その部分を塗りつぶしてみましょう。

      ★実行例:
      ★    % hold on;
      ★    % patch([r1:0.02:r2],[humps(r1:0.02:r2)],'r'); hold off

    7 シンプソン則で積分してみましょう.

      ★実行例:
      ★    % S=quad('humps',r1,r2)

    8 今度は数値微分をしてみましょう.
      ★実行例:
      ★    % x=0:0.01:1;y=humps(x);
      ★    % z=diff(y)./diff(x);
      ★    % x(101)=[ ];y(101)=[ ];
      ★    % plot(x,y,'b',x,z,'g')
                             ⇒

講習会内容一覧に戻る