|このページについて|

''概要'':このページでは、数学ソフトMathematicaでのグラフの描き方を解説します。

''親ページ'':このページの親ページは[[Mathematica]]です。

|目次|
#contents
----


*グラフを描く [#n867fdb7]


**2次元 [#d1a6f7b2]

 Plot[ x^3 - x^2 + x + 1, {x, -1, 1}]

とやることで,関数&mimetex(y=x^3 - x^2 + x + 1);を,xが-1から1までの範囲でグラフを描くことが出来る.

 foo[x_] := x^3 - x^2 + x + 1

と定義しておいて,

 Plot[foo[x], {x, -1, 1}]

とやっても同じこと.オプションコマンドも色々ある.例えば,

 Plot[foo[x], {x, -1, 1}, PlotLabel -> "y=x^3 - x^2 + x +1"]

とやれば,グラフの名前として「y=x^3 - x^2 + x +1」を表示してくれる.


 Plot[foo[x], {x, -1, 1}, PlotLabel -> "y=x^3 - x^2 + x +1", PlotRange -> {-4, 4}]

とすれば,y軸を-4から4までの範囲でグラフを描いてくれる.

 Plot[foo[x], {x, -1, 1}, AxesLabel -> {"x", "y"}]

とかやれば,x軸とy軸のところに,"x","y"などど表示してくれる.

 Plot[foo[x], {x, -1, 1}, AspectRatio -> Automatic]

で,y軸とx軸の1単位の長さを同じにしてくれる.

 Plot[foo[x], {x, -1, 1}, AspectRatio -> 0.5]

で,y軸方向につぶしてくれる.

複数のグラフを同じ図に描くには

 Plot[{foo[x], x^2}, {x, -1, 1}, AspectRatio -> Automatic

とかやる.あるいは,以下のようにする方法もある.

 zu1 = Plot[foo[x], {x, 0, 2}]
 zu2 = Plot[x^2, {x, 2, 3}]
 Show[zu1, zu2]

この方法だと,グラフごとに描く範囲を変えられる.



**3次元 [#oa527fc7]

例えば,ミクロ経済学でよく登場する&mimetex(y=x^{1/2} y^{1/2});という形状の効用関数を見てみるには,

 Plot3D[x^(1/2)  y^(1/2), {x, 0, 1}, {y, 0, 1}]

とやればよい.当然,

 foo[x_, y_] := x^(1/2) y^(1/2)
 Plot3D[foo[x, y], {x, 0, 1}, {y, 0, 1}]

でも良い.

 Plot3D[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, PlotPoints -> 10]

などとやれば,グラフの目の粗さを設定できる.



 Plot3D[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, ViewPoint -> {0, -2, 0}]


とかやれば,グラフを眺める視点を変更できる.視点の大まかな目安は,

|ViewPoint -> {0, 0, 2}  |  真上|
|ViewPoint -> {0, 2, 0}  |  真横(正面)|
|ViewPoint -> {1.3, -2.4, 2}|デフォルト値|


***等高線(無差別曲線)を描く [#ae065451]


 ContourPlot[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}]

とやればとりあえず描ける.色づけしたくないならば,

 ContourPlot[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, ContourShading -> False]

とやればよい.等高線(無差別曲線)の数を調整したい場合,


 ContourPlot[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, ContourShading -> False, Contours -> 5]

などと指定しておけばよい.

無差別曲線と,予算制約線が接している様子を見たいならば,

 zu1 = ContourPlot[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, 
 ContourShading -> False, Contours -> 5]
 zu2 = Plot[-x + 1, {x, 0, 1}]
 Show[zu1, zu2]

などとすればよい.確かに接している.見やすいように,予算制約線を点線にするには,

 zu1 = ContourPlot[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, 
 ContourShading -> False, Contours -> 5]
 zu2 = Plot[-x + 1, {x, 0, 1}, PlotStyle -> {Dashing[{0.01, 0.01}]}]
 Show[zu1, zu2]

とかやればよい.もう少し,いろいろと無差別曲線をいじることも出来る.

 zu1 = ContourPlot[x^(1/2) y^(1/2), {x, 0, 1}, {y, 0, 1}, 
 ContourShading -> False, Contours -> {1/5, 1/3,1/2, 2/3, 3/4}]
 zu2 = Plot[-x + 1, {x, 0, 1}, PlotStyle -> {Dashing[{0.01, 0.01}]}]
 Show[zu1, zu2]



とやれば,もっとはっきり,予算制約線と無差別曲線が接しているのが分かる.この無差別曲線の効用水準は,1/2であることも分かってしまった.

ここで,

 Contours -> {1/2, 2/3, 3/4}

というオプションコマンドで,&mimetex(y=x^{1/2} y^{1/2});という形状の効用関数の,効用水準が1/2, 2/3, 3/4に対応する等高線(無差別曲線)を描け,と指定している.

さて,ここまででは,予算制約線と無差別曲線が接するところは,図をテキトーに描いて,あてずっぽうで探し当てました.あてずっぽうで探しあてた図を見れば,なんとはなく,効用最大化の解は,(x,y)=(1/2,1/2)っぽい,ということが分かります.

もちろん,効用最大化の解が(x,y)=(1/2,1/2)である,ということを先に計算してから,そのもとで,接する無差別曲線の効用水準が1/2である,ということを知り,図を描く,というちゃんとした手順もあります.

そこで,効用最大化の解が(x,y)=(1/2,1/2)である,ということをちゃんと計算してみましょう.

 u[x_, y_] := x^(1/2)  y^(1/2)


と効用関数を定義しておきます.MRS(限界代替率)の計算は,

 D[u[x, y], x]   /D[u[x, y], y]

によって与えられます.MRSが価格比に等しいという条件と,予算制約線を連立させて,(x,y)について解けばよいです.

 Solve[{D[u[x, y], x]/D[u[x, y], y] == 1, y == -x + 1}, {x, y}]

これを解けば,確かに(x,y)=(1/2,1/2)という解を得ます.

 




Mathematicaすごい.




*Reference [#c08a9011]
**参考書籍 [#af93f0dd]
-宮岡悦良(2000),『Mathematica数学の道具箱〈上〉』,ブレーン出版 
-宮岡悦良(2000),『Mathematica数学の道具箱〈下〉』,ブレーン出版

**リンク [#y3d3bf97]

-[[神戸大学 Mathematica ホームページ:http://bach.istc.kobe-u.ac.jp/mma/]]


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS