Ejemplo n.º 1
0
void Interpolate(int n) {
  FreeMem();
  GetMem(n);

  GetMaxMin();
  GetNodesAndValues(n);
  GetWeights(n);
}
Ejemplo n.º 2
0
void Interpolate(int n)
{
    delete x;
    delete fv;
    delete xi;
    delete v;
    delete aa;
    delete bb;
    x = new double[n];
    fv = new double[n];
    xi = new double[n+1];
    v = new double[n+1];
    aa = new double[(n+1)*(n+1)];
    bb = new double[n+1];
    
    GetNodesAndValues(n);
    
    for (int i = 1; i <= n+1; i++)
	for (int j = 1; j <= n+1; j++) A(i,j) = 0;
	
    for (int i = 2; i <= n; i++) //make system
    {
	A(i,i-1) = 1.0/(X(i-1)-XI(i-1)) - 1/(XI(i)-XI(i-1));
	A(i,i)   = 1.0/(XI(i)-X(i-1)) + 1.0/(XI(i)-XI(i-1)) + 1.0/(X(i)-XI(i)) + 1.0 /(XI(i+1)-XI(i));
	A(i,i+1) = 1.0/(XI(i+1)-X(i)) - 1.0/(XI(i+1)-XI(i));
	
	B(i) = F(i-1) * (1.0/(X(i-1)-XI(i-1)) + 1.0/(XI(i)-X(i-1)))+
		F(i) * (1.0/(X(i)-XI(i)) + 1.0/(XI(i+1)-X(i)));
    }
    
    // border conditions
    int i;
    i = 1;
    A(i,i) = 1.0/(X(i)-XI(i));
    A(i,i+1) = 1.0/(XI(i+1)-X(i));
    B(i) = F(i)*(1.0/(X(i)-XI(i))+ 1.0/(XI(i+1)-X(i)));

    i = n;
    A(i+1,i) = 1.0/(X(i)-XI(i));
    A(i+1,i+1) = 1.0/(XI(i+1)-X(i));
    B(i+1) = F(i)*(1.0/(X(i)-XI(i))+ 1.0/(XI(i+1)-X(i)));
    
//    PrintMatrix(aa,bb,n+1);
    
    
    SolveSystem(n+1,aa,bb,v);
}
Ejemplo n.º 3
0
void Interpolate(int n) {
  FreeMem();
  GetMem(n);

  GetMaxMin();
  GetNodesAndValues(n);
  MakeMatrix(n);

  double *ss = new double[n - 2];
  SolveSystem(n - 2, aa, bb, ss);
  for (int i = 2; i < n; i++)
    D(i) = ss[i - 2 - 1];
  delete ss;

  EM(1, 1) = X(1) * X(1) * X(1);
  EM(1, 2) = X(1) * X(1);
  EM(1, 3) = X(1);
  EM(1, 4) = 1.0;

  EM(2, 1) = X(2) * X(2) * X(2);
  EM(2, 2) = X(2) * X(2);
  EM(2, 3) = X(2);
  EM(2, 4) = 1.0;

  EM(3, 1) = X(3) * X(3) * X(3);
  EM(3, 2) = X(3) * X(3);
  EM(3, 3) = X(3);
  EM(3, 4) = 1.0;

  EM(4, 1) = 3.0 * X(3) * X(3);
  EM(4, 2) = 2.0 * X(3);
  EM(4, 3) = X(3);
  EM(4, 4) = 0.0;

  eb[0] = F(1);
  eb[1] = F(2);
  eb[2] = F(3);
  eb[3] = D(3);

  SolveSystem(4, em, eb, exs);

  EM(1, 1) = X(n - 2) * X(n - 2) * X(n - 2);
  EM(1, 2) = X(n - 2) * X(n - 2);
  EM(1, 3) = X(n - 2);
  EM(1, 4) = 1.0;

  EM(2, 1) = X(n - 1) * X(n - 1) * X(n - 1);
  EM(2, 2) = X(n - 1) * X(n - 1);
  EM(2, 3) = X(n - 1);
  EM(2, 4) = 1.0;

  EM(3, 1) = X(n) * X(n) * X(n);
  EM(3, 2) = X(n) * X(n);
  EM(3, 3) = X(n);
  EM(3, 4) = 1.0;

  EM(4, 1) = 3.0 * X(n - 2) * X(n - 2);
  EM(4, 2) = 2.0 * X(n - 2);
  EM(4, 3) = X(n - 2);
  EM(4, 4) = 0.0;

  eb[0] = F(n - 2);
  eb[1] = F(n - 1);
  eb[2] = F(n);
  eb[3] = D(n - 2);

  SolveSystem(4, em, eb, exe);
}