|
9 v* H8 w" Q: r) E" U
在test.m中的循环里面把绘图语句改成. |$ c4 \! t( F* N# K) y9 N& N
plot(T,x(7)-(T/2000)^2,'o'); S& y. { }# i' U d, h+ ^
) ~3 Q2 S. H7 F7 _) X$ N. n
% b0 A! `& P# k9 Y就是了9 `, O/ w. n0 |4 w
因为plot默认是画相邻点之间的直线,但循环每一步只计算出了一个点,不能与相邻的点连接起来,数据点本身没有图示进行绘制,导致看不到整体曲线,使用'o'等命令令其将每一个数据点的图示都绘制出来,就能看见了
+ }6 F& [ e* ^# Y' a$ E5 o# d; m Y O% d1 L& K1 L
更一般的做法是将循环计算的数值存入向量,最后对向量进行绘图
6 T% W" R( c$ z l5 R4 F: T& x9 vDraw_X = []; Draw_Y = [];
* l9 ~- U" g% W% n, nfor T=600:5:1600: x. o/ Y* |7 E0 {; Y/ l
fun = @(n)GibbsEnergy(T,n);
, D7 S% d. m; x* a1 w- W x=fmincon(fun,n0,A,B,C,C_i);
' @( N! T$ P. a/ C: b3 m Draw_X = [Draw_X;T];
: I+ M* x$ {, L+ W- [0 v Draw_Y = [Draw_Y;x(7)-(T/2000)^2];
, G( b: f" m" m9 @/ e. S9 u# Wend/ l% l0 i" h9 w/ a$ h+ L1 r( b9 Q
figure6 Q5 @6 C) S& X" Q
plot(Draw_X,Draw_Y);! K O0 W; P6 v# [, V
hold on;
$ z0 Z+ Z" H. i- n8 O# oxlabel('T');
' h; \% T+ a9 M' A; I/ V$ Tylabel('payoff'); |
|