![見出し画像](https://assets.st-note.com/production/uploads/images/155280349/rectangle_large_type_2_daf843ba6927ee11eda6228a622b2c63.png?width=1200)
Photo by
nanahoshi_d
④[クールノー・ナッシュ均衡]ゲーム理論をClaudeとMathematicaで勉強
教科書を読むと眠くなるので、またしてもClaudeに聞く。
クールノー・ナッシュ均衡をMathematicaの基本関数だけで組みたいです。
クールノー・ナッシュ均衡をMathematicaで実装するのは興味深い課題ですね。Mathematicaの基本関数を使って、この経済モデルをシンプルに表現してみましょう。
(* パラメータの定義 *)
a = 100; (* 逆需要関数の切片 *)
b = 1; (* 逆需要関数の傾き *)
c = 20; (* 限界費用 *)
(* 企業の利潤関数 *)
profit[q1_, q2_] := (a - b*(q1 + q2))*q1 - c*q1;
(* 反応関数 *)
reactionFunc[q_] := (a - b*q - c)/(2*b);
(* クールノー・ナッシュ均衡の計算 *)
equilibrium = NSolve[{
q1 == reactionFunc[q2],
q2 == reactionFunc[q1]
}, {q1, q2}, Reals];
(* 結果の表示 *)
Print["クールノー・ナッシュ均衡:"];
Print["企業1の生産量: ", q1 /. equilibrium[[1]]];
Print["企業2の生産量: ", q2 /. equilibrium[[1]]];
(* 均衡での利潤の計算 *)
equilibriumProfit1 = profit[q1, q2] /. equilibrium[[1]];
equilibriumProfit2 = profit[q2, q1] /. equilibrium[[1]];
Print["企業1の利潤: ", equilibriumProfit1];
Print["企業2の利潤: ", equilibriumProfit2];
意外と短い。
このコードでは、クールノー・ナッシュ均衡を求めるための基本的な実装を行っています。主な要素は以下の通りです:パラメータの定義:逆需要関数と限界費用を設定します。
利潤関数の定義:各企業の利潤を計算する関数を作成します。
反応関数の定義:各企業の最適反応を表す関数を作成します。
均衡の計算:NSolve関数を使用して、両企業の反応関数が交差する点を求めます。
結果の表示:均衡での各企業の生産量と利潤を計算し、表示します。
このコードを実行すると、与えられたパラメータに基づいてクールノー・ナッシュ均衡が計算されます。パラメータを変更することで、異なる市場状況でのシミュレーションが可能です。
クールノー・ナッシュ均衡:
企業1の生産量: 26.6667
企業2の生産量: 26.6667
企業1の利潤: 711.111
企業2の利潤: 711.111
取り敢えず、動きだけ確認。動くな… 意味はここから確認。
なんだかシンプレックス法に似ている。
コピペして動かして何がいいの?と思うでしょ?
実はこれをやると、私の場合はめっちゃ理解が進む。
Pythonの機械学習もスクレイピングも量子コンピューターも、こうやって覚えた。