|このページについて| ''概要'':このページでは、数学ソフト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/]]