(Una especie de alma en la física.stackexchange sugirió que he puesto aquí, así, lo siento si fuera de los límites.)
Estoy tratando de programación modelo de un armónico amortiguado de la primavera para el uso en el móvil de interfaz de usuario animaciones (la física matemática no es mi fondo, por favor, perdone cualquier malentendido).
Deriva de los parámetros para el caso general de la ecuación, puedo de forma iterativa calcular los valores hasta alcanzar un umbral adecuado, porque aunque esto está vinculado a una "simple" trigonométricas y $e^{x}$ funciones de la CPU, el 4000-algunos-impar pasos pueden causar alrededor de 0,25 segundos de retraso en la lentitud de los dispositivos, mientras que se calcula. Me gustaría velocidad esta usando mi plataforma super optimizado vector y BLAS/LAPACK variantes.
El requisito para ello es siempre puede calcular previamente el número de pasos necesarios para llegar a mi umbral de valor.
En el underdamped caso, donde las raíces de la función característica de la ecuación diferencial no son reales, puedo usar algebraicas trucos para conseguir mis valores:
$$x(t) = c_{1}e^{r_{1}}\cos(i_{1}t) + c_{2}e^{r_{2}}\sin(i_{2}t)$$
(Dado $r_{1}$, $i_{1}$, $r_{2}$, y $i_{2}$ son los reales y los componentes irracionales de mis dos raíces, respectivamente).
Sabiendo que $r_{1} = r_{2}$$i_{1} = -i_{2}$, me puede simplificar a:
$$x(t) = c_{1}e^{r_{1}}\cos(i_{1}t)$$
Conseguir el valor deseado de $t$ para mi umbral de $a$:
$$t = \arccos(a / c_{1} / e^{r_{1}}) / i_{1}$$
Cuando las raíces son reales, la ecuación parece mucho más sencillo:
$$x(t) = c_{1}e^{r_{1}} + c_{2}e^{r_{2}}$$
Sin embargo, no tengo mis funciones trigonométricas flotando alrededor que me ayude a resolverlo (aunque yo lo hice, los componentes irracionales 0 causaría problemas, por supuesto).
Tome el ejemplo concreto en las páginas 3 y 4 de este documento (mi biblia durante este proceso), ya que al menos resolver limpiamente:
$$x(t) = 1.5e^{-t} - 0.5e^{-3t}$$
Sé cómo iba a resolver por $t$ para obtener mi para al $x(t) = a$ sobre el papel, mediante el establecimiento $x=e^{t}$, resolución de problemas, y de nuevo sustituyendo, pero no tengo ese lujo aquí.
Puedo hacer algunas suposiciones: las raíces y las constantes son todos los reales. Estoy siempre va a estar buscando para los más pequeños, en primer lugar, el valor positivo de $t$. Obviamente, el proceso iterativo de solución es la más simple para este caso, pero al final lo que entraña más pasos y por lo tanto ser más lento no importa lo que mis otras optimizaciones sería. Entonces, ¿cómo se podría ir sobre la solución para que mi umbral de valor a través de algoritmos en esta (supuestamente) simplificado caso?
Anexo
El underdamped solución presenta un extra de exigencia. El movimiento de la curva de oscilará de ida y vuelta un par de veces a través de la estación. Por lo tanto, "el primero y el más bajo" $t$ requisito no es necesariamente cierto. En mi actual iterativo en el código, el valor de umbral es tanto comprueba con la distancia de la actual $x(t)$ hasta el extremo, así como a la distancia de la anterior $x(t)$ como para permitir un número de oscilaciones. Esto podría hacer más eficientes de solución casi imposible.