このページについて

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

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

目次

グラフを描く

2次元

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

とやることで,関数a math imageを,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次元

例えば,ミクロ経済学でよく登場するa math imageという形状の効用関数を見てみるには,

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}デフォルト値

等高線(無差別曲線)を描く

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}

というオプションコマンドで,a math imageという形状の効用関数の,効用水準が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

参考書籍

  • 宮岡悦良(2000),『Mathematica数学の道具箱〈上〉』,ブレーン出版
  • 宮岡悦良(2000),『Mathematica数学の道具箱〈下〉』,ブレーン出版

リンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-10-27 (日) 17:41:28 (3503d)