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