Tengo la ecuación

 y = a + b Exp[-x/c] data = {{462.36, 8872}, {408.18, 8780}, {374.4, 8915}, {322.8, 8937}, {274.00, 8919}, {243.03, 911‌4}, {209.32, 9277}, {178.91, 9394}, {140.71, 9508}, {113.08, 9592}}; nlm = FindFit[data, y = a + b Exp[-x/c], {{a, 100}, {b, 100}, {c, 10}}, x] Show[ ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}], Plot[y/. nlm, {x, 1, 600}]] 

Lo anterior es cómo actualmente tengo todo funcionando y graficar.

Actualización

De hecho, tengo casi todo funcionando. Tengo la línea bieing drwan el único problema que tengo es que los primeros 2 puntos de datos y el comienzo de la línea que se dibuja actualmente comienza antes del eje y en el gráfico, por lo que si miras el gráfico, está sesgado hacia la izquierda. Estoy tratando de entender qué valor tendré que cambiar para mover esto hacia la derecha y estoy luchando un poco. cualquier ayuda será apreciada.

¿Cómo puedo ingresar eso en la función FindFit?

FindFit[data, model, parms]; 

Tengo mis datos, pero no puedo entender cómo ingresarlos en model y params correctamente. Este es el eqaution que se me dio para los datos y simplemente no sé cómo ingresarlos o mostrar que va a ser una curva exponencial.

Comentarios

  • Ok, aquí está mi pregunta: ' tengo todo funcionando en su mayor parte. Lo único que tengo un problema es que el eje X comienza en 150 y mi primer punto está en 113. Ves el problema, se traza detrás del eje y. Entonces, ¿hay alguna manera de iniciar el eje x?
  • Tu pregunta actualizada es solo acerca de establecer el rango de la trama, creo. En este caso, configurarlo manualmente funciona mejor, coloque PlotRange – > {{0, 800}, {8000, 11000}} dentro de su ListPlot.

Respuesta

Es mejor usar NonlinearModelFit:

data = {{0, 10}, {1, 5}, {3, 2}, {5, 1}, {6, 0}, {7, 0}}; nlm = NonlinearModelFit[data, a + b Exp[-x/c], {a, b, c}, x] Show[Plot[nlm[x], {x, 0, 7}] ,ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}] ] 

ingrese la descripción de la imagen aquí

Para ver los parámetros, puede usar nlm["BestFitParameters"] para obtener

{a-> 0.100889, b-> 9.76356, c-> 1.62293}

Actualización

Usando sus nuevos datos de prueba con @ george2079 tip obtendrá:

data = {{462.36,8872},{408.18,8780},{374.4,8915},{322.8,8937}, {274.00,8919},{243.03,9114},{209.32,9277},{178.91,9394}, {140.71,9508},{113.08,9592}}; nlm=NonlinearModelFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}},x] Show[ListPlot[data, PlotStyle -> {Darker@Green, PointSize[0.03]}] ,Plot[nlm[x],{x,1,600}] ] 

ingrese la descripción de la imagen aquí

Comentarios

  • Tengo problemas para obtener el nonlinearModelfit para Plot, me está dando errores de sintaxis. Creo que es algo con ListPlot que no le gusta.
  • Puede agregar algunos datos de muestra a su pregunta, para que podamos probarlo.
  • @Bill edite su pregunta en su lugar de usi ng comentarios.
  • He agregado datos y las funciones que estoy tratando de usar a mi pregunta original. cualquier sugerencia será muy apreciada.
  • Esto funciona muy bien. el único problema que tengo es que se muestre la línea. Obtengo los datos para trazar, pero ' no consigo realmente la curva para trazar. cualquier idea de lo que puedo estar haciendo mal.

Responder

En este caso, FindFit y NonlinearModelFit no encuentran fácilmente un buen ajuste, debe proporcionar valores iniciales razonables para los parámetros:

data = {{462.36, 8872}, {408.18, 8780}, {374.4, 8915}, {322.8, 8937}, {274.00, 8919}, {243.03, 9114}, {209.32, 9277}, {178.91, 9394}, {140.71, 9508}, {113.08, 9592}} FindFit[data, a + b Exp[-x /c], {a, b, c}, x] 

(* error El tamaño del paso en la búsqueda se ha vuelto menor que la tolerancia. .. *)

FindFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}}, x] 

(* {a -> 8692.35, b -> 1910.19, c -> 161.513} *)

Este es un buen ajuste, lo siento, no puedo publicar gráficos.

Entonces, ¿cómo se obtienen los valores iniciales? Tracé la expresión y jugué con las constantes a mano hasta que estuve bastante cerca. Lo siento si eso no es satisfactorio, pero realmente hay un poco de arte en el ajuste de datos que va más allá de lo que puede hacer mathica de una manera completamente automática.

Comentarios

  • De hecho, obtuve la línea para graficar con su código, pero todavía obtengo un gráfico sesgado. cualquier idea.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *