我已经在一个循环中编写了三个联立方程,每年要进行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 so Ma: Ma + ( (Kas*Ms-Ksa*Ma)*dt) + F
中,但是在循环内更新变化的F的值。
在1751年至2010年之间,Ma的输出值应该每年递增
答案 0 :(得分:1)
我发现Mapts
类似于[[1751, ...], [1752, ...], ..., [2010, ...]]
。您说您有一个F
的值列表,从1751年到2010年。鉴于此,您可以将F
添加到Mapts
如下:
map (lambda ([pt, x], [pt[1], pt[2] + x]), Mapts, F);