|
S6 `5 ` _- I5 M8 L: F在test.m中的循环里面把绘图语句改成3 _) e9 } J* K* A
plot(T,x(7)-(T/2000)^2,'o');# C3 i# B7 m& E1 o/ X! Q. j
# M x. v8 c/ w
4 I) B0 ^" R" S' H
就是了' Z+ q) l! v) Y4 r7 @8 m* T. t' Y
因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了
" J- ^' c8 \: w& u, M+ P ~/ s. r; u2 S* [9 U1 k
更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图7 d- H- M" Y& V
Draw_X = []; Draw_Y = [];! q/ ?8 I- \: p# x0 H3 W2 ^. Q
for T=600:5:1600
* j1 d6 n+ G# f" `2 l2 {# ?/ Q fun = @(n)GibbsEnergy(T,n);8 i" L( f$ O$ b0 @- f' z8 `
x=fmincon(fun,n0,A,B,C,C_i);
! ^ R7 Q. k7 E1 o) h; G+ P! H Draw_X = [Draw_X;T];
9 Y% V0 V" P8 D0 u# [+ { Draw_Y = [Draw_Y;x(7)-(T/2000)^2];
! [$ m4 d/ L7 }1 { }end, W, c8 X% Z3 l. m! ?
figure
! n* t% y1 {1 _) Y. Gplot(Draw_X,Draw_Y);1 ?( p* U3 t5 ]- Z
hold on;
- ^1 a# _9 r* o" Hxlabel('T');, V( I! e/ L3 `/ x! D( H; P, D9 d" k
ylabel('payoff'); |
|