Megvan az egyenlet
y = a + b Exp[-x/c] 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 = 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}]]
A fentiek szerint jelenleg minden működik és grafikonok készítése.
Frissítés
Valójában szinte mindent meg tudtam dolgozni A rajzolás aktuális kezdete a grafikon y tengelye előtt kezdődik, tehát ha a grafikont nézzük, akkor balra ferde. Megpróbálom megérteni, hogy milyen értéken kell változtatnom, hogy ezt jobbra mozdítsam, és egy kicsit küzdök. bármilyen segítséget értékelni fogunk.
hogyan írhatom be ezt a FindFit
függvénybe?
FindFit[data, model, parms];
Megvannak az adataim, csak nem tudom kitalálni, hogyan lehet ezt helyesen beilleszteni az model
és a params
fájlokba. Ez az olyan óvatosság, amelyet az adatok miatt kaptam, és csak nem tudom, hogyan kell ezeket bevinni, vagy hogy megmutassam, hogy ez egy exponenciális görbe lesz.
Megjegyzések
- Oké, itt van a kérdésem, < id = “0f2e21715d”>
mindent nagyrészt működtem. egyetlen kérdésem van, hogy az X tengely 150-nél kezdődik, és az első pontom 113-nál van. Látod a problémát, az y tengely mögé rajzolódik. Tehát van-e mód arra, hogy elindítsuk az x tengelyt?
válasz
Jobb használni a 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]}] ]
A paraméterek megtekintéséhez használhatja a nlm["BestFitParameters"]
kap
{a-> 0.100889, b-> 9.76356, c-> 1.62293}
Frissítés
Az új tesztadatok felhasználásával a @ george2079 tippet kapja:
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}] ]
Megjegyzések
- Problémáim vannak a nonlinearModelfit Plot-ra kapásával, ez szintaxis hibákat okoz. Azt hiszem, ez valami a ListPlot esetében, ami nem tetszik.
- Néhány kérdési adatot hozzáfűzhet a kérdéséhez, így tesztelhetjük.
- @Bill szerkessze inkább a kérdését of usi ng megjegyzés.
- Adatokat és funkciókat adtam hozzá, amelyeket megpróbálok használni az eredeti kérdésemhez. minden javaslatot nagyra értékelünk.
- Ez nagyszerűen működik. az egyetlen kérdésem, hogy valóban megmutatom a sort. Az adatokat ábrázolásra készítem, de valójában nem ' adom meg a görbét. bármilyen ötlet, amit rosszul csinálhatok.
Válasz
Ebben az esetben a FindFit és a NonlinearModelFit nem talál könnyen A megfelelő illeszkedéshez ésszerű kiindulási értékeket kell megadnia a paraméterekhez:
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]
(* hiba A keresés lépésmérete kisebb lett, mint a tűrés. .. *)
FindFit[data, a + b Exp[-x /c], {{a, 100}, {b, 100}, {c, 10}}, x]
(* {a -> 8692,35, b -> 1910,19, c -> 161,513} *)
Ez jól néz ki, sajnálom, hogy nem tudok grafikákat közzétenni.
Szóval hogyan juthatsz kiinduló értékekhez? Ábrázoltam a kifejezést, és kézzel játszottam az állandókkal, amíg elég közel nem értem. Bocsánat, ha ez nem kielégítő, de az adatillesztésnek valóban van egy olyan művészete, amely túlmutat azon, amit a Mathica teljesen automatikus módon képes elvégezni.
Megjegyzések
- Valójában megkaptam a vonalat a grafikonhoz a kódoddal, de még mindig kapok egy ferde grafikont. bármilyen ötlet.