|
; p; N3 k& E" U1 I5 y- m在test.m中的循环里面把绘图语句改成6 {% y: T2 s6 [9 a
plot(T,x(7)-(T/2000)^2,'o');
8 P I6 B. ~( C! `# v; X% a- ^* Y- x$ X9 Y3 J
# _6 |& {( s3 t& |( V: g4 ~
就是了( n7 S1 n) H; v7 H! C+ a
因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了
! G/ y4 e9 p9 q) z' |* P+ M' y8 f: w I% e+ m0 p7 H
更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图
- Y' ^, w- |# T1 O5 K6 ]% BDraw_X = []; Draw_Y = [];
+ x, n! ]" u8 ~for T=600:5:1600; k0 M# z& a# Y
fun = @(n)GibbsEnergy(T,n);
4 C+ @$ f: g& d& k x=fmincon(fun,n0,A,B,C,C_i);
! L$ q- v% i% `, V9 L; x Draw_X = [Draw_X;T];
3 e+ u* ]" h7 C# v Draw_Y = [Draw_Y;x(7)-(T/2000)^2];% Q4 P0 y% Y. e/ C& O$ y" R
end
4 F& U8 ?6 @6 u: E g* t" C u+ Nfigure7 P% @# @9 F% ^3 {
plot(Draw_X,Draw_Y);
# m, K0 R' c: k! A$ J! L1 z; j8 [hold on;
- o" B# h& c& d! H! G, ?xlabel('T');
3 R% \- e( O1 F+ c9 |& T9 nylabel('payoff'); |
|