|
|
' H; g. ]( Q5 |! @: o3 ~在test.m中的循环里面把绘图语句改成
; N. G3 z9 V/ @& Y; jplot(T,x(7)-(T/2000)^2,'o');
8 n ?" i5 f" f9 q1 x4 u9 {- s
3 Y! G3 m4 ]4 Q& i
! K5 S4 z* c/ N' [就是了
2 q: l5 W7 q& F* |: X因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了+ b$ h3 P9 J0 n* O! q) J; f
/ {: F9 m4 s1 f/ H7 ?& d更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图
8 l. M ` l# A+ J4 _) N- }Draw_X = []; Draw_Y = [];- s( g) a, o' y0 [ J2 m T
for T=600:5:1600
- h. ~0 a; G7 c( z+ p) Q' ^- u fun = @(n)GibbsEnergy(T,n);
* W' v1 R% `) r5 K/ | x=fmincon(fun,n0,A,B,C,C_i);
3 g. X0 k0 A* m0 `! Z Draw_X = [Draw_X;T];
; c( w5 o. k) V" U8 T5 a" q) r0 U4 Z Draw_Y = [Draw_Y;x(7)-(T/2000)^2];
( q' [; b/ O" E! oend
' @0 @. l* X, i ?8 d9 Zfigure
* `4 t: k* t% E8 Yplot(Draw_X,Draw_Y);$ q3 g! S) C. u3 O `
hold on;
9 } `2 z- S# Rxlabel('T');& x# y$ b6 Q3 ?9 S5 K' K5 W
ylabel('payoff'); |
|