Привет, StackOverflow.
Допустим, у меня есть два следующих рекуррентных соотношения для вычислений S (i, j)
Я хотел бы вычислить значения S (0,0) , S (0,1) , S (1,0) , S (2,0) и т. Д. ... асимптотически оптимальным образом.Несколько минут с карандашом и бумагой показывают, что он разворачивается в древовидную структуру, которую можно пересечь несколькими способами.Теперь маловероятно, что дерево будет полезно позже, поэтому сейчас я собираюсь создать вложенный список, например [[S(00)],[S(10),S(01)],[S(20),S(21),S(12),S(02)],...]
.Я создал функцию для создания плоского списка S (i, 0) (или S (0, j) , в зависимости от первого аргумента):
osrr xpa p predexp = os00 : os00 * (xpa + rp) : zipWith3 osrr' [1..] (tail osrr) osrr
where
osrr' n a b = xpa * a + rp * n * b
os00 = sqrt (pi/p) * predexp
rp = recip (2*p)
Я, однако, в растерянности, что делать дальше.