Re: findfit or solve?
- To: mathgroup at smc.vnet.net
- Subject: [mg55029] Re: findfit or solve?
- From: Peter Pein <petsie at arcor.de>
- Date: Thu, 10 Mar 2005 05:24:28 -0500 (EST)
- References: <d0modp$76l$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Tegla Bela wrote: > Greetings to everybody, > > I have found a model and I would like to use Mathematica for the data under > the model. The model is as follows: > > = h1 - ((2 * (h1 - hθ)) / ((EXP(s0 * (t -θ))) + (EXP(s1 * (t -θ))))) > > data = {{6.968, 117.1}, {7.967, 123.3}, {9.046, > 129.4}, {9.982, 134.6}, {10.951, > 139.2}, {11.973, 145.2}, {13.021, 151.1}, {13.892, 159.9}, { > 14.888, 167.8}, {15.858, 171.9}, {16.857, 175.7}, {17.854, 177.2}, { > 18.724, 175.6}}; > > I have managed to do it with nonlinear least-square fitting in other > program. But not working for me in Mathematica. (I do not know how to give > initial values to have the five unknown parameters estimated) These are the > initial values that I would like to use: a=176, b=160, c=0.1, d=14, e=1.2 > (t is the age, first value in each pair of the data) > > Does anybody have idea how it can be done? Any help is appreciated. > > Spiller > > _________________________________________________________________ > æ?¥æ?¬å?½å??æ??大ç´?570ä¸?ã?¦ã?¼ã?¶ã?¼ã?®MSN Hotmail > https://registernet.passport.net/reg.srf?id=2&lc=1041 > NonlinearFit[data, h1 - (2*(h1 - h\[Theta]))/(E^(s0*(t - \[Theta])) + E^(s1*(t - \[Theta]))), {t}, {h1, h\[Theta], s0, s1, \[Theta]}] Out[5]= 151.3846153846154 - 111410.8547029138/ (E^(-14.335393999263037*(-115.43433836614763 + t)) + E^(-14.335393999252005*(-115.43433836614763 + t))) which is an extremely bad approximation. In the range of your data, this is Mean[Last/@data]+Interval[{2.87121*1^0-671, 4.45004*10^-598}] But if I help Mathematica by feeding it with some start values, I get modl = NonlinearFit[data, h1 - (2*(h1 - h\[Theta]))/(E^(s0*(t - \[Theta])) + E^(s1*(t - \[Theta]))), {t}, {{h1, 175}, {h\[Theta], 160}, {s0, 1}, {s1, 0.1}, {\[Theta], 15}}] ==> 176.5881087074734 - 26.129646337226745/ (E^(0.11114476528689875*(-14.376501386067005 + t)) + E^(1.1865954467323878*(-14.376501386067005 + t))) To have a look at the result: Show[Block[{$DisplayFunction = #1 & }, {Plot[modl, {t, 6, 19}], ListPlot[data, PlotStyle -> {Red, PointSize[0.02]}]}]]; -- Peter Pein Berlin