Microsoft PowerPoint - MATLAB.TUS.ppt

Similar documents
matlab_basic.pptx

Microsoft Word - scilab_intro.doc

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft Word - 18環設演付録0508.doc

コマンド入力による操作1(ロード、プロット、画像ファイル出力等)

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

cp-7. 配列

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

Microsoft Word - VBA基礎(3).docx

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

sinfI2005_VBA.doc

Microsoft PowerPoint - MATLABの使い方.ppt

JavaプログラミングⅠ

「統 計 数 学 3」

Si 知識情報処理

プログラミング実習I

memo

PowerPoint プレゼンテーション

Scilab 勉強会 ( 第 3 回 ) 高橋一馬, 十文字俊裕, 柏倉守 平成 17 年 11 月 15 日 関数 ファイルはエディタを用いて作成する.Scilab にはエディタ SciPad が附属している.SciPad では なく他のエディタを利用してもよい. 作成した関数は Scilab に

行列、ベクトル

PowerPoint Presentation

Microsoft PowerPoint - program.ppt [互換モード]

PowerPoint Presentation

Microsoft PowerPoint - CproNt02.ppt [互換モード]

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編

講習No.1

gengo1-11

2010年度 筑波大・理系数学

PowerPoint プレゼンテーション

Matlab講習会

演習2

Microsoft PowerPoint - 講義資料-mlib

プログラミング基礎

Microsoft Word - gnuplot

Microsoft Word - 補論3.2

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

C#の基本2 ~プログラムの制御構造~

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

PowerPoint プレゼンテーション

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

複素数平面への誘い

プログラミングI (手続き)

Javaによるアルゴリズムとデータ構造

情報処理概論(第二日目)

Microsoft PowerPoint 電子情報理工学特論.pptx

データ構造

kiso2-06.key

PowerPoint プレゼンテーション

Transcription:

計算数学 MATLAB 入門 MATLAB は MATrix LABoratory の略で 数値 数式処理やグラフィックスが手軽にできるソフトウェアである 同様な機能でフリーなものに Scila, Octave などがある 理科大システムでは MATLAB, Scila が使える MATLAB の使用 次正方行列 A と 次元ベクトル x の積 C 言語だと ( 配列 A[][], x[], y[] の宣言,i, j の宣言と y の初期化の後 ) for(i=; i<; i++){ for(j=; j<; j++){ y[i]+=a[i][j]*x[j]; } } MATLAB では y = A*x; 理科大システムで MATLAB を実行するには. 数値, 変数, 配列 数値 整数と実数を区別しない 型の指定が不要である データはすべて配列として扱われる 変数 変数の名前は英字で始まる 大文字と小文字は区別される MATLAB 関数の名前とは異なる必要がある 4 >> a=; =; c=a+ c = : リターンキー 変数 a に, 変数 に を代入した後 c=a+ を計算している 式の終わりがセミコロンの場合 結果は出力されない 継続行 : 行末に つのピリオドを書くと継続できる : >> a=; a=; a=; a4=4;... a5=5; a=; a7=7; a8=8;... a+a+a+a4+a5+a+a7+a8 >> a=, =, c=a+ a = = c = >> a=; =; c=a+; >> 代入を行っていない場合 結果は変数 as に保持される 代入をせず 結果だけを表示させたい場合は disp を使う : >> a=; a=; a=; a4=4;... a5=5; a=; a7=7; a8=8;... disp(a+a+a+a4+a5+a+a7+a8) 5

7 特別な変数 変数名 意味 π pi 円周率 If, if 無限大 i, j 虚数単位 eps マシンイプシロン (+ε> となる最小の値 ) >> eps 例.44495e- eye 単位行列 oes 全要素が の行列 zeros 全要素が の行列 NaN, a 数値でない (Not a Numer) realmi 表現できる正の最小浮動小数点数 realmax 表現できる正の最大浮動小数点数 注意 : 別の値を代入すると値が変わってしまう! clear 命令で初期状態に戻せる : >> pi.459558979 >> pi= pi = >> *pi >> clear pi >> *pi.88577959 8 数値の出力の変更 配列 >> x=/. >> format short e; x.e- >> format log; x. >> format log e; x.e- >> format hex; x fd5555555555555 short ( 標準 ) 5 桁の固定小数点表示 short e 5 桁の浮動小数点表示 log 5 桁の固定小数点表示 log e 5 桁の浮動小数点表示 hex 進表示 short g や log g もある ( 固定小数点か浮動小数点か自動表示 ) 表示形式は 変更するまで有効である 標準に戻すには format と入力 9 ベクトル 次元配列行列 次元配列 配列の添え字には から始まる >> x=[ ] >> x' >> y=[;;] y = 行ベクトル 行ベクトルの右肩に ( 転置 ) で列ベクトルを表す 列ベクトルセミコロン ; は行の区切りを表す ベクトルの生成方法 初期値, 増分, 最終値をコロンで区切って指定 >> x=[::7] 5 7 >> x=[:4] 4 から 7 まで 刻みで生成 増分が の時は省略可 関数 lispace を使って, 初期値, 最終値, 要素の数を指定 >> y=lispace(,,5) y =.5.5 から まで等間隔で 5 要素生成 >> A=[ ; 4 5 ] A = 4 5 >> A' 4 5 >> a=a(:) a = 4 5 行 列の行列 右肩に をつけると転置行列 次元配列を行優先で 次元配列に変換

