NonlinearRegress of user functions

• To: mathgroup at smc.vnet.net
• Subject: [mg91518] NonlinearRegress of user functions
• From: "Ngoc Anh Lai" <ngocanh.lai at boku.ac.at>
• Date: Mon, 25 Aug 2008 05:05:57 -0400 (EDT)

```Greetings all,
I have problem with nolinearRegress of my functions. Could you please
tell me what should I do to solve my problem?.

The problem is:
I have experimental data set of (Texp, pexp, rhoexp). With each value of
Texp, I will calculate pcal and rhocal by using functions pcal = psT[T,
A, B, C, D, E]  and rhocal = rhoT[T, A, B, C, D, E]. Parameters A, B, C,
D, E of the functions psT and rhoT will be found by Minimization of
(1-pcal/ pexp)^2+(1- rhocal/ rhoexp)^2 for all experimental data points.
rhocal and pcal is found by iteration and guessing of some value in
functions psT[T, A, B, C, D, E]  and rhoT[T, A, B, C, D, E] provided
values of T, A, B, C, D, E are given.

To solve the problem, I define
+  rhoT[T_,A_,B_,C_,D_,E_]:=Module[{rho}, â?? bunch of commands and
iterative procedures related to T, A, B, C, D, E to find rhoâ??, rho];
+ psT[T_,A_,B_,C_,D_,E_]:=Module[{ps}, â?? bunch of commands and iterative
procedures related to T, A, B, C, D, E to find psâ??, ps];
+ and experimental data set: tprho = {Texp, pexp, rhoexp}.

Firstly, I try to Minimize as:
toiuu=NMinimize[{Plus@@Table[(1-psT[tprho[[i,1]],
A1,B1,C1,D1,E1]/tprho[[i,2]])^2 + (1-rhoT[tprho[[i,1]],
A1,B1,C1,D1,E1]/tprho[[i,3]])^2,{i,Length[tprho[[All,1]]]}],
320.0<A1<550, 0.8<B1<1.8, 0.8<C1<1.80, 0.0<D1<20,
0.0<E1<20},{A1,B1,C1,D1,E1}];
{ A,B,C,D,E }={ A1,B1,C1,D1,E1}/.Last[toiuu];
I receive { A,B,C,D,E } ={ 327.593,1.63175,1.8,20.,0.00224707} while the
corrected values should be {A,B,C,D,E}
={440.2208,1.5161,1.4600,0.8646,4.9666}. I also shorten the constrained
range of  {A1,B1,C1,D1,E1} close to the corrected values of {A,B,C,D,E}
but it is still give the wrong answers.

Secondly, I try to use NoninearRegress as:
tprho[[All,4]]=0;
caseall=NonlinearRegress[tprho[[All,{1,2,3,4}]],(1-psT[T,A1,B1,C1,D1,E1]/pexp)^2
+ (1-rhoT[T,A1,B1,C1,D1,E1]/rhoexp)^2,{T,pexp, rhoexp
},{{A1,440},{B1,1.516},{C1,1.46},{D1,0.88},{E1,4.9}},RegressionReport->{BestFitParameters}];
{ A,B,C,D,E }={ A1,B1,C1,D1,E1}/.BestFitParameters/.caseall;
I receive { A,B,C,D,E } ={ 39094.2,341.312,96.922,27.3373,-155.741}. In
my opinion, this case, the psT and rhoT may not be call correctly
because the total running time of this NonlinearRegress is 0.141s while
I have 22 experimental data point and each data point need 5.125s to run
the function psT and 5.094s for function rhoT. The total running time
have to larger than 22*(5.125+5.094)s but not 0.141s. For this case, I

Set::shape: Lists \
{Statistics`NonlinearFit`Private`params,Statistics`NonlinearFit`Private`start,\
\[LeftSkeleton]38\[RightSkeleton],\[LeftSkeleton]38\[RightSkeleton],\
Statistics`NonlinearFit`Private`minr,Statistics`NonlinearFit`Private`maxr}
and \
{{\$Failed,\$Failed,\$Failed,\$Failed,\$Failed},{\$Failed,\$Failed,\$Failed,\$Failed,\$\
Failed},{\$Failed,\[LeftSkeleton]3\[RightSkeleton],\$Failed},{\$Failed,\$Failed,\$Failed,\$\
Failed,\$Failed},{\$Failed,\$Failed,\$Failed,\$Failed,\$Failed}}
are not the same shape.
Transpose::nmtx: The first two levels of the one-dimensional list
{Statistics`NonlinearFit`Private`params,Statistics`NonlinearFit`Private`minr,\
Statistics`NonlinearFit`Private`maxr} cannot be transposed.
Part::partw: Part 2 of {} does not exist
NonlinearFit::srange : The starting point
Statistics`NonlinearFit`Private`start for the least \
squares search for parameter estimates is outside the prescribed
parameter range
Transpose[Statistics`NonlinearFit`Private`minrâ?¤Statistics`NonlinearFit`\
Private`paramsâ?¤Statistics`NonlinearFit`Private`maxr].
and so on.

I really do not know which command or procedure or manipulation should
be implemented.
Could you please give me some suggestions.
Thanks and regards,
LAI Ngoc Anh

PS: There are some separated coefficient files and long source code for
the problem. I can not attach here. However, I can send it to your email