Частичные производные

Я пытаюсь написать алгоритм, который будет выполнять N-мерные смешанные частичные производные. У меня есть представление о том, что мне нужно иметь возможность достичь, но я не могу повлиять на правильные петли / рекурсию, которые требуются для реализации N-мерного случая .

Вот шаблон для первых 4 измерений:

| 1D  wzyx  | 2D           | 3D           | 4D           |
----------------------------------------------------------
| dx (0001) | dx    (0001) | dx    (0001) | dx    (0001) |
|           | dy    (0010) | dy    (0010) | dy    (0010) |
|           | dyx   (0011) | dyx   (0011) | dyx   (0011) |
|           |              | dz    (0100) | dz    (0100) |
|           |              | dzx   (0101) | dzx   (0101) |
|           |              | dzy   (0110) | dzy   (0110) |
|           |              | dzyx  (0111) | dzyx  (0111) |
|           |              |              | dw    (1000) |
|           |              |              | dwx   (1001) |
|           |              |              | dwy   (1010) |
|           |              |              | dwyx  (1011) |
|           |              |              | dwz   (1100) |
|           |              |              | dwzx  (1101) |
|           |              |              | dwzy  (1110) |
|           |              |              | dxyzw (1111) |

Количество производных для каждого измерения (поскольку это следует за двоичным шаблоном) (2 ^ dim) -1; E.G., 2 ^ 3 = 8 - 1 = 7.

Производное DYX - это значение DX соседних точек в размере Y. Это верно для всех смешанных частиц. Так что DZYX DYX от соседних точек в размере Z. Я не уверен, что этот пункт имеет отношение к вопросу, просто подумал, что я поставил здесь для полноты.

Любая помощь указателей по указаниям приветствуются. Часть жирным шрифтом - это часть, которую мне нужно реализовать.

:: Редактировать ::

Я собираюсь попытаться быть немного более явным, предоставляя пример того, что мне нужно. Это только 2D-случай, но оно иллюстрирует весь процесс, который я думаю.

Мне нужна помощь с алгоритмом, который генерирует значения в столбцах DX, DY, DYX, ET. al.

|  X  |  Y  | f(x, y) |  dx             |  dy       | dyx               |
-------------------------------------------------------------------------
|  0  |  0  |    4    |  (3-4)/2 = -0.5 |  (3-4)/2  | (-0.5 - (-2.0))/2 |
|  1  |  0  |    3    |  (0-4)/2 = -2.0 |  (2-3)/2  | (-2.0 - (-2.0))/2 |
|  2  |  0  |    0    |  (0-3)/2 = -1.5 | (-1-0)/2  | (-1.5 - (-1.5))/2 |
|  0  |  1  |    3    |  (2-3)/2 = -0.5 |  (0-4)/2  | (-0.5 - (-0.5))/2 |
|  1  |  1  |    2    | (-1-3)/2 = -2.0 | (-1-3)/2  | (-1.5 - (-2.0))/2 |
|  2  |  1  |   -1    | (-1-2)/2 = -1.5 | (-4-0)/2  | (-1.5 - (-1.5))/2 |
|  0  |  2  |    0    | (-1-0)/2 = -0.5 |  (0-3)/2  | (-0.5 - (-0.5))/2 |
|  1  |  2  |   -1    | (-4-0)/2 = -2.0 | (-1-2)/2  | (-2.0 - (-2.0))/2 |
|  2  |  2  |   -4    |(-4--1)/2 = -1.5 |(-4--1)/2  | (-1.5 - (-1.5))/2 |

f (x, y) неизвестен, известны только его значения; Таким образом, аналитическая дифференциация бесполезна, оно должно быть только числовым.

Любая помощь указателей по указаниям приветствуются. Часть жирным шрифтом - это часть, которую мне нужно реализовать.

:: Редактировать - Опять же ::

Начал цик здесь: https://gist.github.com/1195522

12
задан Ryan 5 September 2011 в 17:31
поделиться