配列要素の指定 次元配列 x の第 k 要素は x(k) 次元配列 A の i 行 j 列要素は A(i,j) >> x=[ ] >> x() >> A=[ ;4 5 ] A = 4 5 >> A(,) 5. 便利なコマンドとコントロールキー help コマンド >> help commad とすると,commad の使い方を調べることができる >> help format FORMAT 出力書式の設定 FORMAT は MATLAB での計算方法に影響を与えません たとえば 浮動小数点 ( 単精度および倍精度 ) 変数の計算は 変数の表示方法に依らず 適切な浮動小数点精度 ( 単精度または倍精度 ) で行われます FORMATは つぎに示すような 異なる表示書式間の切り替えを行います MATLABは すべての計算を倍精度で実行します FORMATは つぎに示すような 異なる表示書式間の切り替えを行います FORMAT デフォルト SHORTと同じです FORMAT SHORT 5 桁のスケーリングされた固定小数点 FORMAT LONG 5 桁のスケーリングされた固定小数点 FORMAT SHORT E 5 桁の浮動小数点 FORMAT LONG E 5 桁の浮動小数点 4 lookfor コマンド コマンド名が分からないときに, キーワードをもとに探すことができる 例えば, 最大値に関して調べたいときは lookfor max と入力する 矢印キーやコントロールキー MATLAB では入力したコマンドの履歴がメモリ中に残っている >> lookfor max svl.m: %fuctio [sv,msv,e] = svl(a,sigma,,kmax); svlsym.m: %fuctio [sv,msv,e] = svlsym(a,sigma,,kmax); svs.m: %fuctio [sv,msv,e] = svs(a,,kmax); svssym.m: %fuctio [sv,msv,e] = svssym(a,,kmax); RANDOM Radom umers i [mi,max], default [-,+] RANDOMC Complex radom umers i M+i*M with M=[mi,max], default [-,+] LONGPRECISION Sets/gets maximum precisio for log umer arithmetic NAMELENGTHMAX MATLAB の関数または変数名の最大長 BITMAX 最大の浮動小数点整数 NAMELENGTHMAX MATLAB 名の最大の長さ INTMAX Largest positive iteger value. REALMAX 正の最大浮動小数点数 MAX 最大要素 NZMAX 行列内の非ゼロ要素に対して割り当てられるストレージの総量 Delete Ctrl-A Ctrl-E Ctrl-U Ctrl-K Ctrl-D 直前の行を呼び出す直後の行を呼び出す一文字右に移動一文字左に移動左の一文字を削除行の先頭に移動行の終わりに移動現在の行を削除行の終わりまでを削除カーソルが示す文字を削除 5. 演算, 数学関数 演算 式 a+ a a a/ a MATLAB での表記 a + a - a * a / a^ 比較演算式 a< a a> a a= a ad or 真のときは, 偽のときは を返す MATLABでの表記 a < a <= a > a >= a == a ~= & 7 8

