見出し画像

④[クールノー・ナッシュ均衡]ゲーム理論をClaudeとMathematicaで勉強

教科書を読むと眠くなるので、またしてもClaudeに聞く。

クールノー・ナッシュ均衡をMathematicaの基本関数だけで組みたいです。

プロンプト

クールノー・ナッシュ均衡をMathematicaで実装するのは興味深い課題ですね。Mathematicaの基本関数を使って、この経済モデルをシンプルに表現してみましょう。

Claudeの回答
(* パラメータの定義 *)
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関数を使用して、両企業の反応関数が交差する点を求めます。
結果の表示:均衡での各企業の生産量と利潤を計算し、表示します。

このコードを実行すると、与えられたパラメータに基づいてクールノー・ナッシュ均衡が計算されます。パラメータを変更することで、異なる市場状況でのシミュレーションが可能です。

Claudeの回答

クールノー・ナッシュ均衡:
企業1の生産量: 26.6667
企業2の生産量: 26.6667
企業1の利潤: 711.111
企業2の利潤: 711.111

Mathematicaの回答

取り敢えず、動きだけ確認。動くな… 意味はここから確認。
なんだかシンプレックス法に似ている。

コピペして動かして何がいいの?と思うでしょ?
実はこれをやると、私の場合はめっちゃ理解が進む。
Pythonの機械学習もスクレイピングも量子コンピューターも、こうやって覚えた。


いいなと思ったら応援しよう!