Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: NonlinearFit problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66527] Re: NonlinearFit problem
  • From: dh <dh at metrohm.ch>
  • Date: Fri, 19 May 2006 03:39:17 -0400 (EDT)
  • References: <e4ekoe$9fa$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi Oliver,
to fit a complex function f you may e.g. use NMinimize and minimize the 
absolute value of some "error" function.
E.g., assume f depends on the independent variable z and a parameter p: 
f[z,p]. Further, you have data d={{z,f[z]},..}. You may the define an 
"error" function:
ff[p] = Norm[ d[[All, 2]] - (f[#, p] & /@ d[[All, 1]]) ];
here we used Norm to get the "length of the error". Finally:
NMinimize[ff[p],p]
gets the optimal p value.

Daniel

Oliver Friedrich wrote:
> Hallo,
> 
> I want to use the NonlinearFit algorithm to obtain the parameters of a 
> lossy line. There is a model
> 
> Cell[BoxData[
>     RowBox[{
>       SqrtBox[
>         FractionBox[
>           RowBox[{
>             RowBox[{"2", " ", "\[ImaginaryI]", " ", "f", " ", "L", " ", 
> "\[Pi]"}], "+", 
>             RowBox[{
>               SqrtBox["f"], " ", 
>               SqrtBox[
>                 RowBox[{"2", " ", "\[Pi]"}]], " ", 
>               SubscriptBox["R", "skin"]}]}], 
>           RowBox[{"G", "+", 
>             RowBox[{"2", " ", "\[ImaginaryI]", " ", "C", " ", "f", " ", 
> "\[Pi]"}]}]]], " ", 
>       RowBox[{"Tanh", "[", 
>         RowBox[{"1.`", " ", 
>           SqrtBox[
>             RowBox[{
>               RowBox[{"(", 
>                 RowBox[{"G", "+", 
>                   RowBox[{"2", " ", "\[ImaginaryI]", " ", "C", " ", "f", 
> " ", "\[Pi]"}]}], ")"}], " ", 
>               RowBox[{"(", 
>                 RowBox[{
>                   RowBox[{"2", " ", "\[ImaginaryI]", " ", "f", " ", "L", 
> " ", "\[Pi]"}], "+", 
>                   RowBox[{
>                     SqrtBox["f"], " ", 
>                     SqrtBox[
>                       RowBox[{"2", " ", "\[Pi]"}]], " ", 
>                     SubscriptBox["R", "skin"]}]}], ")"}]}]]}], "]"}]}]], 
> "Output",
>   CellLabel->"Out[166]="]
> 
> that describes the input impedance of a lossy line when shorted at the 
> end. The line parameters to obtain are Rskin,L,G and C. f is the 
> independant variable. I have data of the line of the form {{f1,Z1},
> {f2,Z2},...} where Z is of course complex.
> Unfortunately NonlinearFit seems to have problems with complex numbers 
> since it returns with messages saying "Objective function isn't real 
> at...".
> Does anyone knows how to fix NonlinearFit for complex numbers or any 
> other numerical method that could solve my problem?.
> 
> Thank you
> Oliver
> 



  • Prev by Date: Re: FindRoot syntax?
  • Next by Date: Re: Re: level curve selection
  • Previous by thread: Re: NonlinearFit problem
  • Next by thread: Re: NonlinearFit problem