|
|
! e$ a+ A- D% n" p; ?
在test.m中的循环里面把绘图语句改成
4 V! Q0 u7 B6 {& n _plot(T,x(7)-(T/2000)^2,'o');; B$ l! L' m5 r, v3 W2 k
+ L0 k5 X& y5 y: ?$ `4 f
+ r: n. I, D$ b# |
就是了
* _6 {5 X; N. B# `1 t4 I因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了
; g* ~" t* P+ H+ F8 N# a; G4 H
0 R5 ~/ D$ n: x8 K7 b/ X更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图
5 u x+ N1 S8 T& A$ U8 f6 k! UDraw_X = []; Draw_Y = [];/ g# G, X7 P5 ^6 F
for T=600:5:1600
/ c8 `4 C1 K$ x% {; W4 L% A+ C fun = @(n)GibbsEnergy(T,n);
1 r; t$ t( r+ S$ f x=fmincon(fun,n0,A,B,C,C_i);- T; ^, P6 | L+ C" c! A
Draw_X = [Draw_X;T];; U, `! O, J8 `6 X
Draw_Y = [Draw_Y;x(7)-(T/2000)^2];
' V9 f6 C. q2 h* T. e! Bend7 n! N, N' R1 D- v
figure& ~8 M. D8 k# R
plot(Draw_X,Draw_Y);: ~/ J) j0 M1 V$ u3 _3 A
hold on;
/ b1 X0 @% R, gxlabel('T');
) H" s& @" L& z% _. `ylabel('payoff'); |
|