9 要素ごとの演算 例えば, >> A*B とすると, ( a ij ij ) A=, B= 4 のとき, 5 4 AB = が計算される のように, 行列 A の各要素に行列 B の各要素をかけた行列 が欲しい場合は, * の代わりに.* とする >> A.* B 4 4 ベクトルの場合 a= ( a, L, a ), = (, L, ) のとき 式 MATLABでの表記 ( a +, L, a + ) ( a, L, a ) ( a /, L, a / ) ( a, L, a ) a + a.* a./ a.^ 数学関数 MATLAB では数学関数の活用が重要になる 関数の使い方は help コマンドで確認すること 基本数学関数 as sqrt log exp real imag agle coj 絶対値平方根自然対数指数関数複素変数の実部複素変数の虚部複素変数の偏角複素変数の複素共役 基本統計関数 sum mea cov corrcoef sort prod cumsum cumprod 三角関数 si cos ta asi acos ata sih cosh 要素の和平均値共分散相関係数昇順または降順にソート要素の積累積和累積積行列関数 si( x) iv cos( x) det ta( x) si lu ( x) chol cos ( x) orm ta ( x) cod sih( x) eig cosh( x) その他, 特殊関数や数式処理など多数 逆行列行列式 LU 分解コレスキー分解 ( 各種 ) ノルム条件数固有値.4 スクリプトと関数 file-ame.m (M- ファイルと呼ぶ ) には, スクリプトファイル 関数ファイルの 種類がある Curret Directory を z: に設定すること スクリプトファイル 一連のコマンドを並べたもの ファイル名を打ち込んで実行 関数ファイル 自分で定義した関数を記述したもの ファイル名が関数の名前となる カレントディレクトリ * にファイルがあれば何もしなくても関数として利用できる * 理科大の環境では z: ドライブを使うこと

9 8 7 5 4 4 8 4 5 スクリプトの例 関数の定義 % M-file to calculate Fioacci umers f=[ ]; i=; while f(i)+f(i+)< f(i+)=f(i)+f(i+); i=i+; disp(f) plot(f) fio.m M-ファイルの先頭に次のように記述する : fuctio [ 出力変数のリスト ] = 関数名 ( 入力変数のリスト ) 関数の例 % Fuctio to work out the sum ad remaider % of two real umers fuctio [wa,sa]=cal(a,) wa=a+; sa=a-; cal.m >> fio Colums through 5 8 4 55 89 Colums through 44 77 987 実行例 >> x=; y=; >> [c,d]=cal(x,y) c = d = - 関数のコメント M- ファイルの先頭にある % 文も,help コマンドで表示される 例えば,flow.m というファイルが M- ファイルの作成 : 理科大の環境では z: ドライブに保存すること [ ファイル ] [ 新規作成 ] [M- ファイル ] % 近似解をプロットするプログラム fuctio [f] = flow(k); % 以下はコメント のような場合, 次のように表示される : >> help flow 近似解をプロットするプログラム 重要 : プログラミングの際はこまめにコメントを書く M- ファイルの先頭には中身が分かるようなコメントを書いておくこと! 7 8.5 条件, 繰り返し if 文 例 ループ ある処理を何度も繰り返すことが必要な場合があり そのとき繰り返されるコマンド群をループ, 制御する変数のことを制御変数あるいはループ変数という if 式, 命令 else if 式, 命令 else 命令 >> x=-; >> if x>, y=; elseif x==, y=; else y=-; >> y y = - ループには二種類の方法がある : 繰り返す回数を指定 for 文 繰り返しを終了する条件 ( 終了条件 ) を指定 else if や else は省略可能, を省略し 次の行に書いてもよい while 文 9

for 文 ループ変数の範囲をとびとびに設定することもできる : for ループ変数 = ループ変数の範囲命令 >> s=; >> for i=: s=s+i; ; >> disp(s) 55 ループ変数は i, 繰り返しは から まで ( 回の繰り返し ) >> s=; >> for i=:: s=s+i; ; >> disp(s) >> s=; >> for i=:-: s=s+i; ; >> disp(s) ループ変数は i が偶数の場合のみ (i = から 刻みで まで ) ループ変数の大きいほうからの場合 >> s=; >> for i=:-: s=s+i; ; >> disp(s) 55 ループ変数の大きい値から順に処理したい場合は, このように記述する ( 情報落ちを防ぎたい場合など ) >> v=[ ]; >> for k=v disp(k) ループ変数 k の範囲をベクトルで指定 k はベクトル v の要素の値を順にとる ループの途中で次のループに移るときは cotiue を, ループを抜けるときは reak を用いる >> s=; >> for k=[ - - - 4-4 5-5] if k<, cotiue; s=s+k; if s>5, reak; disp(s); k が負の場合は次のループ変数へ s が 5 より大きくなったらループを終了 while 文 while 条件命令 >> a=; >> while a>= a=a/; disp(a) 5.5.5.5 a が 以上の間は処理を実行 reak や cotiue の使い方は for 文と同様 4 グラフィックス plot 二次元グラフを表示 (x, y のデータをベクトルとして与える ) ezplot 関数のグラフを表示 ezplot( f(x) ) π x π の範囲で f(x) をプロット >> x=lispace(, *pi, ); >> plot(x, si(x)); >> x=lispace(, *pi, ); >> plot(x, si(x), x, cos(x)); ezplot( f(x), [a,]) a x の範囲で f(x) をプロット ezplot( f(x,y) ) π xy, π の範囲で f(x,y)= をプロット ezplot( f(x,y), [a,]) a x, y の範囲で f(x,y)= をプロット ezplot( f(x,y), [a,,c,d]) a x, c y d の範囲で f(x,y)= をプロット ezplot( x(t), y(t) ) t π の範囲で x=x(t), y=y(t) をプロット ezplot( x(t), y(t), [a,]) a t の範囲で x=x(t), y=y(t) をプロット 5.8..4. -. -.4 -. -.8-4 5 7.8..4. -. -.4 -. -.8-4 5 7

