Re: NonlinearFit
- To: mathgroup at smc.vnet.net
- Subject: [mg42221] Re: NonlinearFit
- From: gohtk at rocketmail.com (goh tat kean)
- Date: Tue, 24 Jun 2003 01:27:08 -0400 (EDT)
- References: <bd6j0m$ca7$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Dear Andy,
Not too sure whether I am on the right track.
You defined a function,
Re[a Exp[I Pi*b/180]/(x - c + I d)^2.5]
To use NonlinearFit, you need to extract the real part of the
function.
Assume you have a function of 3 + 4 I, the real part of this function
is 3.
Consider the following,
(3 + 4 I)*Conjugate[3 + 4 I]
= 3^2 - 4 I^2
One can obtain 3 from the above by taking square root of the real
part,
(3^2)^0.5
= 3
Let us use the above described method on your function,
a Exp[I Pi*b/180]/(x - c + I d)^2.5
(a Exp[I Pi*b/180]/(x - c + I d)^2.5)*Conjugate[a Exp[I Pi*b/180]/(x -
c + I d)^2.5]
Expand the complex function,
ComplexExpand[%, TargetFunctions -> {Re, Im}]
Take out the real part of the expanded complex function and square
root it,
(a^2 Cos[2.5 ArcTan[-c + x, -d]] Cos[
2.5 ArcTan[-c + x, d]]/(d^2 + (x - c)^2)^2.5 - (a^2 Sin[
2.5 ArcTan[-c + x, -d]] Sin[
2.5 ArcTan[-c + x, d]]/(d^2 + (x - c)^2)^2.5))^0.5
Load in the NonlinearFit package,
<< Statistics`NonlinearFit`
Start the fitting,
ft1 = NonlinearFit[data1, (a^2 Cos[2.5 ArcTan[-c + x, -d]] Cos[
2.5 ArcTan[-c + x, d]]/(d^2 + (x - c)^2)^2.5 - (a^2 Sin[
2.5 ArcTan[-c + x, -d]] Sin[
2.5 ArcTan[-c + x, d]]/(d^2 + (x - c)^2)^2.5))^0.5, x, {a,
b, c, d}, ShowProgress -> True]
Plot of the experimental and fitted curves,
gex = ListPlot[data1]
gft = Plot[ft1, {x, 1, 10}]
Show[gex, gft]
Hope this can help. Good luck!
Regards,
tat kean
lamp02 at hotmail.com (Andrew Kang) wrote in message news:<bd6j0m$ca7$1 at smc.vnet.net>...
> Hi,
>
> Please could someone assist me in curve fitting.
>
> I have imported a x,y file as follows:
>
> data1 = ReadList["data.txt",{Real,Real}]
>
> Now I wish to fit a curve of the form below to it:
>
> Re[a Exp[I Pi*b/180]/(x - c + I d)^2.5]
>
> ,where a, b, c, d are parameters to be determined (real numbers), and
> 'I' means the imaginary part of a complex number.
>
> I tried the following but it doesn't work:
>
> <<Statistics`NonlinearFit`
>
> NonlinearFit[data1, Re[a Exp[I Pi*b/180]/(x - c + I
> d)^2.5],{x},{{a,0,0001},{b,120},{c,1.26},{d,0.05}}]
>
> Please help me.
>
> Thanks is advance
>
> Andy