Mam równanie

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

Powyższe pokazuje, jak obecnie wszystko działa i wykresów.

Aktualizacja

Właściwie mam prawie wszystko działające Mam theline bieing drwan jedyny problem jaki mam to to, że pierwsze 2 punkty danych i początek linii rysowany w rzeczywistości zaczyna się przed osią y na wykresie, więc jeśli spojrzysz na wykres, jest on przekrzywiony w lewo. Próbuję zrozumieć, jaką wartość będę musiał zmienić, aby przesunąć to z powrotem w prawo i trochę się z tym zmagam. każda pomoc będzie mile widziana.

jak mogę to wpisać w funkcji FindFit?

FindFit[data, model, parms]; 

Mam swoje dane, po prostu nie mogę po prostu „dowiedzieć się, jak poprawnie umieścić je w model i params. To jest eqostrożność, którą otrzymałem w związku z danymi i po prostu nie wiem, jak je wprowadzić ani pokazać, że będzie to krzywa wykładnicza.

Komentarze

  • OK, oto moje pytanie i ' wszystko działa przez większość czasu. jedyną rzeczą, z którą mam problem, jest to, że oś X zaczyna się od 150, a mój pierwszy punkt to 113. widzisz problem, kreśli się za osią y. Czy jest więc sposób na zainicjowanie osi X.
  • Twoje zaktualizowane pytanie dotyczy tylko ustawienia zakresu wykresu. W tym przypadku ręczne ustawienie działa najlepiej, umieść PlotRange – > {{0, 800}, {8000, 11000}} wewnątrz ListPlot.

Odpowiedź

Lepiej jest użyć 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]}] ] 

tutaj wprowadź opis obrazu

Aby zobaczyć parametry, użyj nlm["BestFitParameters"] aby uzyskać

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

Aktualizacja

Korzystając z nowych danych testowych z @ george2079 wskazówką, którą otrzymujesz:

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

tutaj wprowadź opis obrazu

Komentarze

  • Mam problem z wyświetleniem NieliniowegoModelfita, ponieważ powoduje to błędy składniowe. Myślę, że w ListPlot jest coś, co mu się nie podoba.
  • Możesz dołączyć kilka przykładowych danych do swojego pytania, abyśmy mogli je przetestować.
  • @Bill edytuj swoje pytanie. z usi ng komentarzy.
  • Dodałem dane i funkcje, których próbuję użyć do mojego pierwotnego pytania. wszelkie sugestie będą bardzo mile widziane.
  • To działa świetnie. jedyny problem, jaki mam, to pokazanie linii. Otrzymuję dane do wykreślenia, ale nie ' nie otrzymuję krzywej do wykreślenia. jakieś pojęcie, co robię źle.

Odpowiedź

W tym przypadku FindFit i NonlinearModelFit nie znajdują dobre dopasowanie, musisz podać rozsądne wartości początkowe parametrów:

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] 

(* błąd Wielkość kroku w wyszukiwaniu stała się mniejsza niż tolerancja. .. *)

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

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

To dobrze wyglądające dopasowanie, przepraszam, że nie mogę publikować grafiki.

Jak więc wymyślić wartości początkowe? Wykreśliłem wyrażenie i bawiłem się stałymi ręcznie, aż doszedłem całkiem blisko. Przepraszam, jeśli to niezadowalające, ale naprawdę jest trochę sztuki dopasowywania danych, która wykracza poza możliwości matematyki w sposób w pełni automatyczny.

Komentarze

  • Mam linię do wykresu z Twoim kodem, ale nadal otrzymuję przekrzywiony wykres. wszelkie pomysły.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *