public override List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals) { double[] x = new double[numberOfIntervals + 1]; double[] y = new double[numberOfIntervals + 1]; double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals; for (int i = 0; i <= numberOfIntervals; i++) { x[i] = boundaryValue.beginX + i * step; } double[] alpha = new double[numberOfIntervals + 1]; double[] beta = new double[numberOfIntervals + 1]; y[0] = boundaryValue.beginY; y[numberOfIntervals] = boundaryValue.endY; alpha[1] = beta[1] = 0; for (int i = 2; i <= numberOfIntervals; i++) { double t = (alpha[i - 1] - (2 + step * step)); alpha[i] = -1 / t; beta[i] = ((2 - x[i - 1] * x[i - 1]) * step * step - beta[i - 1]) / t; } for (int i = numberOfIntervals - 1; i > 0; i--) { y[i] = alpha[i + 1] * y[i + 1] + beta[i + 1]; } List <double> res = new List <double>(y); return(res); }
public void getFrom(GetterListOfValues getter, BoundaryValue boundaryValue) { double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals; for (int i = 0; i <= numberOfIntervals; i++) { x.Add(boundaryValue.beginX + i * step); } y = getter.getValues(boundaryValue, numberOfIntervals); }
public Form1() { InitializeComponent(); one = new MainEquation(ksi); two = new MainEquation(ksi); graphicOne = new Graphic(5); graphicTwo = new Graphic(10); boundaryValue = new BoundaryValue(0.0, 0.0, 1.0, 1.0); }
public override List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals) { double[] x = new double[numberOfIntervals + 1]; double[] y = new double[numberOfIntervals + 1]; double[] a = new double[numberOfIntervals + 1]; double[] d = new double[numberOfIntervals + 1]; double[] fi = new double[numberOfIntervals + 1]; double[] alpha = new double[numberOfIntervals + 1]; double[] beta = new double[numberOfIntervals + 1]; double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals; for (int i = 0; i <= numberOfIntervals; i++) { x[i] = boundaryValue.beginX + i * step; } for (int i = 1; i < numberOfIntervals; i++) { d[i] = (q.integrateFuncton(x[i] - (step / 2), x[i] + (step / 2))) / step; fi[i] = (f.integrateFuncton(x[i] - (step / 2), x[i] + (step / 2))) / step; a[i] = step / (k.integrateDevidedOneIntoFunction(x[i - 1], x[i])); } a[numberOfIntervals] = step / (k.integrateDevidedOneIntoFunction(x[numberOfIntervals - 1], x[numberOfIntervals])); //////// y[0] = boundaryValue.beginY; y[numberOfIntervals] = boundaryValue.endY; for (int i = 2; i <= numberOfIntervals; i++) { alpha[i] = (-a[i]) / (-a[i] - a[i - 1] - d[i - 1] * step * step + alpha[i - 1] * a[i - 1]); beta[i] = (-fi[i - 1] * step * step - a[i - 1] * beta[i - 1]) / (-a[i] - a[i - 1] - d[i - 1] * step * step + alpha[i - 1] * a[i - 1]); } for (int i = numberOfIntervals - 1; i > 0; i--) { y[i] = alpha[i + 1] * y[i + 1] + beta[i + 1]; } List <double> res = new List <double>(y); return(res); }
public override List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals) { double[] x = new double[numberOfIntervals + 1]; double[] y = new double[numberOfIntervals + 1]; double step = (boundaryValue.endX - boundaryValue.beginX) / numberOfIntervals; for (int i = 0; i <= numberOfIntervals; i++) { x[i] = boundaryValue.beginX + i * step; } for (int i = 0; i <= numberOfIntervals; i++) { y[i] = getValue(x[i]); } List <double> res = new List <double>(y); return(res); }
abstract public List <double> getValues(BoundaryValue boundaryValue, int numberOfIntervals);