Yahoo Answers is shutting down on May 4th, 2021 (Eastern Time) and beginning April 20th, 2021 (Eastern Time) the Yahoo Answers website will be in read-only mode. There will be no changes to other Yahoo properties or services, or your Yahoo account. You can find more information about the Yahoo Answers shutdown and how to download your data on this help page.

need help with a matrix solution?

have a matrix A1

[ Yb -(-U1-Yr) Yp g

Lb Lr Lp 0

Nb+Nt Nr Np 0

0 0 1 0]

A1 is also equal to a number.. All the variables in this matrix are known except for Nt..how can I find it? I know I would be able to solve the system if the matrix was equal to another matrix, but how can I solve it if it's equal to a single number that is not zero?

1 Answer

Relevance
  • 1 decade ago
    Favorite Answer

    Here is a code for a matrix solver should help

    #include <iostream>

    using namespace std;

    void output(int height, int width, long int * matrix)

    {

    cout<<"__________________"<<endl;

    long int (*matrix2)[width];

    matrix2=(long int (*)[width]) matrix;

    int row_temp;

    int column_temp;

    for (row_temp=0;row_temp<height;row_temp++) {

    for (column_temp=0;column_temp<width;column_temp++) {

    cout<<matrix2[row_temp][column_temp]<<" ";

    }

    cout<<endl;

    }

    }

    void switch_rows(int row1, int row2, int width, long int * matrix)

    {

    long int (*matrix2)[width];

    matrix2=(long int (*)[width]) matrix;

    int temp;

    int column_temp;

    for (column_temp=0;column_temp<width;column_temp++) {

    temp=matrix2[row1][column_temp];

    matrix2[row1][column_temp]=matrix2[row2][column_temp];

    matrix2[row2][column_temp]=temp;

    }

    }

    void multiply_row(int row, long int multiple, int width, long int * matrix)

    {

    long int (*matrix2)[width];

    matrix2=(long int (*)[width]) matrix;

    int column_temp;

    for (column_temp=0;column_temp<width;column_temp++) {

    matrix2[row][column_temp]=matrix2[row][column_temp]*multiple;

    }

    }

    void add_rows(int row1, int row2, int width, long int * matrix)

    {

    long int (*matrix2)[width];

    matrix2=(long int (*)[width]) matrix;

    int temp;

    int column_temp;

    for (column_temp=0;column_temp<width;column_temp++) {

    matrix2[row1][column_temp]=matrix2[row1][column_temp]+matrix2[row2][column_temp];

    }

    }

    void add_multiple_of_row(int row1, int row2, long int multiple, int width, long int * matrix)

    {

    long int (*matrix2)[width];

    matrix2=(long int (*)[width]) matrix;

    int temp;

    int column_temp;

    for (column_temp=0;column_temp<width;column_temp++) {

    matrix2[row1][column_temp]=matrix2[row1][column_temp]+(matrix2[row2][column_temp]*multiple);

    }

    }

    int reduce_column(int column, int block_rows_until, int height, int width, long int * matrix)

    {

    long int (*matrix2)[width];

    matrix2=(long int (*)[width]) matrix;

    int row_temp;

    int column_temp;

    int temp;

    int selected_row=-1;

    for (row_temp=(height-1);row_temp>=block_rows_until;row_temp--) {

    if (matrix2[row_temp][column]!=0) {

    selected_row=row_temp;

    }

    }

    if (selected_row==-1) {

    return block_rows_until;

    }

    switch_rows(block_rows_until, selected_row, width, matrix);

    for (row_temp=block_rows_until+1;row_temp<height;row_temp++) {

    if (matrix2[row_temp][column]!=0) {

    output(height, width, matrix);

    temp=matrix2[row_temp][column];

    multiply_row(row_temp, matrix2[block_rows_until][column], width, matrix);

    output(height, width, matrix);

    add_multiple_of_row(row_temp, block_rows_until, -(temp), width, matrix);

    }

    }

    block_rows_until++;

    return block_rows_until;

    }

    int main()

    {

    int width;

    int height;

    cout<<"Height? ";

    cin>>height;

    cout<<"Width? ";

    cin>>width;

    cout<<"Enter in the matrix row by row with entries separated by space:"<<endl;

    long int matrix[height][width];

    int row_temp;

    int column_temp;

    for (row_temp=0;row_temp<height;row_temp++) {

    for (column_temp=0;column_temp<width;column_temp++) {

    cin>>matrix[row_temp][column_temp];

    }

    }

    long int * matrix_transfer;

    matrix_transfer=(long int *) matrix;

    int current_row=0;

    int current_column=0;

    int solved=0;

    while (solved!=1) {

    current_row=reduce_column(current_column, current_row, height, width, matrix_transfer);

    current_column++;

    if (current_row==(height-1)) {solved=1;}

    if (current_column==(width-1)) {solved=1;}

    }

    output(height, width, matrix_transfer);

    return 0;

Still have questions? Get your answers by asking now.