2015-05-03 3 views
0

Итак, ребята, я разрабатываю программу для структурного анализа, и я столкнулся с проблемой, с которой у меня возникла проблема. В принципе, у меня есть система уравнений, из которых мне нужно только решить некоторые из них. Те, что мне нужно решить, зависят от логического массива, true, если я это делаю, false, если я этого не делаю. Таким образом, имея истинное значение в n-м элементе массива, я должен решить n-е уравнение, поэтому это означает, что я должен получить элемент nxn матрицы системы уравнений. У вас, ребята, есть понимание?Получите матрицу из другой матрицы

+0

Вы должны решить всю систему, а затем получить нужное значение из вектора решения. Невозможно решить только одно уравнение. – NikolayKondratyev

+0

Если игнорировать целое уравнение не ослабит ограничения на систему, которые могли бы увеличить размерность пространства решений ... Пример был бы хорош. –

+0

Наверное, я не проявил себя правильно. Мне нужно решить только эти уравнения, потому что другие уже решены контурными условиями. Поэтому все, что мне нужно сделать, это получить квадратную матрицу из более крупной, я думаю. –

ответ

0

Итак, это то, что я придумал:

//Firstly, define the size of the subsystem: 
    int size = 0; 
    for(int i = 0; i < TrueorFalseMatrix.m; i++) { 
     if(TrueorFalseMatrix.data[i][0] != 0) 
      size+= 1; 
    } 
    //Then we can assign the size values to the Matrix of the subsystem 
    System_A = Matrix.matrizEmpty(size,size); 
    System_B = Matriz.matrizEmpty(size, 1); 
    //This array will store the coordinates of the coefficients that 
    //will be used 
    int[] Coordinates = new int[size]; 
    //We store these coordinates in the array 
    int count = 0; 
    for(int i = 0; i < TrueorFalseMatrix.m; i++) { 
     if(TrueorFalseMatrix.data[i][0] != 0) { 
      Dtrue[count] = i; 
      count++; 
     } 
    } 
    //We can now assign values to our system Matrix 
    for(int i = 0; i < size; i++) { 
     for(int j = 0; j < size; j++) { 
      System_A.data[i][j] = SourceMatrix.data[Dtrue[i]][Dtrue[j]]; 
     } 
     System_B.data[i][0] = SourceResultVector.data[Dtrue[i]][0] 
    } 
    //Results 
    double[] Results = System.solve(System_A,System_B); 
Смежные вопросы