Hi,
The code extract below is from the vb.net example for the lsfit routines called "
Quote:
lsfit_d_nlf example
"
Code:
Dim x(,) As Double = New Double(,){{-1},{-0.8},{-0.6},{-0.4},{-0.2},{0},{0.2},{0.4},{0.6},{0.8},{1.0}}
Dim y() As Double = New Double(){0.223130,0.382893,0.582748,0.786628,0.941765,1.000000,0.941765,0.786628,0.582748,0.382893,0.223130}
Dim c() As Double = New Double(){0.3}
Dim epsf As Double = 0
Dim epsx As Double = 0.000001
Dim maxits As Integer = 0
Dim info As Integer
Dim state As lsfitstate = New XAlglib.lsfitstate() ' initializer can be dropped, but compiler will issue warning
Dim rep As lsfitreport = New XAlglib.lsfitreport() ' initializer can be dropped, but compiler will issue warning
Dim diffstep As Double = 0.0001
'
' Fitting without weights
'
xalglib.lsfitcreatef(x, y, c, diffstep, state)
xalglib.lsfitsetcond(state, epsf, epsx, maxits)
xalglib.lsfitfit(state, AddressOf function_cx_1_func, Nothing, Nothing)
xalglib.lsfitresults(state, info, c, rep)
System.Console.WriteLine("{0}", info) ' EXPECTED: 2
System.Console.WriteLine("{0}", alglib.ap.format(c,1)) ' EXPECTED: [1.5]
I wish to try to use lsfit for curve fitting, but I'm not sure how the sort of problem I have should be set out in relation to various lsfit routines.
I understand that I must first create a solver object using one of the constructor functions - e.g xalglib.lsfitcreatef(x, y, c, diffstep, state)
in above code.
But I need help to establish how I should set up such a contructor? for the type of curve fitting problem I wish to code.
To give an example I have attached a file showing data for a measured curve, and a calculated curve composed of a weighted sum of four individual curves.
The first image and data show the calculated curve when the 4 coefficients are set to 1.
And the second image show it after solving by adjusting the coeffiients to get the best fit between the measured curve and the calculated curve.
I can se how x values are entered in the lsfit contructor, but I'm unsure how I should set it up to enter y values?
Any pointers and advice would be much appreaciated as I'd like to break away from having to do this in Excel.
many thanks