Ho lequazione

 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}]] 

Quanto sopra è come attualmente funziona tutto e la rappresentazione grafica.

Aggiorna

In realtà ho quasi tutto funzionante Ho la linea che non funziona, lunico problema che sto riscontrando è che i primi 2 punti di dati e linizio della linea in fase di disegno inizia praticamente prima dellasse y sul grafico, quindi se guardi il grafico è inclinato a sinistra. Sto cercando di capire quale valore dovrò cambiare per riportarlo a destra e sto faticando un po . qualsiasi aiuto sarà apprezzato.

come posso inserirlo nella funzione FindFit?

FindFit[data, model, parms]; 

Ho i miei dati non riesco a capire come importarli correttamente in model e params. Questo è il eqaution che mi è stato dato per i dati e semplicemente non so come inserirli o per mostrare che sarà una curva esponenziale.

Commenti

  • Ok, ecco la mia domanda se ' tutto funziona per la maggior parte. lunica cosa che sto riscontrando è che lasse X inizia a 150 e il mio primo punto è a 113. vedi il problema, traccia dietro lasse y. Quindi, cè un modo per avviare lasse x.
  • la tua domanda aggiornata riguarda solo limpostazione dellintervallo del grafico, credo. In questo caso limpostazione manuale funziona meglio, inserisci PlotRange – > {{0, 800}, {8000, 11000}} allinterno del tuo ListPlot.

Risposta

È meglio utilizzare 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]}] ] 

inserisci qui la descrizione dellimmagine

Per vedere i parametri puoi utilizzare nlm["BestFitParameters"] per ottenere

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

Aggiorna

Usando i tuoi nuovi dati di test con @ george2079 suggerimento ottieni:

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}] ] 

inserisci qui la descrizione dellimmagine

Commenti

  • Ho problemi a portare il nonlinearModelfit su Plot perché mi dà errori di sintassi. Penso che sia qualcosa con ListPlot che non gli piace.
  • Puoi aggiungere alcuni dati di esempio alla tua domanda, così possiamo testarla.
  • @Bill modifica invece la tua domanda di usi ng commenti.
  • Ho aggiunto i dati e le funzioni che sto cercando di utilizzare alla mia domanda originale. qualsiasi suggerimento sarà molto apprezzato.
  • Funziona benissimo. lunico problema che sto avendo in realtà è far vedere la linea. Ottengo i dati da tracciare ma non ' per tracciare effettivamente la curva. qualsiasi idea di cosa stia facendo di sbagliato.

Answer

In questo caso FindFit e NonlinearModelFit non trovano subito una buona corrispondenza, è necessario fornire valori iniziali ragionevoli per i parametri:

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] 

(* errore La dimensione del passo nella ricerca è diventata inferiore alla tolleranza. .. *)

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

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

Questa è una bella corrispondenza, mi dispiace non posso pubblicare grafica.

Quindi come si creano i valori di partenza? Ho tracciato lespressione e ho giocato con le costanti a mano finché non sono arrivato abbastanza vicino. Scusa se questo non è soddisfacente, ma ladattamento dei dati è davvero un po unarte che va oltre ciò che la matematica può fare in modo completamente automatico.

Commenti

  • In realtà ho la linea da rappresentare graficamente con il tuo codice, ma continuo a ottenere un grafico distorto. qualsiasi idea.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *