Exemple #1
0
 public static Psi[][][] CalculatePsi(double[][] lambda, PolinomType p_type, int[] rang, int[] x, int multiplicative)
 {
     Psi[][][] result = new Psi[lambda.Length][][];
     for (int i = 0; i < result.Length; i++)
     {
         result[i] = new Psi[3][];
         for (int l = 0; l < 3; l++)
         {
             Log.WriteLine(" X" + i + ":");
             result[i][l] = new Psi[x[l]];
             for (int j = 0; j < result[i][l].Length; j++)
             {
                 result[i][l][j] = new Psi(multiplicative);
                 for (int k = 0; k <= rang[l]; k++)
                 {
                     int index = (j+2*l) * (rang[l] + 1) + k;
                     //for (int m = 0; m < l; m++)
                     //    index += (x[m]) * (rang[m] + 1);
                    result[i][l][j].lambda.Add(lambda[i][index]);
                     result[i][l][j].Add(new Polinom(p_type, k));
                 }
             }
         }
     }
     return result;
 }
Exemple #2
0
 public double Calculate(double x, int rang, PolinomType type)
 {
     switch (type)
     {
         case PolinomType.Chebyshev:
             return Chebyshev(x, rang);
         case PolinomType.Lejandr:
             return Lejandr(x, rang);
         case PolinomType.Lagger:
             return Lagger(x, rang);
         case PolinomType.Hermit:
             return Hermit(x, rang);
         default:
             throw new NotSupportedException();
     }
 }
Exemple #3
0
 public static double[][] Alm_Create(int matrix_number, int rang, PolinomType p_type, double[][] X1, double[][] X2,
     double[][] X3, double[][] Y)
 {
     var A = new double[Y.Length][];
     switch (matrix_number)
     {
         case 1:
             for (int i = 0; i < A.Length; i++) A[i] = new double[(rang + 1) * (X1[0].Length)];
             for (int i = 0; i < A.Length; i++)
             {
                 for (int j = 0; j < X1[0].Length; j++)
                 {
                     for (int k = 0; k < rang + 1; k++) A[i][j * (rang + 1) + k] = Math.Log(1+new Polynom().Calculate(X1[i][j], k, p_type));
                 }
             }
             break;
         case 2:
             for (int i = 0; i < A.Length; i++) A[i] = new double[(rang + 1) * (X2[0].Length)];
             for (int i = 0; i < A.Length; i++)
             {
                 for (int j = 0; j < X2[0].Length; j++)
                 {
                     for (int k = 0; k < rang + 1; k++) A[i][j * (rang + 1) + k] = Math.Log(1+new Polynom().Calculate(X2[i][j], k,
                     p_type));
                 }
             }
             break;
         case 3:
             for (int i = 0; i < A.Length; i++) A[i] = new double[(rang + 1) * (X3[0].Length)];
             for (int i = 0; i < A.Length; i++)
             {
                 for (int j = 0; j < X3[0].Length; j++)
                 {
                     for (int k = 0; k < rang + 1; k++) A[i][j * (rang + 1) + k] = Math.Log(1+new Polynom().Calculate(X3[i][j], k, p_type));
                 }
             }
             break;
     }
     return A;
 }
 public static Psi[][][] CalculatePsi(double[][] lambda, PolinomType p_type, int[] rang, int[] x, bool useFrom2Lab)
 {
     Psi[][][] result = new Psi[lambda.Length][][];
     for (int i = 0; i < result.Length; i++)
     {
         result[i] = new Psi[3][];
         for (int l = 0; l < 3; l++)
         {
             Log.WriteLine(" X" + i + ":");
             result[i][l] = new Psi[x[l]];
             for (int j = 0; j < result[i][l].Length; j++)
             {
                 result[i][l][j] = new Psi(useFrom2Lab ? 1 : 0);
                 for (int k = 0; k <= rang[l]; k++)
                 {
                     int index = (x[0]) * (rang[0] + 1) + (x[1]) * (rang[1]) + j * (rang[2]) + k;
                     result[i][l][j].lambda.Add(lambda[i][index]);
                     result[i][l][j].Add(new Polinom(p_type, k));
                 }
             }
         }
     }
     return result;
 }
Exemple #5
0
 public static double[][] A_Create(int[] rang, PolinomType p_type, double[][] X1, double[][] X2,
     double[][] X3, double[][] Y)
 {
     var rang_1 = rang[0];
     var rang_2 = rang[1];
     var rang_3 = rang[2];
     var A = new double[Y.Length][];
     for (var i = 0; i < A.Length; i++)
         A[i] =
             new double[(rang_1 + 1)*(X1[0].Length) + (rang_2 + 1)*(X2[0].Length) + (rang_3 + 1)*(X3[0].Length)];
     for (var i = 0; i < A.Length; i++)
     {
         for (var j = 0; j < X1[0].Length; j++)
             for (var k = 0; k < rang_1 + 1; k++)
                 A[i][j * (rang_1 + 1) + k] = new Polynom().Calculate(X1[i][j], k, p_type);
         for (var j = 0; j < X2[0].Length; j++)
             for (var k = 0; k < rang_2 + 1; k++)
                 A[i][(rang_1 + 1) * (X1[0].Length) + j * (rang_2 + 1) + k] = new Polynom().Calculate(X2[i][j], k,
                     p_type);
         for (var j = 0; j < X3[0].Length; j++)
             for (var k = 0; k < rang_3 + 1; k++)
                 A[i][(rang_1 + 1) * (X1[0].Length) + (rang_2 + 1) * (X2[0].Length) + j * (rang_3 + 1) + k] =
                     new Polynom().Calculate(X3[i][j], k, p_type);
     }
     return A;
 }