1

我有以下功能:

P[t_] := P[t] = P[t-1] +a*ED[t-1];
ED[t_] := ED[t] = DF[t] + DC[t];
DF[t_] := DF[t] = b (F - P[t]);
DC[t_] := DC[t] = c (P[t] - F);

以及以下参数:

a=1;
c=0.2;
b = 0.75;
F=100;

在 Mathematica 中,我使用函数“ListLinePlot”来绘制 P[t] 和 F:

ListLinePlot[{Table[P[t], {t, 0, 25}], Table[F, {t, 0, 25}]}, PlotStyle → {Black, Red},Frame → True, FrameLabel → {"time", "price"}, AspectRatio → 0.4, PlotRange → All]

我怎样才能在 wxMaxima 中做到这一点?ListLinePlot 是否有类似的功能或替代方案?

这是我在 wxMaxima 中的尝试:

P[t] := P[t-1] + a * ED[t-1];
ED[t] := DF[t] + DC[t];
DF[t] := b*[F-P[t]];
DC[t] := c*[P[t]-F];

a=1;
c=0.2;
b=0.75;
F=100;

然后我尝试了:

draw2d(points(P[t], [t,0,25]))

绘制的函数应如下所示: 在此处输入图像描述

4

1 回答 1

1

好的,我已经修改了您上面显示的代码。这对我有用。我在 macOS 上使用 Maxima 5.44。

P[t] := P[t-1] + a * ED[t-1];
ED[t] := DF[t] + DC[t];
DF[t] := b*(F-P[t]);
DC[t] := c*(P[t]-F);

a:1;
c:0.2;
b:0.75;
F:100;
P[0]: F + 1;

Pt_list: makelist (P[t], t, 0, 25);

load (draw);
set_draw_defaults (terminal = qt);
draw2d (points_joined = true, points(Pt_list));

笔记。(1) 上的递归需要有一个基本情况P。我把P[0]: F + 1. (2) 作业:代替=。请注意,这x = y是一个符号方程,而不是一个赋值。(3) 方括号[ ]仅用于下标和列表。使用括号( )对表达式进行分组。(4) for 的语法draw2d有点不同,我修好了。(我设置了默认值,terminal因为 macOS 上 Maxima 的内置值不正确;如果您使用的是 Linux 或 Windows,则可以省略它。)

编辑:试试这个也画一条水平线。

draw2d (points_joined = true, points(Pt_list),
        color = red, points([[0, F], [25, F]]), 
        yrange = [F - 1, P[0] + 1]);
于 2020-12-29T00:50:36.530 回答