Re: Problems with a first order differential equation
- To: mathgroup at smc.vnet.net
- Subject: [mg123432] Re: Problems with a first order differential equation
- From: Bert RAM Aerts <bert.ram.aerts at gmail.com>
- Date: Wed, 7 Dec 2011 06:14:23 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jb4p9j$gsc$1@smc.vnet.net>
On 30 nov, 09:25, Pippo <dinodebla... at yahoo.it> wrote: > Dear all, > > I have a list of values (2-dimensional). data={{xi,yi}...} > And I finally am able to fit them as the example below: > and find the parameters A and B > ----------------------------------- > Clear[y]; > data = {{1, 0.033}, {2, 0.054}, {5, 0.088}}; > With[{C = 1/9}, > Column[{ > model = DSolve[ > {y'[t] == -A (y[t])^2 + B (C - y[t]), y[0] == 0}, > y[t], t][[1]], > param = FindFit[data, y[t] /. model, {A, B}, t], > Plot[y[t] /. model /. param, {t, 0, Max[data[[All, 1]]]}, > ImageSize -> 400, AxesLabel -> {"t", "y[t]"}, > Epilog -> {Red, AbsolutePointSize[5], Point[data]}]}]] // Quiet > --------------------------- > Thanks to Bob Hanlon. > > However I would like to fit the same data by using different exponents of the term y[t])^2 which appear on the right hand side of the differential equation: > for example I'd like to use: > > {y'[t] == -A (y[t])^3 + B (C - y[t]), y[0] == 0}, > or > {y'[t] == -A (y[t])^(2.5) + B (C - y[t]), y[0] == 0}, > > Is that anyway to fit a list of two-dimensional by using the models above? > > Thanks. > Dino The book Mathematica Navigator from Heikki Ruskeep=E4=E4 3rd edition on page 879 gives you the answer: Clear["Global`*"]; c = 1/9; data = {{1, 0.033}, {2, 0.054}, {5, 0.088}}; model[a_?NumericQ, b_?NumericQ] := model[a, b] = y /. NDSolve[{y'[t] == -a (y[t])^3 + b (c - y[t]), y[0] == 0}, y, {t, 0, 6}][[1]] param = FindFit[data, model[a, b][t], {{a, 1}, {b, 1}}, t] {a -> 3.23777, b -> 0.341321} Plot[model[a, b][t] /. param, {t, 0, 6}, Epilog -> {Red, AbsolutePointSize[5], Point[data]}] Kind regards, Bert