Jeg har ligningen

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

Ovennevnte har jeg for tiden alt til å fungere og tegning.

Oppdatering

Jeg har faktisk nesten alt som fungerer. Jeg har det bundet drwan det eneste problemet jeg har er at de første to datapunktene og begynnelsen av linjen tegnes, start egentlig før y-aksen på grafen, så hvis du ser på grafen, er den skjev til venstre. Jeg prøver å forstå hvilken verdi jeg trenger å endre for å flytte dette tilbake til høyre, og jeg sliter litt. noe hjelp vil bli verdsatt.

hvordan kan jeg skrive det inn i FindFit -funksjonen?

FindFit[data, model, parms]; 

Jeg har dataene mine, jeg kan bare ikke finne ut hvordan jeg kan få dette inn i model og params riktig. Dette er ekvasjon som ble gitt meg for dataene og bare ikke vet hvordan jeg skal legge dem inn eller for å vise at det kommer til å være en eksponentiell kurve.

Kommentarer

  • Ok, her er spørsmålet mitt jeg ' har fått alt til å fungere for det meste. det eneste jeg har et problem er at X-aksen begynner på 150 og mitt første punkt er på 113. du ser problemet, det plotter bak y-aksen. Så er det en måte å initiere x-aksen på.
  • Det oppdaterte spørsmålet ditt handler bare om å sette tomtområdet, tror jeg. I dette tilfellet fungerer det manuelt å sette det inn, legg PlotRange – > {{0, 800}, {8000, 11000}} i ListPlot.

Svar

Det er bedre å bruke 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]}] ] 

skriv inn bildebeskrivelse her

For å se parametere kan du bruke nlm["BestFitParameters"] for å få

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

Oppdater

Ved å bruke de nye testdataene dine med @ george2079 tip får du:

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

skriv inn bildebeskrivelse her

Kommentarer

  • Jeg har problemer med å få den ikke-lineære Modelfit til å plotte det gir meg syntaksfeil. Jeg tror det er noe med ListPlot det ikke liker.
  • Du kan legge til noen eksempeldata i spørsmålet ditt, slik at vi kan teste det.
  • @Bill rediger spørsmålet ditt i stedet av usi ng kommentarer.
  • Jeg har lagt til data og funksjonene jeg prøver å bruke til det opprinnelige spørsmålet mitt. eventuelle forslag vil bli satt stor pris på.
  • Dette fungerer bra. det eneste problemet jeg har er å få linjen til å vises. Jeg får dataene til å plotte, men ikke ' t får faktisk kurven til å plotte. noen ide om hva jeg kan gjøre galt.

Svar

I dette tilfellet finner FindFit og NonlinearModelFit ikke lett en god passform, må du oppgi rimelige startverdier for parametrene:

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] 

(* feil Trinnstørrelsen i søket har blitt mindre enn toleransen. .. *)

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

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

Dette ser bra ut, beklager at jeg ikke kan legge ut grafikk.

Så hvordan kommer du på startverdier? Jeg plottet uttrykket og lekte med konstantene for hånd til jeg kom ganske nær. Beklager hvis det ikke er tilfredsstillende, men det er virkelig litt kunst å datatilpasning som går utover hva mathematica kan gjøre på en helautomatisk måte.

Kommentarer

  • Jeg fikk faktisk linjen til å tegne graf med koden din, men jeg får fremdeles en skjev graf. noen ideer.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *