2022年度プログラミング演習A・B

第1回:MATLAB入門1

1. MATLABとOctave

「MATLAB」(マトラボ、Matrix Laboratoryに由来)は、アメリカのMathWorks社が開発している数値解析ソフトウェアの名称であり、かつその中で使われているプログラミング言語の名称でもあります。

プログラミング言語としてのMATLABは、特に行列や配列の処理に優れており、数値計算の分野で広く使用されています。

ソフトウェアとしてのMATLABは有料です。一方で、MATLAB言語にほぼ対応している無料のソフトウェアがいくつか存在します。

この授業では、そのような無料のソフトウェアの1つの「GNU Octave」(グヌー・オクターブ、単にOctaveともいう)を使用します。クラウド教育システムCESのプログラミング機能により、「JupyterLab」(ジュピター・ラボ)というWebブラウザ上で動作するプログラム対話型実行環境に搭載されたOctaveを使用しますので、パソコンへのインストールは不要です。

なお、興味のある方は https://www.gnu.org/software/octave/index からOctaveをインストールできるほか、新潟大学の教職員・学生であれば大学の包括ライセンス契約(今年度末まで)によりMATLABを無料で利用することができます。詳細は https://www.cais.niigata-u.ac.jp/gateway/news/2021/2021080501.php (学内限定ページ)を参照してください。

2. 変数と値の表示

C言語のように変数の型の宣言が必要なプログラミング言語と違い、MATLABではPythonなどと同様に値を代入することで様々な型の変数を柔軟に扱うことができます。例えば、次のコードではaは数値、bは文字列を格納した変数になっています。

(数値の変数は、デフォルトで内部的には倍精度浮動小数点数(64ビット)として扱われます。文字列の記号はシングルクォーテーションでも構いません。)

また、数学でよく使う円周率π、ネイピア数eが定数として用意されています。虚数単位はi(またはj)です。

コードは、セルを選択した状態で[Shift]+[Enter]で実行できます。

コードは上から1行ずつ順に実行され、変数への代入や変数のみを書いた行ではその値が表示されます。行の終わりにセミコロンを付ければ、値を非表示にすることができます。結果が見づらくならないよう、値の表示が必要な行以外はセミコロンを付けるようにすることが望ましいです。

値の表示には、関数displayも使えます。関数printfを使えば、指定したフォーマットで表示することができます(整数は「%d」、小数は「%f」、文字列は「%s」、改行は「\n」です)。

3. 算術演算と数学関数

算術演算について、加算、減算、乗算、除算、べき乗にはそれぞれ「+」「-」「*」「/」「^」を使います。また、数学の関数sin、exp、logなどがデフォルトで使用可能です。

4. 1次元配列

複数の要素(基本的に数値)を含む配列を扱うことができます。以下のコードでは、1次元の配列(数列)を扱っています。「%」は後ろをコメント(コードの実行に影響しない)にします。

配列の要素(成分)は「変数名(index)」の形で参照し、自由に追加、変更、削除ができます。indexは0ではなく1から始まります。

5. 関数のグラフの描画

1次元配列を利用して、関数のグラフを描画することができます。

手順:

  1. 関数のグラフ上の点のx座標とy座標をそれぞれ格納した2つの1次元配列を作成する。
  2. 関数plotを用いてグラフを描画する。

以下のコードでは、$y=\sin x \ (0\leq x\leq 2\pi)$のグラフを描画しています。

plotの3番目の引数では、曲線の色とスタイルを指定しています。「r」を「b」「g」、「-o」を「-+」「--」「-^」にそれぞれ置き換えて、実行結果を確認してみてください。

第1回レポート課題

好きな関数のグラフを描画してください。関数は複雑なものの方が望ましいです。曲線の色とスタイルは、インターネットで調べるなどして自由に設定してください。

(このNotebookファイル(拡張子ipynb)ではなく新しくNotebookファイルを作成して作業し、ファイルをダウンロードしてからCESのレポート提出機能で提出してください。)