2 votos

Interpolación de spline cúbico derivado parcial hasta el punto

Todavía no logro entender esto, así que estoy buscando algo de ayuda, se agradece la ayuda.

En este blog https://blog.timodenk.com/cubic-spline-interpolation/index.html, se implementa la interpolación de spline cúbico por partes, y el valor interpolado es el esperado, no hay problema.

El problema es que necesito calcular las derivadas parciales con respecto a los dos valores de $z$ más cercanos, por ejemplo, el punto interpolado es $(t, z)$, y el punto izquierdo es $(t_1, z_1)$ y el punto derecho es $(t_2, z_2)$, necesito calcular $\frac{\partial z}{\partial z_1}$ y $\frac{\partial z}{\partial z_2}$, y aquí están mis pasos:

Hay $n+1$ puntos de datos $(t_i, z_i), for \ i = 1, 2, ..., n+1$.

Hay $n$ ecuaciones polinómicas cúbicas para cada intervalo $[t_i, t_{i+1}], for \ i = 1, 2, ..., n$.

$z_i = a_i * t_i^3 + b_i * t_i^2 + c_i * t_i + d_i, for \ i = 1, 2, ..., n$

$z_{i+1} = a_i * t_{i+1}^3 + b_i * t_{i+1}^2 + c_i * t_{i+1} + d_i, for \ i = 1, 2, ..., n$

también, $z = a_i * t^3 + b_i * t^2 + c_i * t + d_i, t \in [t_i, t_{i+1}], for \ i = 1, 2, ..., n$

Por la regla de la cadena,

$\frac{\partial z}{\partial z_i} = \frac{\partial z}{\partial a_i} * \frac{\partial a_i}{\partial z_i} + \frac{\partial z}{\partial b_i} * \frac{\partial b_i}{\partial z_i} + \frac{\partial z}{\partial c_i} * \frac{\partial c_i}{\partial z_i} + \frac{\partial z}{\partial d_i} * \frac{\partial d_i}{\partial z_i} = t^3 / t_i^3 + t^2 / t_i^2 + t / t_i + 1$

$\frac{\partial z}{\partial z_{i+1}} = \frac{\partial z}{\partial a_i} * \frac{\partial a_i}{\partial z_{i+1}} + \frac{\partial z}{\partial b_i} * \frac{\partial b_i}{\partial z_{i+1}} + \frac{\partial z}{\partial c_i} * \frac{\partial c_i}{\partial z_{i+1}} + \frac{\partial z}{\partial d_i} * \frac{\partial d_i}{\partial z_{i+1}} = t^3 / t_{i+1}^3 + t^2 / t_{i+1}^2 + t / t_{i+1} + 1$

Pero el resultado está muy lejos de ser correcto, en comparación con la interpolación lineal en cero, así que aún estoy tratando de averiguar dónde está el error...

En cuanto a por qué calcular estas derivadas parciales, es porque la sensibilidad se puede usar para calcular DV01 más tarde, así que primero se supone que se deben calcular estas derivadas parciales.

2voto

dotnetcoder Puntos 1262

Al resolver los coeficientes de una spline, estás resolviendo una ecuación de colocación (sistema lineal).

En tu caso, estás resolviendo la ecuación,

$$ \mathbf{A(t) c} = \mathbf{\hat{z}} \quad \implies \quad \mathbf{c} = \mathbf{A(t)^{-1}\hat{z}} $$

donde en este caso, $\mathbf{\hat{z}} = [\mathbf{z}, \mathbf{v}]$, es un vector compuesto por los valores $z_i$ del sitio de datos y algunas restricciones adicionales de continuidad y puntos finales, $v_i$ añadidos al sistema lineal. Aquí $\mathbf{c}$ es un vector de los coeficientes de la spline, es decir, $[a_1, b_1, c_1, d_1, a_2, b_2, ..]$

Si tomas un valor arbitrario de t, $t^*$, esto tendrá un valor de spline asociado, $z^*$, de acuerdo a:

$$ z^* = \mathbf{a}(t^*)^\mathbf{T} \mathbf{c} $$

donde los valores $a_i$ dependen del valor de $t^*$ y entre qué puntos de quiebre se encuentra el valor.

Las derivadas parciales con respecto a $\mathbf{\hat{z}}$ (que contiene los sitios de datos) son:

$$ \frac{ \partial z^*}{\partial \mathbf{\hat{z}}} = \mathbf{a}(t^*)^\mathbf{T} \frac{\partial \mathbf{c}}{\partial\mathbf{\hat{z}} } = \mathbf{a}(t^*)^\mathbf{T} \mathbf{A(t)^{-1}} $$

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X