Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Leas squares curve fit problem

  1. Jun 22, 2012 #1
    The main problem is that I have no idea what I am doing. But second to that I am attempting to fit a curve to some data using the equation

    y = ((1/A(x-B)^(C+1))+D)^-1

    if that makes sense

    I need to get the values for A,B,C and D and so have been looking into lsqnonlin but I am having problems. I may also be making life hard for myself as I am also trying to incorporate it into a GUI. Here is an example of what I have been trying

    this is my function

    Code (Text):
       function F = myfun(x,Vg,Gd)
            A = x(1);
            B = x(2);
            C = x(3);
            D = x(4);
            F = (((1/(A.*(x-B)^(C+1)))+D)^-1)-Gd;
    this is how I attempt to use lsqnonlin

    Code (Text):
     cla reset;
         Vg = A.data(:,1);
         Id = A.data(:,6);
         Vd = A.data(:,5);
         Gd = (Id./Vd);
        x=lsqnonlin(@myfun,[1*10^9 -1 1 3*10^5],[],[],[],Vg,Gd);
        %Gd_new = (((1/(x(1).*(x-x(2))^(x(3)+1)))+x(4))^-1);
    can anyone give me a hand in either starting again or making this work?

  2. jcsd
  3. Jun 22, 2012 #2
    is this matlab?

    I have a problem with the choice of variable names.

    You know that array x() that you have chosen to pass 4 constants (A,B,C,D) in one shot into the function? How come that the scalar x, and I mean the only 'x' in the equation, has the same name? I think you have to decouple those two things, for starters.
  4. Jun 23, 2012 #3
    If your problem is that you have vectors x and y that contain your data, and you want to find A, B, C and D for the equation shown as a fit to that data, try the curve fitting toolbox. Run cftool, select x and y as your data set, then under fit select custom equation and you can enter the equation in the form you want, and it will calculate the coefficients.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook