第2回 Mathematicaの基本操作2 線形代数、簡単な可視化(4月14日)

はじめに

Wolfram Mathematicaの起動方法

  • デスクトップ→Mathematicaのショートカット→新規ドキュメント
  • 毎授業、新しいファイルを作っておく。
  • ファイルの先頭に「第2回 Mathematicaの基本操作2(4月14日)」と入れておく。(第1回「コメント文」を参照)

Wolfram Mathematicaの個人PCへのインストールについて

  • 総合情報処理センターの事務室で貸し出し(使用に制限あり)


変数と関数

変数を使う

入力例1

a = 2; b = 3;
Plot[Sin[a*x] + Cos[b*x], {x, -5, 5}]

大文字で始まる名前は組みこみ関数(Plot, N)や定数(Pi, E, I)のようにMathamaticaの中で既に定義されていることが多いので、変数を作る時は小文字で始まるものを用いるのが安全です。


  • 普通のプログラミング言語と異なり、変数の型を宣言する必要はありません。
  • セミコロン「;」は、計算結果を表示したくない時やいくつかの表現を1行に書きたい時に用います。
  • 入力例1の場合、1行目は全体として1つの表現とみなされます。
  • 変数を定義した後などにはセミコロンをつける習慣をつけておくと良いです。
  • プログラム内の変数xは[ ]で囲むことに注意。

課題1 関数の グラフのプログラムを係数 を変えられる形でかき、適当に係数に値を代入してグラフを描きなさい。


関数を用意して使う

入力例2
(課題1に追加修正)

f[x_] := a*x^3+b*x^2+c*x+d;

関数を定義する場合は、変数にアンダーラインをつけ、「:=」を使います。実際にf[x]の形で呼び出されて初めて関数の右辺が計算され、その結果が関数の値として返されます。
(遅延割り当て)


  • 「=」は、右辺の値を左辺の変数に与える(代入、割り当て)
  • 「==」は、左辺と右辺が等しい(恒等式)

課題2 課題1のプログラムを変更(or コピー)して、関数f(x)を先に定義し、Plot内ではf(x)を呼び出すようにしなさい。

導関数

入力例3

f’[x]

関数に「’」をつけると導関数を計算します。




定義の確認とクリア

入力例4

Definition[a]

一度変数(関数)を定義してしまうと、その後その値(式)が代入された状態になっています。次に同じ文字を使いたいと思った時は、その定義をクリアする必要があります。

入力例5

Definition[f]

入力例3と4で、現在その変数(関数)がどのように定義されているのか確認することができます。


入力例6

Clear[f]

Clearは、変数(関数)の定義を消します。同時に複数消すことも可能です。クリアした後に、もう一度入力例3と4を試して、消えていることを確認してみてください。

入力例7

Clear[a,b,c,d]




課題3 次の2つの関数 について、2つのグラフを重ねて描きなさい。さらに、交点の座標を求めなさい。(第1回「代数方程式を解く」を参照)

 
 

一時的な代入

入力例8

h = x+3*y  

「/.」を使うと、一時的に変数に値を代入することができます。

入力例9

h/.{x -> 1, y -> 4} 




入力例10

h

入力例10では、値が入っていないことを確認してみてください。


課題4(発展) 課題3の2つのグラフに囲まれた面積を求めなさい。Wolframドキュメントセンターで「Integrate」や「List」「Part」の使い方を調べること。


線形代数

行列と行列式

入力例11

v1 = {1, 2};
v2 = {3, 4};
v = {v1, v2}

ベクトルは、リスト{ }で表します。2つの縦ベクトルv1とv2を使って、2x2行列vができます。



入力例12

MatrixForm[%]

行列の形式で表したい時はMatrixFormを使います。%は、1つ前の実行結果(out[ ]=の部分)を参照するという意味で、色々な場面で使えて便利です。%をvにしても同様の結果になります。

入力例13

Det[%]

行列式の計算はDetを使います。



課題5 Transpose[ ]やInverse[ ]を使って、何が起きるか確認しなさい。


行列の演算

入力例16

v1-v2

行列の加減算は、普通に記述すれば良いです。


入力例15

v1.v2

内積には「.」を使います。



課題6 外積の計算方法をWolframドキュメントセンターを使って調べ、新たに3次元ベクトルv3とv4を適当に定義して、v3とv4の外積を求めなさい。


簡単な可視化

入力例16

Graphics[Circle[],Axes -> True]

Graphicsは2次元のグラフィックス画像を表します。



入力例17

Graphics[{Circle[],Red, Disk[{1,0},1]},Axes -> True]

Diskは塗りつぶした円や楕円を描きます。
Disk[{x,y},r]のように、中心と半径を指定します



直線

入力例18
{xn,yn}には自分で値を代入すること

Graphics[Line[{{x1,y1},{x2,y2},{x3,y3},{x4,y4}}]]

Lineは直線を描きます。中継となる点の座標を指定します。




課題7 入力例18の直線を黄色にしなさい。

課題8 長方形はRectangleで描くことができます。入力例17(または)に青い長方形を足してみなさい。Rectangle[{xmin,ymin},{max,ymax}]のように、左下と右上の座標を指定します。

課題9(発展) Graphicsをドキュメントセンターで調べ、三角形と矢印を描きなさい。


Mathematicaの面白い使い方

Mathematicaにはたくさんのデータが蓄積されていますので、それらを呼び出して情報を得ることも可能です。

課題10(発展)CountryDataをドキュメントセンターで調べてみよう。