using System; namespace Science.Mathematics.VectorCalculus { public class SurfaceIntegralScalar { private Surface s; private double res; Function.ToLastType f; public SurfaceIntegralScalar(Function.ToLastType function, Surface surface) { f = function; s = surface; } public void Compute() { double[] f = { s.Parameter1StartValue, s.Parameter2StartValue }; double[] t = { s.Parameter1EndValue, s.Parameter2EndValue }; Function.ToLastType fs = new Function.ToLastType(Func); IntegrationMultiD obj = new IntegrationMultiD(fs, f, t); obj.NumberOfCall = nc; obj.Compute(); res = obj.BestEstimation; tgral = obj.BestEstimation; sd = obj.StandardDeviation; chi2 = obj.ChiSQUARE; } private double Func(double[] u) { TangentVectorOnSurface tv = new TangentVectorOnSurface(s, u); tv.Compute(); Vector n = tv.Result[0] % tv.Result[1]; double[] x = s.Parametrization(u); return f(x)*n.Norm; } public double Result { get { return res; } } private double tgral, sd, chi2; private ulong nc = 100000; public double BestEstimation { get { return tgral; } } public double StandardDeviation { get { return sd; } } public double ChiSQUARE { get { return chi2; } } public ulong NumberOfCall { set { nc = value; } } } }