0

我已经在一个循环中编写了三个联立方程,每年一个步骤持续 260 年,现在我需要在循环中的一个方程中添加另一个值。我将这些值作为列表导入,并且它们每年都在变化。当每个步骤的值不同时,我不确定我需要编写什么代码来添加列表的值。

t:1751$
Ma:590$
Ms:900$
Md:37100$
Kas:0.078111$
Ksa:0.119153$
Ksd:0.002577$
Kds:0.106222$
dt:1$
tmax:2010$
Mapts:[[t,Ma]]$
Mspts:[[t,Ms]]$
Mdpts:[[t,Md]]$
while t<tmax-dt/2 do
(
t: t+dt,
Ma: Ma +(Kas*Ms-Ksa*Ma)*dt,
Ms: Ms + ((Ksd*Md-Kds*Ms)+(Ksa*Ma-Kas*Ms))*dt,
Md: Md + (Kds*Ms-Ksd*Md)*dt,
Mapts: append(Mapts, [[t,Ma]]),
Mspts: append (Mspts, [[t,Ms]]),
Mdpts: append (Mdpts, [[t,Md]])  
    )$
Mapts;

我有一个从 1751 到 2010 的值 (F) 列表,需要将其添加到等式 Ma 中,因此Ma: Ma + ( (Kas*Ms-Ksa*Ma)*dt) + F添加的变化 F 会在循环内更新。

从 1751 年到 2010 年,输出应该显示 Ma 的值每年都在增加

4

1 回答 1

1

我看到Mapts结果是这样的[[1751, ...], [1752, ...], ..., [2010, ...]]。您说您有一个F从 1751 到 2010 的值列表。鉴于此,您可以添加F如下内容Mapts

map (lambda ([pt, x], [pt[1], pt[2] + x]), Mapts, F);
于 2019-05-14T23:23:53.607 回答