|
|
$ N, F2 r+ X. C+ f# I3 j在test.m中的循环里面把绘图语句改成
4 Y7 j- A7 ]6 v" H) _( Iplot(T,x(7)-(T/2000)^2,'o');6 Y$ v- t; T# L7 k3 x6 S
. x7 e( }0 `+ |2 G2 e5 E3 Z; ~7 b4 O: m& z, e3 ^, I; r
就是了
5 b; t/ s' A, F6 C因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了7 a& B' G2 K* b7 [& T" o
0 N# r5 m6 w( _! ]0 b, v1 P9 z0 y
更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图
7 M4 G K. b* y( y6 ]4 H" KDraw_X = []; Draw_Y = [];
9 |0 I: J" E3 T; d: Cfor T=600:5:1600: [3 k/ T' g- C( T7 R) V- p, I: p4 s
fun = @(n)GibbsEnergy(T,n);
, b! A8 d; {/ \1 J4 A6 k" j x=fmincon(fun,n0,A,B,C,C_i);
! U' z9 n; A6 t2 [$ d1 Y Draw_X = [Draw_X;T];1 r1 A1 w2 @' Y( i7 @9 Q
Draw_Y = [Draw_Y;x(7)-(T/2000)^2];
% G4 n( a P9 V$ Gend2 s" a4 A% L, q3 V$ T# p$ ~
figure
3 j% g. k9 e1 [5 s- uplot(Draw_X,Draw_Y);
, y: p# g$ g8 v+ e. D' |hold on;
( y) v( d' ]8 u$ z) Vxlabel('T');- m- R/ i. J1 ^% v7 y4 L8 d9 w
ylabel('payoff'); |
|