Densidad atmosférica de ajuste de curva


1

Estoy tratando de hacer un código para predecir el rendimiento de un cohete sonoro que quiero construir. Para hacer esto, necesito la densidad atmosférica en cualquier punto del vuelo para la simulación de paso de tiempo que realicé.

Obtuve mi densidad atmosférica en slug / ft ^ 3 de https://www.engineeringtoolbox.com/standard-atmosphere-d_604.html y ponga todos esos datos en este script de python, bajo el supuesto de que la función que mejor describa estos datos sería una exponencial negativa.

from scipy import optimize

import numpy as np
import matplotlib.pyplot as plt



def fxn(x, a, b, c):
    return a*np.exp(-b*x) + c

altitudes = np.array([0,5000,10000,15000,20000,25000,30000,35000,40000,45000,50000,60000,70000,80000,90000,100000,150000,200000,250000])

density1 = np.array([23.8,20.48,17.56,14.96,12.67,10.66,8.91,7.38,5.87,4.62,3.64,2.26,1.39,.86,.56,.33,.037,.0053,.00065])

altitudeLinSpace = np.linspace(0,500000,500000)

#Popt returns a array containing constants a,b,c... etc for function 'fxn'
popt, pcov = optimize.curve_fit(fxn, altitudes, density1, p0=(1, 1e-6, 1))

print(popt)


#Plots data
plt.grid(True)
plt.ylim((0,25))
plt.plot(altitudes, density1)
plt.plot(altitudeLinSpace, fxn(altitudeLinSpace, popt[0], popt[1], popt[2]))
plt.show()

Lo que me da este gráfico cuando graficar la solución (Altitud ft (x), densidad en slug / ft ^ 3 * 10 ^ -4 (y)): Altitude(x), density in slug/ft^3 * 10^-4 (y)

La curva naranja es lo que Python encontró como solución, el azul es el gráfico de los datos que utilicé para el ajuste de curvas. Debido al mal ajuste, supongo que los datos no son en realidad un exponencial negativo, pero no estoy realmente seguro de cómo determinar el tipo de función que podría ser ...

No estoy buscando la perfección, pero usar un polinomio no es una solución ideal aquí, ya que las "ondulaciones" dan demasiado error a mayores altitudes.

Cualquier sugerencia sobre cómo podría encajar mejor estos datos sería muy apreciada!

Solución de Math SE: https://math.stackexchange.com/questions/3009560/curve-fitting-atmosphere


¿Seguramente el exponencial es negativo ya que las y se están reduciendo a medida que aumenta x?
Solar Mike

@solarMike, bueno ese fue mi primer pensamiento, pero es claramente más complejo que eso ... tal vez 1 / x debería estar ahí en algún lugar?
WhisperingShiba

1
Entonces, ponga los datos en Excel y obtenga la ecuación de la línea que sugiere ...
Solar Mike

@solarMike, todas las opciones en Excel se ajustan a los datos. Lo mejor es un polinomio de 5º orden, que no es lo suficientemente bueno para la precisión que necesito. Lo primero que hice cuando obtuve esta información fue ponerla en excelente.
WhisperingShiba

1
El modelo más simple es de hecho exponencial, pero la atmósfera real es más compleja, con una densidad que varía mucho con la temperatura (además de la presión), y la temperatura con la altitud de una manera que es ... un tema de estudios avanzados. Varias capas de atmósfera que difieren en sus propiedades. mucho .
SF.

Respuestas:


2

Aquí están ajustando los resultados con la ecuación mostrada.

Plot with fitting results

Cualquier mayor precisión requiere un modelo más allá de este ajuste semi-empírico muy crudo. Preste atención a los límites de confianza (1 $ \ sigma $ valores). Para el primer orden, se pueden propagar a través de su ecuación de predicción utilizando un análisis de incertidumbre lineal. Esto puede ayudarlo a decidir si se necesita un esfuerzo adicional para ser más preciso, por ejemplo, dividiendo las regiones de presión y / o obteniendo datos de mayor resolución (más puntos de datos en el rango completo o deseado).


La solución que elegí bajo el consejo de Math Stack Exchange es muy similar a su ajuste, excepto que -Bt ^ n es la suma de varios términos -B_i t ^ n _i. Para una mejor precisión. Gracias por esta solución!
WhisperingShiba

@WhisperingShiba Por favor, publique la solución que obtuvo y / o un enlace al intercambio de pila matemática donde hizo referencia.
Jeffrey J Weimer

Los múltiples términos probablemente reflejan las diferentes especies que conforman la atmósfera.
Phil Sweet

@PhilSweet Los términos múltiples son simplemente empíricos "pegue su pulgar hacia arriba y el globo ocular" parámetros. El mayor énfasis aquí se debe colocar en la regresión no lineal para obtener ambos parámetros de ajuste empíricos y sus límites de confianza . Cuando el OP está haciendo una predicción seria, puede y debe incluir un manejo adecuado de las incertidumbres que se mencionan aquí.
Jeffrey J Weimer

2

En lugar de una curva de ajuste, ¿por qué no hacer una interpolación de los datos? La interpolación spline cúbica debe dar suficiente precisión. Mira scipy.interpolate


2

La densidad varía exponencialmente, pero a la velocidad depende no solo de la altitud sino también de la temperatura.

enter image description here fuente

enter image description here fuente

Si desea un ajuste más preciso, tendrá que dividirlo en capas atmosféricas:

  • Troposfera: 0 a 12 km (0 a 7 millas)
  • Estratosfera: 12 a 50 km (7 a 31 millas)
  • Mesosfera: 50 a 80 km (31 a 50 millas)
  • Termosfera: 80 a 700 km (50 a 440 millas)
  • Exosfera: 700 a 10,000 km (440 a 6,200 millas)

y ajuste el exponente en cada uno de estos, posiblemente introduciendo umbrales adicionales para la estratosfera (a 20 km y 35 km), una spline creada de curvas exponenciales. Tratar de encontrar una función simple y única que se ajuste a la realidad con este tipo de complejidad es un intento equivocado.


La elección también depende de la precisión deseada frente a la precisión de los datos. La dispersión en las distancias en el archivo de datos puede no tener la resolución suficiente para permitir que el ajuste se realice en varias capas. En esencia, ajustar dos puntos de datos a un exponencial es erróneo. Alternativamente, el deseo de una ecuación analítica rápida y sucia en todo el rango que tenga definiciones claras de los límites de confianza puede anular la necesidad de hacer ajuste de capa por capa para mayor precisión. Este último enfoque es ciertamente erróneo cuando los límites de confianza se ignoran posteriormente.
Jeffrey J Weimer

Bonito gráfico. ¿Puedes hacer referencia a la URL donde la obtuviste? Además, ¿hay un equivalente que muestre presión?
Jeffrey J Weimer

@JeffreyJWeimer: Editado estos en. Es bastante difícil encontrar gráficos que se extiendan más allá de ~ 80-100km con la escala de registro, lo cual es esencial para que el gráfico sea de uso real. Si encuentras uno, házmelo saber.
SF.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.