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

#maxima #wxmaxima

#максимумы #wxmaxima

Вопрос:

Я написал три одновременных уравнения в цикле, который длится 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 ( (Kas*Ms-Ksa*Ma)*dt) F но добавление изменения F обновляется внутри цикла.

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

Ответ №1:

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

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