// Functions to calculate solution derivative on outer curve protected double Omega1(double tx) { DoubleCore <double> core = new DoubleCore <double>(Omega1CoreNotSingular); core.Prepare(tx); return(-Integral.CalculateWithHyperSingularCore(core, PointsNumber)); // перевірити обчисленн гіперсинугялрного інтегралу }
/// <summary> /// Is used to build solution /// </summary> /// <param name="x"></param> /// <returns></returns> private double PartialSolution(Point x) { DoubleCore <Point> core = new DoubleCore <Point>(RightPartCore); core.Prepare(x); return(-Integral.CalculateWithTrapeziumMethod(core, PointsNumber)); }
public InverseCrackProblemState(double radius, int pointsNumber, int correctionPolinomPower, IInversProblemTestData inverseProblemTestData) : base(radius, pointsNumber, inverseProblemTestData.GetDirectProblemData()) { CorrectionPolinomPower = correctionPolinomPower; InversProblemTestData = inverseProblemTestData; FreshetCoreByX = new DoubleCore <double>(FreshetByXCoreFunction); FreshetCoreByY = new DoubleCore <double>(FreshetByYCoreFunction); LinDataEquationRightPart = new Func <double, double>(LinDataEquationRightPartFucntion); }
private double DirectProblemRightPartFunction(double tParam) { DoubleCore <double> core = new DoubleCore <double>((t, tau) => { Point pointX = new Point(InnerCurve.GetX(t), InnerCurve.GetY(t)); return(RightPartCore(pointX, tau)); }); core.Prepare(tParam); return(2.0 * Integral.CalculateWithTrapeziumMethod(core, PointsNumber) + 2.0 * OnCrackValueFunction(tParam)); }
public DirectProblemState(double radius, int pointsNumber, IDirectProblemTestData directProblemTestData) { Radius = radius; OuterCurve = new StarCurve(OuterRadialFunction); InnerCurve = new ParametrizedCurve(InnerXFuntion, InnerYFunction, InnerXFuntionDerivetive, InnerYFunctionDerivetive); PointsNumber = pointsNumber; DirectProblemCore = new DoubleCore <double>(CoreFunction); RightPartFunction = DirectProblemRightPartFunction; DirectProblemTestData = directProblemTestData; }
private double LinDataEquationRightPartFucntion(double t) { var core = new DoubleCore <Point>(DataEquationOperatorCore); core.Prepare(new Point( OuterCurve.GetX(t), OuterCurve.GetY(t))); var result = -Integral.CalculateWithTrapeziumMethod(Density, core) - Omega1(t); return(result); }
public double[] BuildSolutionDerivativeOnOuterCurve(double[] density) { var descretePoints = IntegralEquationDiscretezer.GetDiscretePoints(PointsNumber); var solutionDerivative = new double[descretePoints.Length]; for (int i = 0; i < descretePoints.Length; i++) { var core = new DoubleCore <Point>(DataEquationOperatorCore); core.Prepare(new Point( OuterCurve.GetX(descretePoints[i]), OuterCurve.GetY(descretePoints[i]))); solutionDerivative[i] = Integral.CalculateWithTrapeziumMethod(density, core) + Omega1(descretePoints[i]); } return(solutionDerivative); }