Re: estimating parameters in a differential equation with mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg89139] Re: estimating parameters in a differential equation with mathematica
- From: dh <dh at metrohm.ch>
- Date: Mon, 26 May 2008 06:25:29 -0400 (EDT)
- References: <g18hpo$kh7$1@smc.vnet.net>
Hi Sylvain, there is a type in the equation: = instead of ==. Further, you need reasonable start values. E.g.: FindMinimum[sse[n,k],{n,.5},{k,.5}] hope this helps, Daniel sado Sylvain wrote: > I need a help > I have bee trying to solve a differential equation to fit experimental data with mathematica, but something is always wrong. can somebody kindly help me! > this is the experiemtal data > data = {{0.0000001, -0.000001}, {1, -1.386}, {2, -1.933}, {4, \ > -3.767}, {5, -5.009}, {6, -6.322}, {7, -7.177}, {7.5, -7.679}}; > and the formula for least square > Plus @@ Apply[(f[#1] - #2)^2 &, data, {1}] > then the differential equation is as follow > {f'[t] = -n Log[ > 1 + \[ExponentialE]^( > k (-22.46` + x/(0.00225`+ 0.04` x)))] (-f[t]/ > Log[1 + \[ExponentialE]^( > k (-22.46` + x/(0.00225`+ 0.04` x)))])^(-1 + n)/n} > where "n" and "k" are to be estimated by the FindMinimum operation. so the expression I have used is this one > sse[n_?NumberQ, k_?NumberQ] := > Block[{sol, f}, > sol = NDSolve[{f'[ > x] = -n Log[ > 1 + \[ExponentialE]^( > k (-22.46` + x/(0.00225`+ 0.04` x)))] (-f[x]/ > Log[1 + \[ExponentialE]^( > k (-22.46` + x/(0.00225`+ 0.04` x)))])^(((-1) + n)/n), > f[0.0000001] == -0.000001}, f, {x, 0.00000001, 7.5}][[1]]; > Plus @@ Apply[(f[#1] - #2)^2 &, data, {1}] /.sol] > followed by this: > FindMinimum[sse[n, k], {n, 0.00001, 100}, {k, 0.00001, 100}] > > but i can get any solution.this one of the comments i receive > ReplaceAll::reps: {-(0.00001 \ > Log[1.+<<18>>^(0.00001<<1>><<1>>)])/(-(1. \ > <<1>>)/(Log<<1>><<1>>]))^99999.,f[1.*10^-7]==-1.*10^-6} is neither a \ > list of replacement rules nor a valid dispatch table, and so cannot \ > be used for replacing. >> > > NDSolve::deqn: Equation or list of equations expected instead of \ > -(0.00001 Log[1+\[ExponentialE]^(0.00001 \ > <<1>>)])/(-f[x]/Log[<<1>>])^99999. in the first argument {-(0.00001 \ > Log[1+\[ExponentialE]^(0.00001 \ > <<1>>)])/(-f[x]/(Log<<1>><<1>>]))^99999.,f[1.*10^-7]==-1.*10^-6}. >> > > it seems there is a syntax problem somewhere. > Thanks in advance for any help, > Sylvain > -- Daniel Huber Metrohm Ltd. Oberdorfstr. 68 CH-9100 Herisau Tel. +41 71 353 8585, Fax +41 71 353 8907 E-Mail:<mailto:dh at metrohm.com> Internet:<http://www.metrohm.com>