• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Matlabについて質問)

Matlabで制約条件付きの最大化プログラムを作成する方法

このQ&Aのポイント
  • Matlabで制約条件付きの最大化をプログラムする方法を説明します。
  • 具体的なプログラム例として、fortranでのコードを参考にし、Matlabで実装します。
  • プログラムを実行すると、制約条件を満たす最大化の結果が得られます。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8529/18254)
回答No.1

matlabは持っていないので本当に動くかどうかわからないが,こんな感じ。 #double precision alpha,beta,px,py,i,x,h,maxu,y,u alpha=0.4; #α beta=0.6; #β px=3; #px py=2; #py i=100; #予算 x=0; #xの初期値 h=1; #ステップ幅 maxu=0; while 1; y=(i-px*x)/py; #予算制約 u =x**alpha*y**beta; #効用関数 if u>=maxu maxu = u; x = x + h; endif if u<maxu x = x - h; h = h / 10; if h<.000001 break #収束判定 endif x = x + h; endif endwhile format long x y u

uhh03905
質問者

お礼

ありがとうございます。 解決しました。ちゃんと動きました。 ただ、Maltlabでは、プログラムとして読まない(飛び飛ばす)記号は「%」 べき乗は「.^」なので、次のように修正すると、ちゃんと動いて、回答を得ました。 本当にありがとうございました。 %double precision alpha,beta,px,py,i,x,h,maxu,y,u alpha=0.4; %α beta=0.6; %β px=3; %px py=2; %py i=100; %予算 x=0; %xの初期値 h=1; %ステップ幅 maxu=0; while 1; y=(i-px*x)/py; %予算制約 u =(x.^alpha)*(y.^beta); %効用関数 if u>=maxu maxu = u; x = x + h; end if u<maxu x = x - h; h = h / 10; if h<.000001 break %収束判定 end x = x + h; end end format long x y u

関連するQ&A

専門家に質問してみよう