7 グラフは Figure というウィンドウに表示される 次回の描画では消去される ( 上書き ) >> x=lispace(, *pi, ); >> figure(); plot(x, si(x)); >> figure(); plot(x, cos(x)); こうすると,Figure と Figure という別々のウィンドウに描画される 一つのウィンドウに重ねてグラフを描きたい場合は hold o を利用する (hold off で重ね描き解除 ) >> x=lispace(, *pi, ); >> plot(x,si(x)); >> hold o; >> plot(x,si(*x)); >> plot(x,si(*x));.8..4. si( x), si( x), si( x) のグラフが重ね描きされる -. -.4 -. -.8 Figure Figure - 4 5 7 8 グラフの装飾 plot(x, y, s ) の形式で s の部分に以下の記号を用いる >> x=lispace(, *pi, ); >> plot(x, si(x), 'r+:') 青. 点 - 実線 g 緑 o 円 : 点線 r 赤 x x 印 -. 鎖線 c シアン + プラス記号 -- 破線 m マゼンタ * 星印 (oe) 線なし y 黄 s 正方形 w 白 d ダイアモンド k 黒 v 三角形 ( 上向き ) ^ 三角形 ( 下向き ) < 三角形 ( 左向き ) > 三角形 ( 右向き ) p 五角形 h 六角形 9.8..4. -. -.4 -. -.8-4 5 7 4 >> x=lispace(, *pi, ); >> plot(x, si(x), 'r+:', x, cos(x), 'kd--') マーカーのサイズは MarkerSize で指定 : >> x=lispace(, *pi, 5); >> plot(x, si(x), 'rv', 'MarkerSize', 5) >> x=lispace(, *pi, 5); >> plot(x, si(x), 'rv', 'MarkerSize', ).8..4. -. -.4 -..8..4. -. -.4 -. -.8-4 5 7.8..4. -. -.4 -. -.8-4 5 7 -.8-4 5 7 4 4

4 グラフの上部にタイトルを表示するには title( text ) : >> x=lispace(, *pi, ); >> plot(x, si(x)); title('plot of Si(x)');.8. Plot of Si(x) タイトル 三次元グラフィックス >> t=lispace(,,4); >> [x,y]=meshgrid(t,t); >> z=si(x)+cos(y/); >> mesh(x,y,z);.4..5.5 -. -.4 -.5 - -.5 他に ezplot など -. -.8-4 5 7-8 4 4 8 44. 実行結果のグラフを保存 メニューバーから,[ ファイル ] [ 別名で保存 ] を選択, ファイルの種類を EPS file (*.eps) とすればよい 結果を PostScript ファイルとして保存したい場合 45 EPS ファイルは TeX 文書に貼り付けることができる 4 変数の保存について 定義した変数や配列情報などを保存したい場合, >> save fileame とすると, fileame.mat というファイルに保存される ファイル名を省略すると matla.mat に保存される 保存された情報は, >> load fileame として 後から読み込んで使うことができる どんな変数が定義されているかを調べるには whos を入力する すべての変数を消去するには clear を 特定の変数 aha を削除するには clear aha を入力する 資料など 長藤かおり : MATLAB / INTLAB によるプログラミングの基礎 ( 数値解析チュートリアル 8 九州大学 世紀 COE プログラム ) をもとに作成しました 多謝! 参考文献 櫻井鉄也 : MATLAB/Scila で理解する数値計算 ( 東京大学出版会 ) 大石進一 : MATLAB による数値計算 ( 培風館 ) http://www.slis.tsukua.ac.jp/~hasegawa/matlab/umerics.html http://www.mathworks.com/ 47 http://www.cyeet.co.jp/matla/ 48