Question on NonlinearFit
- To: mathgroup at smc.vnet.net
- Subject: [mg17974] Question on NonlinearFit
- From: "David Keith" <dkeith at hevanet.com>
- Date: Mon, 7 Jun 1999 02:51:25 -0400
- Organization: Hevanet Communications
- Sender: owner-wri-mathgroup at wolfram.com
I am trying to use NonlinearFit to find the best-fit parameters for a piecewise model. The problem is somewhat complicated, so I first constructed a simple example to help me understand it, and it does not behave as I expected. First I construct a piecewise model which describes a curve which is continuous through the first derivative (C1). It behaves as y = a x^b below some x=x0, and continues as a line segment for x > x0. In[30]:= y[a_, b_, x0_, x_] := a x^b /; x < x0 In[31]:= y[a_, b_, x0_, x_] := (x - x0) a b x0^(b - 1) + a x0^b /; x >= x0 I then produce a dataset by assuming values for the parameters and adding some noise: data = Table[{x, y[.5, 2, 10, x] + Random[Real, {-5, 5}]}, {x, 0, 20}]; Then I try to fit the data with NonlinearFit: NonlinearFit[data, Evaluate[y[aa, bb, xx0, xx]], {xx}, {{aa, {1, 10}}, {bb, {1, 10}}, {xx0, {1, 10}}}, Method -> Gradient] and get the response: FindMinimum::"fmgs": "Could not symbolically find the gradient of y[aa, bb, xx0, #1]. Try using the default method, giving two starting values for each variable." What confuses me is that I gave 2 values for each of the parameters as required. It seems to be complaining that since I didn't give 2 values for the variable, it needs a symbolic gradient. But the variable is the variable -- it should know now that it can use numerical methods. Can anyone tell me what I've done wrong? (I have attached the notebook, but it might not survive the news server.) Thanks. begin 666 nlfit.nb M*"HJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0H-"B @(" @(" @(" @(" @ M(" @(" @36%T:&5M871I8V$M0V]M<&%T:6)L92!.;W1E8F]O:PT*#0I4:&ES M(&YO=&5B;V]K(&-A;B!B92!U<V5D(&]N(&%N>2!C;VUP=71E<B!S>7-T96T@ M=VET:"!-871H96UA=&EC82 T+C L#0I-871H4F5A9&5R(#0N,"P@;W(@86YY M(&-O;7!A=&EB;&4 at 87!P;&EC871I;VXN(%1H92!D871A(&9O<B!T:&4@;F]T M96)O;VL at #0IS=&%R=',@=VET:"!T:&4@;&EN92!C;VYT86EN:6YG('-T87)S M(&%B;W9E+ at T*#0I4;R!G970 at =&AE(&YO=&5B;V]K(&EN=&\ at 82!-871H96UA M=&EC82UC;VUP871I8FQE(&%P<&QI8V%T:6]N+"!D;R!O;F4@;V8 at #0IT:&4@ M9F]L;&]W:6YG. at T*#0HJ(%-A=F4 at =&AE(&1A=&$@<W1A<G1I;F<@=VET:"!T M:&4@;&EN92!O9B!S=&%R<R!A8F]V92!I;G1O(&$ at 9FEL90T*("!W:71H(&$@ M;F%M92!E;F1I;F<@:6X at +FYB+"!T:&5N(&]P96X at =&AE(&9I;&4@:6YS:61E M('1H92!A<'!L:6-A=&EO;CL-"@T**B!#;W!Y('1H92!D871A('-T87)T:6YG M('=I=&@@=&AE(&QI;F4@;V8@<W1A<G,@86)O=F4 at =&\ at =&AE#0H@(&-L:7!B M;V%R9"P at =&AE;B!U<V4 at =&AE(%!A<W1E(&UE;G4 at 8V]M;6%N9"!I;G-I9&4@ M=&AE(&%P<&QI8V%T:6]N+ at T*#0I$871A(&9O<B!N;W1E8F]O:W,@8V]N=&%I M;G,@;VYL>2!P<FEN=&%B;&4 at -RUB:70 at 05-#24D@86YD(&-A;B!B90T*<V5N M="!D:7)E8W1L>2!I;B!E;6%I;"!O<B!T:')O=6=H(&9T<"!I;B!T97AT(&UO M9&4N("!.97=L:6YE<R!C86X at 8F4-"D-2+"!,1B!O<B!#4DQ&("A5;FEX+"!- M86-I;G1O<V@@;W(@35,M1$]3('-T>6QE*2X-"@T*3D]413H at 268@>6]U(&UO M9&EF>2!T:&4 at 9&%T82!F;W(@=&AI<R!N;W1E8F]O:R!N;W0@:6X at 82!-871H M96UA=&EC82T-"F-O;7!A=&EB;&4 at 87!P;&EC871I;VXL('EO=2!M=7-T(&1E M;&5T92!T:&4@;&EN92!B96QO=R!C;VYT86EN:6YG('1H92 -"G=O<F0 at 0V%C M:&5)1"P@;W1H97)W:7-E($UA=&AE;6%T:6-A+6-O;7!A=&EB;&4 at 87!P;&EC M871I;VYS(&UA>2!T<GD at =&\ at #0IU<V4@:6YV86QI9"!C86-H92!D871A+ at T* M#0I&;W(@;6]R92!I;F9O<FUA=&EO;B!O;B!N;W1E8F]O:W,@86YD($UA=&AE M;6%T:6-A+6-O;7!A=&EB;&4 at #0IA<'!L:6-A=&EO;G,L(&-O;G1A8W0 at 5V]L M9G)A;2!297-E87)C:#H-"B @=V5B.B!H='1P.B\O=W=W+G=O;&9R86TN8V]M M#0H@(&5M86EL.B!I;F9O0'=O;&9R86TN8V]M#0H@('!H;VYE.B K,2TR,3<M M,SDX+3 W,# @*%4N4RXI#0H-"DYO=&5B;V]K(')E861E<B!A<'!L:6-A=&EO M;G,@87)E(&%V86EL86)L92!F<F5E(&]F(&-H87)G92!F<F]M( T*5V]L9G)A M;2!297-E87)C:"X-"BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*0T*#0HH M*D-A8VAE240Z(#(S,BHI#0H-"@T**"I.;W1E8F]O:T9I;&5,:6YE0G)E86M4 M97-T#0I.;W1E8F]O:T9I;&5,:6YE0G)E86M497-T*BD-"B at J3F]T96)O;VM/ M<'1I;VYS4&]S:71I;VY;(" @(" @,S<S-"P@(" @(" @(#$P.5TJ*0T**"I. M;W1E8F]O:T]U=&QI;F50;W-I=&EO;EL@(" @(" T-#DY+" @(" @(" @,3,X M72HI#0HH*B @0V5L;%1A9W-);F1E>%!O<VET:6]N6R @(" @(#0T,C at L(" @ M(" @(" Q,S)=*BD-"B at J5VEN9&]W1G)A;64M/DYO<FUA;"HI#0H-"@T*#0I. M;W1E8F]O:UM[#0I#96QL6R(\/"!3=&%T:7-T:6-S8$YO;FQI;F5A<D9I=& B M+" B26YP=70B+ T*("!#96QL5&%G<RT^(E,V+C4N,2)=+ T*#0I#96QL6T)O M>$1A=&%;#0H@(" @7"AY6V%?+"!B7RP@>#!?+"!X7UT at .CT@85P@>%Q>8B O M.R!X(#P@>#!<*5TL("));G!U=")=+ T*#0I#96QL6T)O>$1A=&%;#0H@(" @ M7"AY6V%?+"!B7RP@>#!?+"!X7UT at .CT@7"@H>" M('@P*5PI(&%<(&)<('@P M7%Y<*&(@+2 Q7"D at *R!A7"!X,%Q>8B O.R -"B @(" @(" @>"!<6T=R96%T M97)%<75A;%T@>#!<*5TL("));G!U=")=+ T*#0I#96QL6T)O>$1A=&%;#0H@ M(" @7"A0;&]T6WE;("XU+" R+" Q,"P@>%TL('MX+" P+" R,'U=7"E=+" B M26YP=70B72P-"@T*0V5L;%M";WA$871A6PT*(" @(%PH7"AV87(@/2 U.UPI M7"E=+" B26YP=70B72P-"@T*0V5L;%M";WA$871A6PT*(" @(%PH7"AD871A M(#T at #0H@(" @(" @(%1A8FQE6WMX+"!Y6R N-2P@,BP@,3 L('A=("L at 4F%N M9&]M6U)E86PL('M<*"UV87)<*2P at =F%R?5U]+"![>"P@,"P at #0H@(" @(" @ M(" @(" R,'U=.UPI7"E=+" B26YP=70B72P-"@T*0V5L;%M";WA$871A6PT* M(" @(%PH3&ES=%!L;W1;9&%T85U<*5TL("));G!U=")=+ T*#0I#96QL6T-E M;&Q'<F]U<$1A=&%;>PT*#0I#96QL6T)O>$1A=&%;#0H@(" @7"A.;VYL:6YE M87)&:71;9&%T82P at #0H@(" @("!%=F%L=6%T95MY6V%A+"!B8BP@>'@P+" - M"B @(" @(" @("!X>%U=+"![>'A]+"![>V%A+"![,2P@,3!]?2P@>V)B+"![ M,2P@,3!]?2P@>WAX,"P@>S$L(#$P?7U]+" -"B @(" @($UE=&AO9"!<6U)U M;&5=($=R861I96YT75PI72P@(DEN<'5T(ETL#0H-"D-E;&Q;0F]X1&%T85L- M"B @("!<*$9I;F1-:6YI;75M.CHB9FUG<R(@7"A<*#I<*5PH7"!<*5PI( T* M(" @(" @(D-O=6QD(&YO="!S>6UB;VQI8V%L;'D at 9FEN9"!T:&4 at 9W)A9&EE M;G0@;V8 at 7"%<*'E;7"A<*&%A+"!B8BP@>'@P+"!<#0HC,5PI7"E=7"DN(%1R M>2!U<VEN9R!T:&4 at 9&5F875L="!M971H;V0L(&=I=FEN9R!T=V\@<W1A<G1I M;F<@=F%L=65S(&9O<B!E86-H(%P-"G9A<FEA8FQE+B)<*5TL(")-97-S86=E M(ETL#0H-"D-E;&Q;0F]X1&%T85L-"B @("!<*$YO;FQI;F5A<D9I=#HZ(F9I M=&9A:6PB(%PH7"@Z7"E<*%P at 7"E<*2 -"B @(" @(")4:&4 at 9FET=&EN9R!A M;&=O<FET:&T at 9F%I;&5D+B)<*5TL(")-97-S86=E(ETL#0H-"D-E;&Q;0F]X M1&%T85L-"B @("!<*$YO;FQI;F5A<D9I=%M[>S L( T*(" @(" @(" @(# N M-#,S-C<T.#0Y,CDR-C(W,C- at ?2P@>S$L(%PH+3(N.#(X,S at P.3 S,S at T-#4W M8%PI?2P@>S(L( T*(" @(" @(" @(#$N.34W-#<V-C0Q,C P,S$T.&!]+"![ M,RP at 7"@M,"XS,3$V,C0W-#0R-SDR,#8T8%PI?2P@>S0L( T*(" @(" @(" @ M(#$R+C V.#,V.34R-C8P-# at X.&!]+"![-2P@,38N-#<P,# at P,#,W,C(W.# at X M8'TL('LV+" -"B @(" @(" @(" Q-"XY,#$Q,S(S.# at T.# X.#E at ?2P@>S<L M(#(W+C,U.#(V.# X.# S-3$Y8'TL('LX+" -"B @(" @(" @(" R.2XU,#<U M,38Q.#0S,3,X,35 at ?2P@>SDL(#0S+CDR-CDR,SDS,S$Q,#8Q-6!]+"![,3 L M( T*(" @(" @(" @(#4Q+C Q-#$Q-C<V,#(P,C9 at ?2P@>S$Q+" U.2XT-S0R M-#(V-#$V-C4S-&!]+"![,3(L( T*(" @(" @(" @(#8Y+CDX,C at X-38P.#8T M-# U8'TL('LQ,RP at -S8N-C(P-# at U-38T,S,S,S9 at ?2P@>S$T+" -"B @(" @ M(" @(" X-2XP,#0V-#4Y-S(W.3,Q-&!]+"![,34L(#DW+C at V-#DS,#,V.3 R M-# at U8'TL('LQ-BP at #0H@(" @(" @(" @,3 V+C4Q,C S,34S,3 at S-6!]+"![ M,3<L(#$Q-RXX,S8R,#0W.34R,38S-V!]+"![,3 at L( T*(" @(" @(" @(#$R M-BXT,S8Q.3 at S-S8S,C$Y,6!]+"![,3DL(#$S-BXY.3<P-34V.#8V-C,U8'TL M('LR,"P at #0H@(" @(" @(" @,30X+C(Y-C<X,C8U.#0Q-S(Q8'U]+" -"B @ M(" @('E;86$L(&)B+"!X># L( T*(" @(" @("!X>%TL('MX>'TL('M[86$L M('LQ+" Q,'U]+"![8F(L('LQ+" Q,'U]+"![>'@P+"![,2P@,3!]?7TL( T* M(" @(" @365T:&]D(%Q;4G5L95T at 1W)A9&EE;G1=7"E=+" B3W5T<'5T(ET- M"GTL($]P96X@(%U=#0I]+ T*1G)O;G1%;F1697)S:6]N+3XB-"XP(&9O<B!- M:6-R;W-O9G0 at 5VEN9&]W<R(L#0I38W)E96Y296-T86YG;&4M/GM[,"P@,3(X M,'TL('LP+" Y-3%]?2P-"E=I;F1O=U-I>F4M/GLV,S0L(# at S-'TL#0I7:6YD M;W=-87)G:6YS+3Y[>S$V+"!!=71O;6%T:6-]+"![075T;VUA=&EC+" R-'U] M#0I=#0H-"@T**"HJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ#0I#86-H960@ M9&%T82!F;VQL;W=S+B @268@>6]U(&5D:70 at =&AI<R!.;W1E8F]O:R!F:6QE M(&1I<F5C=&QY+"!N;W0 at =7-I;F<-"DUA=&AE;6%T:6-A+"!Y;W4@;75S="!R M96UO=F4 at =&AE(&QI;F4 at 8V]N=&%I;FEN9R!#86-H94E$(&%T('1H92!T;W @ M;V8 at #0IT:&4 at 9FEL92X@(%1H92!C86-H92!D871A('=I;&P at =&AE;B!B92!R M96-R96%T960 at =VAE;B!Y;W4@<V%V92!T:&ES(&9I;&4 at #0IF<F]M('=I=&AI M;B!-871H96UA=&EC82X-"BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*0T* M#0HH*D-E;&Q486=S3W5T;&EN90T*0V5L;%1A9W-);F1E>"T^>PT*(" B4S8N M-2XQ(BT^>PT*(" @($-E;&Q;,3<Q-RP at -#DL(#8V+" Q+" S-2P@(DEN<'5T M(BP-"B @(" @($-E;&Q486=S+3XB4S8N-2XQ(EU]#0H@('T-"BHI#0H-"B at J M0V5L;%1A9W-);F1E> T*0V5L;%1A9W-);F1E>"T^>PT*("![(E,V+C4N,2(L M(#0S,S8L(#$R-7T-"B @?0T**BD-"@T**"I.;W1E8F]O:T9I;&5/=71L:6YE M#0I.;W1E8F]O:UM[#0I#96QL6S$W,3<L(#0Y+" V-BP@,2P@,S4L("));G!U M="(L#0H@($-E;&Q486=S+3XB4S8N-2XQ(ETL#0I#96QL6S$W.#8L(#4R+" W M,BP@,2P@,S at L("));G!U=")=+ T*0V5L;%LQ.#8Q+" U-2P@,3,Q+" R+" S M."P@(DEN<'5T(ETL#0I#96QL6S$Y.34L(#4Y+" V-RP@,2P@,S8L("));G!U M=")=+ T*0V5L;%LR,#8U+" V,BP at -#4L(#$L(#,V+" B26YP=70B72P-"D-E M;&Q;,C$Q,RP at -C4L(#$S.2P@,RP@,3 U+" B26YP=70B72P-"D-E;&Q;,C(U M-2P at -S L(#0W+" Q+" S-BP@(DEN<'5T(ETL#0H-"D-E;&Q;0V5L;$=R;W5P M1&%T85M[#0I#96QL6S(S,C<L(#<U+" Q.#4L(#0L(# at R+" B26YP=70B72P- M"D-E;&Q;,C4Q-2P at .#$L(#(S-RP at -"P at .3,L(")-97-S86=E(ETL#0I#96QL M6S(W-34L(# at W+" Q,3,L(#(L(#,P+" B365S<V%G92)=+ T*0V5L;%LR.#<Q M+" Y,2P at .#0W+" Q-2P@,C8V+" B3W5T<'5T(ET-"GTL($]P96X@(%U=#0I] M#0I=#0HJ*0T*#0H-"@T*#0HH*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH- M"D5N9"!O9B!-871H96UA=&EC82!.;W1E8F]O:R!F:6QE+ at T**BHJ*BHJ*BHJ M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ 6*BHJ*BHJ*BHJ*BHJ*BHJ*BHI#0H-"@`` ` end