using System;
namespace Legalsoft.Truffer
{
public class Linemethod
{
public double[] p { get; set; }
public double[] xi;
public int n { get; set; }
public RealValueFun func;
public Linemethod(RealValueFun funcc)
{
this.func = funcc;
}
public double linmin()
{
n = p.Length;
F1dim f1dim = new F1dim(p, xi, func);
double ax = 0.0;
double xx = 1.0;
Brent brent = new Brent();
brent.bracket(ax, xx, f1dim);
double xmin = brent.minimize(f1dim);
for (int j = 0; j < n; j++)
{
xi[j] *= xmin;
p[j] += xi[j];
}
return brent.fmin;
}
}
}