Loading [MathJax]/jax/element/mml/optable/GeneralPunctuation.js

1 votos

Práctica de interpolación por splines cúbicos

Repasando problemas de práctica para nuestro examen final. Estoy atascado en un problema que implica splines cúbicos. De hecho, ni siquiera sé por dónde empezar.

Necesito encontrar la spline cúbica natural S(t) en t0=0,t1=1,t2=2,t3=3 donde S(t0)=0S(t1)=2S(t2)=1S(t3)=0

Como ha señalado @ja72, hay 3 intervalos, por lo tanto 3 splines. Hay condiciones que imponemos a estos splines para que obtengamos la curva deseada.

S1(t0)=0S1(t1)=2S2(t2)=1S3(t3)=0S1(t1)=S2(t1)S2(t2)=S3(t2)S1(t1)=S2(t1)S2(t2)=S3(t2)S1

Ahora, puedo introducir la t_j y S_i(t_j) valores directamente en estas 12 ecuaciones y debe terminar con un sistema lineal, 12 coeficientes (4 de cada spline).

Así que seguí adelante y conecté todos los t en las ecuaciones de las condiciones. Me quedaba una matriz de 12 x 12. Utilicé MatLab para resolver el sistema y obtuve los coeficientes que @ja72 obtuvo en su solución final. Mi profesor dijo que tendríamos que resolver las matrices a mano. ¿Cuál es la mejor manera de resolver una matriz de 12 x 12 de esta forma?

3voto

Sergio del Amo Puntos 390

Típicamente se da un spline cúbico para un conjunto de puntos tal que para cada intervalo se ajusta una función cúbica a los puntos, con pendientes y curvatura coincidentes, así como los puntos finales tienen curvatura cero (2ª derivada). Esta es la definición de un spline natural.

En tu caso tienes 4 puntos y 3 intervalos. El número de incógnitas es 12, ya que por cada intervalo hay 4 incógnitas (la parte cúbica).

Sus limitaciones son:

  • Puntos en nodos dados (4 ecuaciones)
  • Los puntos finales del intervalo coinciden (2 ecuaciones)
  • Coincidencia de las pendientes finales de los intervalos (2 ecuaciones)
  • Coincidencia de curvatura final de intervalo (2 ecuaciones)
  • Punto final cuvatura cero (2 ecuaciones)

En total tienes 12 ecuaciones con 12 incógnitas.

Véase http://www.physics.utah.edu/~detar/phys6720/handouts/cubic_spline/cubic_spline/node1.html para más detalles. También wikipedia tiene un buen artículo.

Para su caso la solución es

y(x)=\begin{cases} \frac{2x(7-2x^{2})}{5} & x=0\ldots1\\ \frac{5x^{3}-27x^{2}+41x-9}{5} & x=1\ldots2\\ \frac{-x^{3}+9x^{2}-31x+39}{5} & x=2\ldots3 \end{cases}

Detalles

Para encontrar los splines, para cada intervalo tienes una función como

y_i(x) = y_i + B_i (x-x_i) + C_i (x-x_i)^2 + D_i (x-x_i)^3

donde (x_i,y_i) son los pares de coordenadas la spline. En realidad, si defines el siguiente par como (x_i+h,y_{i+1}) donde h=x_{i+1}-x_i entonces

y_i(x) = y_i + \frac{y_{i+1}-y_i}{h} (x-x_i) + C_i (x-x_i) (x-x_i-h) + D_i (x-x_i) \left((x-x_i)^2-h^2\right) que por supuesto tiene y(x_{i+1}=x_i+h) = y_{i+1}

Esto conduce a las expresiones

y'(x) = \frac{y_{i+1}-y_i}{h} + C_i \left( 2 (x-x_i)-h\right) +D_i \left( 3 (x-x_i)^2-h^2 \right) \\ y''(x) = 2 C_i + 6 D_i (x-x_i)

Ahora, en los extremos del i th intervalo

\begin{aligned} {y'}_i & = \frac{y_{i+1}-y_i}{h} - C_i h - D_i h^2 & {y'}_{i+1} &= \frac{y_{i+1}-y_i}{h} + C_i h + 2 D_i h^2 \\ {y''}_i & = 2 C_i & {y''}_{i+1} & = 2 C_i + 6 D_i h \end{aligned}

Nuestras curvas ya pasan por los puntos, y hay que desarrollar restricciones de continuidad.

Una spline natural tiene el primer y el último punto con curvatura cero. Si hay n+1 puntos, con n intervalos, entonces los puntos extremos tienen

\begin{aligned} 2 C_1 & = 0 & 2 C_n + 6 D_n h & = 0 \end{aligned}

Entre cada intervalo con i=2\ldots n la pendiente y la curvatura coinciden

\begin{aligned} \frac{y_i-y_{i-1}}{h} + C_{i-1} h + 2 D_{i-1} h^2 &= \frac{y_{i+1}-y_i}{h} - C_i h - D_i h^2 \\ 2 C_{i-1} + 6 D_{i-1} h & = 2 C_i \end{aligned}

Se trata de 2 + 2 (n-1) = 2 n ecuaciones y hay n incógnitas de C_i y n incógnitas de D_i para un total de 2n desconocidos. El problema está bien definido en este punto y se puede resolver. Por favor, que alguien revise mis cálculos porque puede que me haya equivocado en alguna parte.

NOTA: He supuesto un intervalo constante con h = x_{i}-x_{i-1} pero también puede adaptarse a una rejilla variable.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X