Troubles in NonlinearFit-Why always failed?
- To: mathgroup at smc.vnet.net
- Subject: [mg65913] Troubles in NonlinearFit-Why always failed?
- From: "simon yang" <yanshanguke at 163.com>
- Date: Sun, 23 Apr 2006 06:17:16 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Dear Everyone, I Try to fit a data table with a step function: Epsilon2[x] with parameters: A, E0, GamaLorentz, Eg, Ep, Eu, Et, E1 Epsilon2[x_] := If[x>=Et, Gc[x] * L[x], (E1/x) Exp[(x-Et)/Eu]] Gc[x_] := (x-Eg)^2 / ((x-Eg)^2 + Ep^2) L[x_] := (A * E0 * GamaLorentz * x) / ((x^2 - E0^2)^2 + GamaLorentz^2 * x^2) NonlinearRegress[data, Epsilon2[x],{x},{{A,80},{E0,2.8},{GamaLorentz,2.2},{Eg,1.7},{Ep,0.9},{Eu, 0.05},{Et,1.8} ,{E1,5.8}}] but error messages always display though the starting value of the parameters is same to these from articles, such as \!\(\* RowBox[{\(FindFit::"lstol"\), \(\(:\)\(\ \)\), "\<\"The line search \ decreased the step size to within tolerance specified by AccuracyGoal and \ PrecisionGoal but was unable to find a sufficient decrease in the norm of the \ residual. You may need more than \\!\\(MachinePrecision\\) digits of working \ precision to meet these tolerances. \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"FindFit::lstol\\\"]\\)\"\>"}]\) The data is: 1.5 0 1.5561 0 1.6121 0 1.7057 0.303 1.7805 0.303 1.8927 0.303 1.9676 0.6061 2.0239 1.2121 2.0988 1.5151 2.1552 2.1212 2.2117 3.0303 2.3053 3.3333 2.3619 4.5455 2.4373 5.7576 2.5125 6.6667 2.5316 7.5758 2.6068 8.4848 2.6824 10.303 2.7576 11.2121 2.8142 12.4242 2.8707 13.3333 2.9275 14.8485 2.9656 16.3636 3.0035 17.5758 3.1161 18.4848 3.1355 20 3.1923 21.5152 3.2678 23.0303 3.3806 24.5455 3.4749 26.3636 3.5316 27.5758 3.644 28.1818 3.7563 28.4848 3.8311 28.4848 3.9431 28.1818 4.0176 27.5758 4.1291 26.3636 4.1848 25.4545 4.2403 24.2424 4.3146 23.3333 4.389 22.4242 4.4446 21.5152 4.5377 20.6061 4.5933 19.697 4.6675 18.4848 4.7233 17.8788 4.779 16.9697 The code \!\(Gc[xE_] := \((xE - Eg)\)\^2\/\(\((xE - Eg)\)\^2 + Ep\^2\)\) \!\(L[xE_] := \((A\ E0\ GamaLorentz\ xE)\)/\((\((xE\^2 - E0\^2)\)\^2 + GamaLorentz\^2\ xE\^2)\)\) \!\(Epsilon2[xE_] := If[xE \[GreaterEqual] Et, Gc[xE]*L[xE], \(E1\/xE\) Exp[\(xE - Et\)\/Eu]]\) <<Statistics`NonlinearFit` NonlinearRegress[dataE2, Epsilon2[x],{x},{{A,80},{E0,2.8},{GamaLorentz,2.2},{Eg,1.7},{Ep,0.9},{Eu, 0.05},{Et,1.8} ,{E1,5.8}}] (*E1 was used to made the function continuous : E1=Et*Gc[Et]*L[Et] but it made the fit more complicated, so I set it as a fitting parameter *) Thx Simon