Ik heb de vergelijking

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

Het bovenstaande is hoe ik momenteel alles werk en grafieken.

Update

Ik heb eigenlijk bijna alles werkend Ik heb de lijn door drwan het enige probleem dat ik heb is dat de eerste 2 gegevenspunten en het begin van de regel worden getekend, beginnen eigenlijk voor de y-as op de grafiek, dus als je naar de grafiek kijkt, staat deze scheef naar links. Ik probeer te begrijpen welke waarde ik moet veranderen om dit weer naar rechts te verplaatsen en ik heb een beetje moeite. alle hulp wordt op prijs gesteld.

hoe kan ik dat invoeren in de FindFit functie?

FindFit[data, model, parms]; 

Ik heb mijn gegevens, ik kan gewoon “niet achterhalen hoe ik dit in de model en params kan krijgen. Dit is de een waarschuwing die me werd gegeven voor de gegevens en ik weet gewoon “niet hoe ik deze moet invoeren of om aan te tonen dat het een exponentiële curve zal zijn.

Opmerkingen

  • Oké, hier is mijn vraag. ' Alles werkt voor het grootste deel. het enige dat ik een probleem heb, is dat de X-as begint bij 150 en mijn eerste punt op 113. je ziet het probleem, het plot achter de y-as. Dus, is er een manier om de x-as te initialiseren.
  • Je bijgewerkte vraag gaat alleen over het instellen van het plotbereik, denk ik. In dit geval werkt het handmatig instellen het beste, plaats PlotRange – > {{0, 800}, {8000, 11000}} in uw ListPlot.

Answer

Het is beter om NonlinearModelFit te gebruiken:

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

voer de beschrijving van de afbeelding hier in

Om parameters te zien kun je nlm["BestFitParameters"] om

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

Update

Door je nieuwe testgegevens te gebruiken met @ george2079 tip krijg je:

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

voer de beschrijving van de afbeelding hier in

Opmerkingen

  • Ik heb problemen om de niet-lineaireModelfit naar Plot te krijgen, het geeft me syntaxisfouten. Ik denk dat het iets is met de ListPlot dat het niet leuk vindt.
  • U kunt enkele voorbeeldgegevens aan uw vraag toevoegen, zodat we deze kunnen testen.
  • @Bill bewerk in plaats daarvan uw vraag van usi ng opmerkingen.
  • Ik heb gegevens en de functies die ik probeer te gebruiken toegevoegd aan mijn oorspronkelijke vraag. alle suggesties worden zeer op prijs gesteld.
  • Dit werkt prima. het enige probleem dat ik heb, is om de lijn te laten zien. Ik krijg de gegevens om te plotten, maar ' krijg ik niet de curve om te plotten. enig idee wat ik verkeerd doe.

Antwoord

In dit geval vinden FindFit en NonlinearModelFit niet gemakkelijk een goede match is, moet u redelijke startwaarden opgeven voor de parameters:

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 De stapgrootte in de zoekopdracht is kleiner geworden dan de tolerantie. .. *)

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

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

Dit ziet er goed uit, sorry dat ik geen afbeeldingen kan posten.

Dus hoe bedenk je de beginwaarden? Ik tekende de uitdrukking en speelde met de hand met de constanten totdat ik er redelijk dichtbij kwam. Sorry als dat niet bevredigend is, maar het aanpassen van gegevens is een kunst die verder gaat dan wat mathematica op een volledig automatische manier kan doen.

Opmerkingen

  • Ik heb eigenlijk de lijn om te tekenen met jouw code, maar ik krijg nog steeds een scheefstaande grafiek. om het even welke ideeën.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *