Вставка списка в уравнение цикла в Maxima - PullRequest
0 голосов
/ 25 апреля 2019

Я написал три уравнения в цикле, который продолжается 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;

У меня есть список значений (F) с 1751 по 2010, и мне нужно добавить это в уравнение Ma, так что Ma: Ma + ( (Kas*Ms-Ksa*Ma)*dt) + F, но добавление изменения F обновляется в цикле.

Выходные данные должны показывать возрастающее значение Ma каждый год в период с 1751 по 2010 год

1 Ответ

1 голос
/ 15 мая 2019

Я вижу, что Mapts оказывается чем-то вроде [[1751, ...], [1752, ...], ..., [2010, ...]].Вы говорите, что у вас есть список значений F от 1751 до 2010. Учитывая это, вы можете добавить F к Mapts примерно так:

map (lambda ([pt, x], [pt[1], pt[2] + x]), Mapts, F);
...