Mathematica の基本的な使い方 Mathematica を起動する 画面左下の「スタート」ボタンを押したまま、メニューをあけると、 「アプリケーション」の項目 が有る。さらにその項目の中に Math と書かれている。Math の上にカーソルをいれたまま、マウスボタ ンを放すと Mathematica 起動する(はず) ファイルの保存・読み込み ファイルのセーブ 計算途中で作業を中断したい場合などでは、ファイルを保存したいときがある。保存の作業は、 File: Save ファイルの読み込み 保存されたファイルを読み込むには、該当書類をダブルクリックする。 もしくは、Mathematica を起動してから、 File:Open を選択する。 数式の入力、再入力 入力方法 カーソルが横に寝ている状態のときに数式を打ち込む 式を入れ終わったら、 [Shift] + [Enter] で計算がはじまる 再入力 式の一部を修正して実行したいときは、カーソルが縦になる位置にもってゆき、式を編集し、ふた たび[Shift] + [Enter] とする。 Mathematica で数値計算 たし算を実行する 1 + 2 かけ算の実行 2 * 4 2 4 関数の実行 Mathematica が用意している数学関数は、はじめが大文字であることに注意。 Sqrt[16] 16 の平方根の計算 Prime[15] 15 番目の素数を求める FactorInteger[2001] 素因数分解 Help の使い方 Mathematicaには無数の数学的関数が組み込んであり、すべてを覚えるのは不可能である。また、関 数に渡す数値や順番、オプションなども同様である。このためMathematicaには「どのような関数がある のか」 「関数に渡す値は何か」「関数が返す値の説明」などを画面で確認できる仕組みがいくつも有る。 ? 関数の引き数、出力の意味が表示される。 ? FactorInteger とすると、FactorInteger が素因数分解の関数であることが表示される。 また、関数名をはっきり覚えていない場合は、 ? Factor* とすると、関数名が Factor で始まるものすべてが表示される。 メニューの Help “Go To”と書かれているところに関数名を入力すると、詳細な説明が表示される。 整数と浮動小数点 Mathematica では、数値のうち、整数は近似ではない正確な値を意味し、小数点を含む少数は有限 の精度でうちきられた数値として解釈される。このため、整数と少数ではその計算結果が異なることが 多い。次の例を実行してみよ。2^100 はすべての桁数が表示されるが 2.0^100 では近似的な結果になる。 2 ^ 100 2.0 ^ 100 直前に実行した計算結果の引用 % を使うと、直前に実行した計算結果の値を取り出すことができる。 すこしずつ計算を進めてゆくときに便利である。 例.2 5の2乗を求めてみる。そのあと、その結果の平方根を確かめる。 In[2]:= 25 ^ 2 Out[2]= 625 In[3]:= Sqrt[%] Out[3]= 25 記号計算 Mathematica では、文字式(多項式、単項式)の四則演算、因数分解、解の導出ができるようになっ ている。この機能を使えば、大学4年間で遭遇する計算式の多くは処理できる。 記号演算の基礎 In[2]:= 2x + 5x Out[2]= 7 x 注意:Mathematica では、変数 xy と、その間に空白が挟まった x y では意味が違う。空白をはさん だ場合は変数 x と変数 y のかけ算と見なす。変数名の間には空白を入れないこと。 In[3]:= 2xy + 3 x y + 5 x y Out[3]= 2 xy + 8 x y 数式の展開 式の展開 Expand[] In[4]:= (x - y ) ^3 (x + y)^3 Out[4]= 3 3 (x - y) (x + y) In[6]:= Expand[%] Out[6]= 6 4 2 2 4 6 x - 3 x y + 3 x y - y 式の因数分解 Factor[] In[8]:= Factor[6x^2 + 13x -5] Out[8]= (5 + 2 x) (-1 + 3 x) 分数の分母を揃える。Together[] 下記のような複雑な分数式を分母をそろえて、ひとつにする。 1 1 1 + + 4x 2 – 1 2x 2 + 5x + 2 2x 2 + 3x – 2 文字式をもっとも簡素な形に変形する。Simplify[] 下記の式は1項にまとめられる。 2y 1 1 x – y + x + y + x2 – y2 分子分母を約分する Cancel[] 2x + xy – 2y – 4 x 2 + 3x – 10 例題 平方根の計算 ある数の平方根は 256 になる。その「ある数」は何かを計算せよ。 文字式の文字に値を代入する 文字式中の特定の変数を数値に置き換えた結果を計算する 式 3x^3 + 4 において、変数xを4として計算せよ。 In[12]:= 1+ 3x^3/.x->4 Out[12]= 193 文字を文字に置き換える 文字に数字を置き換えるだけでなく、文字を文字に置き換えることもできる。たとえば、 1 + 3x^3/. x-> y-1 これにより連立方程式などの文字消去も簡単にできる。 2x +3y =7 x-2y=0 を x を消去することによって解いてみよ。 文字式の変数に即値を代入する。 ここまで述べてきた代入では、式の中で代入が指定された部分だけを値に「置き換え」 、その結果 を変形し、簡単にするものであった。それに対し、もうひとつの代入の仕方は、文字そのものがいつで も特定の値をもつとして式を計算する。 (したがって、一度わりあてた文字は「定数」として扱われる。) 文字への即値の割り当て x=4 割り当て結果を用いての計算 1+3x^3 文字に割り当てた即値の解除 Clear[] 一度でも=で、文字に値を割り当てると、それ以後は「文字」としてはあつかれなくなり(いつで も特定の数値として扱われる)、困ることがある。これを解除するのが Clear である。 Clear[x] 方程式の解を求める関数 Solve[] x 2 + 3x + 2 = 0 の解を求める場合、 In[15]:= Solve[x^2+3x+2==0,x] Out[15]= {{x -> -2}, {x -> -1}} 最後の行は、x=-2, x=-1 のときに右辺が0となることを表す。 2元連立方程式の場合 In[16]:= Solve[{2x+3y==7, x-2y==0},{x,y}] Out[16]= {{x -> 2, y -> 1}} 2次元の関数のグラフの書き方 2次元平面にグラフを書くには、 Plot[式の形 , 変数の値の範囲] とする。たとえば一元一次関数F(x) = 2x + 3 のグラフを -2 ≦ x ≦ 2 の範囲で書くには Plot[2x+3, {x, -2,2}] 2次関数F(x) = x 2 – 3 のグラフを同様にして作図するには Plot[x^2-3, {x, -2,2}] 例題 2次関数 x^2+4x-21=0 を満たす x をもとめよ。また、そのグラフをかけ。 Solve[x^2+4x-21==0,x ] Plot[x^2+4x-21, {x, -3, 7}] -15 + 9 x + 6 x^2 + 26 y + 23 x y + 21 y^2 ==0 となる x,y の関係を次の手順で求めよ。 式の左辺を因数分解せよ。 Factor[-15 + 9 x + 6 x^2 + 26 y + 23 x y + 21 y^2] 関数 Solve をつかって、上記の式が0となる x,y の関係を求めよ。 Solve[-15 + 9 x + 6 x^2 + 26 y + 23 x y + 21 y^2 ==0, {y,x}] x,y の関係式をグラフにせよ。 Plot[{y=-5/3 - 2x/3,y=3/7-3x/7},{x,0,4}] 実際に前述の式が0となる x,y の値を3つしるせ。 3元連立方程式 3x + 4y + 2z = 17 x + y + z =6 5x + y -z =6 をみたす x,y,z をもとめよ。 Solve[{3x + 4y + 2z = 7, x + y + z= 6, 5x+y-z =6},{x,y,z}] 関数の定義 ユーザ定義関数の例 コブダグラス型効用関数u(x1,x2) = x10.4 x20.6 を作ってみる。 utility[x1_, x2_] := x1^0.4 x2^0.6 定義の表記上の注意 (1)左辺の関数名は小文字で始まっている。 (2)関数の独立変数を表す文字の後に下線がついている。 (3)数学の関数定義で使うイコールが、コロン・イコールになっている。 (4)関数式を入力しても、結果を返さない。 (Out[]はでてこない。) 定義ができているかどうかの確認 いま作成した関数が Mathematica に登録されたかどうかを確かめる。 In[4]:= ?utility Global`utility utility[x1_, x2_] := x1^0.4*x2^0.6 自分で定義した関数を使ってみる。 x1 = 4, x2 = 3 のときの値を計算する。 utility[4,3] 関数の消去 関数を消去したい場合は Clear[]を用いる。 Clear[utility] 関数定義をつかったグラフプロット ここまでは、Plot[x^2+4x-21, {x, -3, 7}]のようにして、プロットしたい式を直接 Plot に与えていた。 これを関数定義を行ってからプロットを行う。 f[x_] := x^2 + 4x -21 Plot[f[x], {x,-8,4}] 注意! Plot のときに与える変数名は、定義のときにつかった変数名とは一致してなくても構わな い(一致させるほうが混乱は少ないが。)。たとえば、Plot[f[x], {x,-8,4}]は、Plot[f[y], {y,8,4}] としてもまったく同じグラフができ上がる。 Plot のオプション 関数のプロットの際にはさまざまな装飾が指定できる。 たとえばプロットされたグラフに題名をつ けたり、グラフの縦横比を変えるなどである。そのようなオプション指定は、 Plot[f[x], {x,-8,4}, PlotLabel->”Quadratic function”] などとして、定義域の指定の後に追加する。オプションは、 オプション名 -> オプション値 という書式で指定する。オプション値が2つ以上ある AxesLabel の場合は、 AxesLabel -> “ { x 軸の軸名”, “y 軸の軸名”} とする。オプションには次のものがある。 オプション名 AspectRatio AxesLabel DisplayFunction Frame FrameLabel GridLines PlotLabel PlotRange PlotStyle PlotPoints MaxBend デフォルト値 1/GoldenRatio 作図の縦横比。デフォルト値は黄金比の 逆数(約0.6)。指定可能な値は任意の実 数、またはAutomatic。Automaticが指定さ れると、x軸、y軸の縮尺が同じになる。 None 座標軸にラベルを付けるには、{"x label", "y label"}で指定 $DisplayFunction グラフィックスの表示法。(出力デバイ ス) FALSE 作図の周りに枠を描くか否か。 None 作図の周りの枠にラベルを付ける。 None 方眼の指定。方眼を描くにはAUtomaticを 指定 None 図のラベルを指定 Automatic 作図範囲。すべての点を描くためにはAll を指定。 Automatic 曲線に使用するグラフィックスのプリミ ティブのリストのリスト 25 関数の最小サンプリング数 10 連続した線の最大折れ角 目一杯オプションを指定した例 Plot[f[x], {x,-8,4}, PlotLabel->"Qudratic Function", AxesLabel -> {"x", "y"}, GridLines -> Automatic] 条件付きユーザ関数 ∼不連続な関数を描くにはどうしたらよいか?∼ 経済学では、変数の値によって傾きがちがっているなど、場合分けを必要とする関数がよくある。 このような場合分けのある関数定義を「条件付きユーザ関数」という。 Ex. 生産関数を描いてみる f[x_ /; 0 <= x <= 100] := 2/5 x f[x_ /; 100 <= x <= 200] := 4/5 x - 40 f[x_ /; x > 200] := 3/10 x +60 Plot[f[x], {x,0,250}] 不連続な関数定義の例 局所変数の利用 ∼変数が沢山あるときの関数定義∼ u(x1,x2) = x1αx2β のようになっており、パラメータα、 前述のコブ・ダグラス型効用関数の一般形は、 βの値によって値が異なってくる。α、βに数値を代入して関数を計算するには次のような方法がある。 (1)α、βに値を割り当てる。 (以下では a,b がα、βのかわり) a = 0.4 b = 0.6 utility[x1_, x2_] := x1^a x2^b utility[4,3] (2)このような場合は、カッコとセミコロンをつかって一行にまとめることもできる。 utility[x1_, x2_] := x1^a x2^b ( a = 0.4; b = 0.6; utility[4,3]) このように1行に複数の式がはいったものを「複合式」とよぶ。 (3)α、βを関数の引き数にいれてしまう。 utility[x1_,x2_,a_,b_] := x1^a x2^b utility[4,3] いづれのばあいも同じ結果をかえすことができる。 しかし値の割り当てを使う場合、作業を続けてゆくと、aやbなどは使われやすい変数名なので、い ろいろな関数で使われる危険が大きくなる。たとえば utility 以外の関数 g[x]が次のように定義されてい たとしよう。 g[x_] := a x^2 関数 utility も a,b をつかっていて、utility を計算するために a,b の値を定義してしまうと、関数 g[x] も影響をうけてしまう。このため、関数ごとに変数名が重ならないようにする必要があるが、これを解 決するのが Module である。 Module をつかった関数定義 Module の定義は、 関数名[引き数] := Module[{Module の中で使う変数リスト}, 式] となっている。たとえば、効用関数の例では、 utility[x1_, x2_] := Module[{a,b}, a = 0.4; b=0.6; x1^a x2^b]] utility2[x1_, x2_] := Module[{a,b}, a = 0.5; b=0.5; x1^a x2^b]] Module を使うことで、同じパラメータ名 a,b を使っていても utility,utility2 の2つの関数は別のもの として定義することができた。 例題 下記の問題をとき、その結果を考察せよ (1)2次関数 x^2+4x-21 を関数定義を用いて関数 f(x)として定義し、f(x)をプロットせよ。 (2)(1)で作成した関数 f(x)の値が 0 となる場合の x の値を Solve を使ってとけ。 (3) 「条件付きユーザ関数」の例として示した生産関数を定義し、グラフにせよ。 ただし、グラフにはタイトル、横軸の名称、縦軸の名称を書き入れること。 (4)コブ・ダグラス型効用関数を a=0.1(このとき b=0.9)から a=0.9(このとき b=0.1)まで9通り定義せ よ。a=0.1 のときの効用関数は utility1, a=0.2 のときの効用関数は utility2 などとして、utility9 まで関数を 定義すること。 (5)(4)で作った関数9つを Plot3D を使って表示せよ。その表示結果から、効用関数がもっとも大き くなる a,b はどのような場合かを考察せよ。 微分 Mathematica は、数式を特定の変数について微分することができる。関数 x^2 + 2x y + y^2 を変数 x について微分するためには、 D[x^2 + 2x y + y^2, x] とすればよい。 課題 容積 V, 半径 r, 高さ h のジュースの缶を設計することを考える。ジュース缶を作るコストは、その 表面積に比例し、平方センチメートルあたりp円かかるとする。容積Vがすでに決まっているとき、もっ とも安く作れる半径 r を決めたい。 r h (1)缶を作るコストは、表面積 * p である。容積が V であるときの表面積を表す式を求めよ。表面 積は上下のフタの面積(2つぶん)と、側面の面積からなる。 [ヒント:缶の容積は底面積× h である。] (2)缶をつくるコストの式 Q を r の関数として表せ。つまり関数 Q(r)を定義せよ。 (3)缶のコストの関数 Q(r)がもっとも小さくなるときの半径 r の条件を求めよ。手段は問わない。 (4)V=250, p=2 として缶のコストを最小にする半径 r を求めよ。
© Copyright 2024 Paperzz