[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Nonlinear fitting with lg(a+x)

From: reposepuppy
Subject: Nonlinear fitting with lg(a+x)
Date: Fri, 13 Mar 2009 01:20:53 -0700 (PDT)

I'm a college student who is attending a physical chemistry class now, and
we're required to process the data obtained from experiments we've done to
reach a plausible conclusion every week. 
This time, I've got 2 columns of data, and one of them is the concentration
of a solution [c], the other the surface tension of the solution [r]; the
task is to draw the curve representing the function of F(c,r)=0, and use it
to draw the curve representing the function of F(c, dr/dc)=0 to reach some
conclusion。I found out on the Internet that there is a function between them
stated as :
where r0 is the surface tension when there is no solute in the solution, or
in other words, c=0; it could be measured during the experiment. The
constants a and b could be determined by making a nonlinear fitting using
the data I've got.
That's the question: I don't know how to transform this nonlinear function
into a linear one; I could only make it (1-r/r0)=a*lg(b+c)-a*lg(b) and using
the trial-and-error method(*See below) to find out what a and b are. But the
error is too much for me(about 30% away from the theoretical one).

Does anyone know how to solve this fitting problem using solely Octave? 
Thanks for help!

* The trial-and-error method I used is here, using Microsoft Excel (I could
use Octave only to deal with some integration problem and linear
First, input the data into Excel and draw a XY scattered diagram, where
X=(1-r/r0) and Y=lg(b+c). A linear distribution of dots would appear if the
value of b was right.
Second, calculate the R^2(the square of correlation coefficient) . It would
be a value very close to 1 if the value of b was right.
Third, change the b value until I can't make the R^2 higher. First try from
0 to 10, and find out the optimal value, and minimize the scale by 10 fold
and try again... I tried from 0 to 2, and found out the R^2 will be the
biggest when b was 0.6; and I tried from 0.50 to 0.70 and I found out it's
0.59~0.62(the R^2 will not change any more during this range).  
View this message in context:
Sent from the Octave - General mailing list archive at

reply via email to

[Prev in Thread] Current Thread [Next in Thread]