Как вставить список в ODE:

Если вы устанавливаете расширение intarray, это становится довольно простым:

select id, prods, cardinality(string_to_array(trim(prods, ','), ',')::int[] & array[142,87])
from bad_design;

В противном случае это немного сложнее:

select bd.id, bd.prods, m.matches
from bad_design bd
  join lateral (
    select bd.id, count(v.p) as matches
    from unnest(string_to_array(trim(bd.prods, ','), ',')) as l(p)
      left join ( 
         values ('142'),('87')  --<< these are your input values
      ) v(p) on l.p = v.p
    group by bd.id
  ) m on m.id = bd.id
order by bd.id;

Пример в Интернете: http: //rextester.com/ZIYS97736

Но вы действительно должны исправить свою модель данных.

0
задан Patrick Artner 19 January 2019 в 11:19
поделиться

1 ответ

Лучший способ - решить связанную систему, то есть интегрировать DE для f одновременно с текущей DE. Если это вариант вашей предыдущей задачи по математике. SE, то такой совместный подход неизбежен.

Что касается буквального решения, используйте интерполяцию

def f(x): return numpy.interp(x, x_samples, f_samples)

и затем вызовите эту функцию в функции ODE

def y_ODE(x,y): return [y[1], -0.5*f(x)*y[1]]
0
ответ дан LutzL 19 January 2019 в 11:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: