|
+ I. R0 y+ `1 t
在test.m中的循环里面把绘图语句改成
) g; e7 T6 f. X yplot(T,x(7)-(T/2000)^2,'o');$ _3 a) p9 j J9 e. c' E- [
! _$ n2 H5 h& o- q- R' K. g% A$ G u5 y
就是了, E4 v* T* a) I7 D! w. I3 s t
因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了* V. F7 p7 N4 H9 e
% C' L9 k) M! U& S3 A更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图* J! d4 O* P) q) f
Draw_X = []; Draw_Y = [];
5 p; w# @0 G( Rfor T=600:5:1600
! U9 P3 h3 t% E Y2 l* p# R fun = @(n)GibbsEnergy(T,n);/ {- b! N& S& D) ?4 T; G
x=fmincon(fun,n0,A,B,C,C_i);! e0 [# S6 c. {7 ]3 s; i. A7 S
Draw_X = [Draw_X;T];$ j7 }5 s; b5 i1 i& V8 U8 X
Draw_Y = [Draw_Y;x(7)-(T/2000)^2];; b0 S" { d8 z2 q: p9 `. U
end; m2 F+ r, y+ T2 h' ?5 K9 J
figure" Y1 t0 Z7 O* M
plot(Draw_X,Draw_Y);
; [* Z1 s% W2 Dhold on;7 p" Z4 w u8 f; U" [2 i- i2 s' ?, x1 H9 m
xlabel('T');' Q7 ` c: S3 n
ylabel('payoff'); |
|