Вставка списка в циклическое уравнение на Maxima

Я написал три одновременных уравнения в цикле, который проходит один шаг каждый год в течение 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 обновляется в цикле.

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


person Dani    schedule 25.04.2019    source источник


Ответы (1)


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

map (lambda ([pt, x], [pt[1], pt[2] + x]), Mapts, F);
person Robert Dodier    schedule 14.05.2019