- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Matlabについて質問)
Matlabで制約条件付きの最大化プログラムを作成する方法
このQ&Aのポイント
- Matlabで制約条件付きの最大化をプログラムする方法を説明します。
- 具体的なプログラム例として、fortranでのコードを参考にし、Matlabで実装します。
- プログラムを実行すると、制約条件を満たす最大化の結果が得られます。
- みんなの回答 (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
お礼
ありがとうございます。 解決しました。ちゃんと動きました。 ただ、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