从另一个矩阵中获取矩阵

时间:2022-04-11 15:59:14

So guys, I'm developping a program for Structural Analysis and I came across a problem that I'm having some problem to solve. Basically, I have a system of equations, of which I only need to solve some of them. The ones I need to solve depend on a boolean array, true if I do, false if I don't. This way, having a true value in the nth element of the array means I'll have to solve the nth equation, therefore meaning that I have to get the nxn element of the matrix of the system of equations. Do you guys have any insight on it?

那么伙计们,我正在开发一个结构分析程序,我遇到了一个问题,我要解决一些问题。基本上,我有一个方程组,我只需要解决其中的一些方程。我需要解决的问题取决于布尔数组,如果我这样做则为true,否则为false。这样,在数组的第n个元素中具有真值意味着我将必须求解第n个方程,因此意味着我必须得到方程组的矩阵的nxn元素。你们有什么见解吗?

1 个解决方案

#1


So, this is what I've come up with:

所以,这就是我想出来的:

//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);

#1


So, this is what I've come up with:

所以,这就是我想出来的:

//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);