(Я был бы рад выполнить sh следующее в Python или MATLAB / Octave. Ниже я обрисовал проблему в Python.)
Я хотел бы определить массив 17x8 функций через повторение
if 0<k<16:
f[k,n+1](j) = A(k,j)*f[k-1,n](j) + B(k,j)*f[k+1,n](j)
elif k==0:
f[k,n+1](j) = B(k,j)*f[k+1,n](j)
elif k==16:
f[k,n+1](j) = A(k,j)*f[k-1,n](j)
Функции A(k,j)
и B(k,j)
не индексируются, им не нужен массив. Они не существенны для этой проблемы. Начальные значения для повторения задаются известными значениями
if k==8:
f[k,0](j)=0
else:
f[k,0](j)=1
, которые справедливы для произвольных j
.
Как я могу повторно определить массив функций в 2D-массиве? Я видел примеры , такие как этот , которые создают массив функций с помощью
myFuncs = [f0,f1,f2]
myFuncs[2](...) #calls f2
Однако для этого мне нужно создать и назвать отдельные функции, прежде чем объединять их в массив myFuncs
. Напротив, мне нужно построить эту таблицу, не называя все 136 функций в массиве 17x8. Как я могу выполнить sh это?
РЕДАКТИРОВАТЬ: Чтобы быть явным и продемонстрировать, что можно написать решение как функцию от k, повторяемость, которую я пытаюсь решить, составляет
f[k,n+1](j) = sqrt(j+k-8)*f[k-1,n](j) + sqrt(k+j-7)*f[k+1,n](j)
Используя известные значения для n=0
, я могу получить следующее для n = 1:
f[9,1](j) = sqrt(j+1)
f[7,1](j) = sqrt(j)
с остальными равными нулю, а затем для n=2
f[10,2](j) = sqrt((j+1)*(j+2))
f[8,2](j) = 2*j+1
f[6,2](j) = sqrt(j*(j-1))
с остальными нулями. Однако выполнение этого вручную чревато ошибками, и я хотел бы обобщить это, потому что есть еще два повторения, для которых я буду sh вычислять все эти функции.