Bug in NonlinearRegress on NDSolve
- To: mathgroup at smc.vnet.net
- Subject: [mg14840] Bug in NonlinearRegress on NDSolve
- From: Mike Trefry <mike.trefry at per.clw.csiro.au>
- Date: Fri, 20 Nov 1998 02:16:50 -0500
- Organization: CSIRO, Western Australia
- Sender: owner-wri-mathgroup at wolfram.com
Hi, I want to use NonlinearRegress to determine confidence intervals (w.r.t. measured data) on parameters of pde systems solved via NDSolve, but it doesn't seem to work. Here's the problem: This dynamic function solves a 1-parameter (alpha) pde: mgt[alpha_?NumericQ] := mgt[alpha] = Module[{sol}, sol = First[NDSolve[ {D[u[x, t], t] == D[u[x, t], x, x] + alpha*x*u[x,t], u[x, 0] == 1 - x^2, Derivative[1, 0][u][0, t] == 0, u[1, t] == 0}, u, {x, 0, 1}, {t, 0, 1}]]; u /. sol] Invoking mgt for a given value returns an InterpolatingFunction: mgt[6] InterpolatingFunction[{{0,1.},{0.,1.}},<>] We can use the function to generate some data values perturbed by noise: data = Flatten[Table[{x, t, Random[Real, {-0.01, 0.01}] + mgt[6][x, t]}, {x, 0.2, 0.8, 0.3}, {t, 0.1, 0.7, 0.2}],1]; and we can successfully use FindMinimum to optimise alpha against data: leastsquares[alpha_?NumericQ] := Plus @@ Apply[(mgt[alpha][#1, #2] - #3)^2 & , data, {1}] FindMinimum[leastsquares[alpha], {alpha, -1.5, -2}] {0.000442707, {alpha->6.0014}} What about nonlinear regression? <<Statistics`NonlinearFit` NonlinearRegress[data, mgt[alpha][x, t], {x, t},{alpha, -2}] This fails, saying "SingularValues::"svdf": SingularValues has received a matrix with infinite precision..." I'd like to know what I am doing wrong! Cheers, Mike Trefry <mike.trefry at per.clw.csiro.au> Centre for Groundwater Studies CSIRO Land and Water Floreat WA 6014 Australia