Re: please help using NDSolve and FindFit
- To: mathgroup at smc.vnet.net
 - Subject: [mg126798] Re: please help using NDSolve and FindFit
 - From: Robert Miller <robertelmiller at gmail.com>
 - Date: Fri, 8 Jun 2012 03:35:39 -0400 (EDT)
 - Delivered-to: l-mathgroup@mail-archive0.wolfram.com
 - References: <jqprpc$2dv$1@smc.vnet.net>
 
Try
fit = FindFit[data, model[p, q][f], {{p, 2}, {q, 4}}, f]
I get
{p -> 1.99877, q -> 3.99766}
along with a FindFit::sszero message
On Thursday, June 7, 2012 2:20:44 AM UTC-7, Lee wrote:
> As reading tutorials by Mathew Smith, I am trying to fit six (t,f) data points in range t=[0,5] using a conditional differential equation.
> 
> texp = {0.5, 1.1, 1.5, 2.1, 2.3, 3.1};
> fexp = {6.2, 8.1, 8.8, 8.3, 6.8, 2.9};
> data = Transpose[{texp, fexp}];
> model[p_?NumberQ, q_?NumberQ] := First[f /. NDSolve[{f'[t] == If[t < p, 10 - f[t], -f[t]], f[0] == q}, f, {t, 0, 5}]];
> fit = FindFit[data, model, {{p, 2}, {q, 4}}, f];
> 
> Mathematica gave the following error message:
> 
> FindFit::nrlnum: The function value {-6.2+model, -8.1+model, -8.8+model, -8.3+model, -6.8+model, -2.9+model} is not a list of real numbers with dimensions {6} at {p,q} = {2.,4.}.
> 
> The answer should have been around:
> 
> {p->1,9962, q->3.93581}
> 
> Does anyone know how to correct it?