1 文本格式
using System;
namespace Legalsoft.Truffer
{
/// <summary>
/// Functor for variogram v(r)=ar^b,
/// where b is specified, a is fitted from the data.
/// </summary>
public class Powvargram
{
private double alph { get; set; }
private double bet { get; set; }
private double nugsq { get; set; }
public Powvargram(double[,] x, double[] y, double beta = 1.5, double nug = 0.0)
{
this.bet = beta;
this.nugsq = nug * nug;
int npt = x.GetLength(0);
int ndim = x.GetLength(1);
double num = 0.0;
double denom = 0.0;
for (int i = 0; i < npt; i++)
{
for (int j = i + 1; j < npt; j++)
{
double rb = 0.0;
for (int k = 0; k < ndim; k++)
{
rb += Globals.SQR(x[i, k] - x[j, k]);
}
rb = Math.Pow(rb, 0.5 * beta);
num += rb * (0.5 * Globals.SQR(y[i] - y[j]) - nugsq);
denom += Globals.SQR(rb);
}
}
alph = num / denom;
}
public double functorMethod(double r)
{
return nugsq + alph * Math.Pow(r, bet);
}
}
}
2 代码格式
using System;
namespace Legalsoft.Truffer
{
/// <summary>
/// Functor for variogram v(r)=ar^b,
/// where b is specified, a is fitted from the data.
/// </summary>
public class Powvargram
{
private double alph { get; set; }
private double bet { get; set; }
private double nugsq { get; set; }
public Powvargram(double[,] x, double[] y, double beta = 1.5, double nug = 0.0)
{
this.bet = beta;
this.nugsq = nug * nug;
int npt = x.GetLength(0);
int ndim = x.GetLength(1);
double num = 0.0;
double denom = 0.0;
for (int i = 0; i < npt; i++)
{
for (int j = i + 1; j < npt; j++)
{
double rb = 0.0;
for (int k = 0; k < ndim; k++)
{
rb += Globals.SQR(x[i, k] - x[j, k]);
}
rb = Math.Pow(rb, 0.5 * beta);
num += rb * (0.5 * Globals.SQR(y[i] - y[j]) - nugsq);
denom += Globals.SQR(rb);
}
}
alph = num / denom;
}
public double functorMethod(double r)
{
return nugsq + alph * Math.Pow(r, bet);
}
}
}