#include <stdio.h>
#include <conio.h>
int main()
{
int m , n , s , p , j = 0;
float sum = 0 , x[20][20] , y[20][20] , z[20][20];
do
{
printf("Enter M & N & S & P to determine the matrix size X[M,N] , Y[S,P] (M=P & N=S) \n");
scanf(" %d %d %d %d", &m , &n , &s , &p );
}
while ( (m < 0 || n < 0) || ( s < 0 || p < 0 ) || ( m != p || n!= s ));
{
for ( int t = 0 ; t < m ; t++ )
{
for( int u = 0 ; u < n ; u++ )
{
printf(" x[%d][%d] ", t + 1 ,u + 1 );
scanf("%f", &x[t][u] );
}
}
for ( int t = 0 ; t < s ; t++ )
{
for( int u = 0 ; u < p ; u++ )
{
printf(" y[%d][%d] ", t + 1 , u + 1 );
scanf("%f", &x[s][p] );
}
}
}
for ( int t = 0 ; t < n ; t++ )
{
sum = 0;
j = 0;
while ( j < p )
{
for( int u = 0 ; u < m ; u++ )
sum += x[u][t] * y[t][u + j];
z[t][j] = sum ;
j++ ;
}
}
for ( int t = 0 ; t < p ; t++ )
for ( int u = 0 ; u < m ; u++ )
{
printf("%f\t", z[u][t] );
if ( u == p - 1 )
printf("\n");
}
getch();
}
multiplying matrices
Page 1 of 110 Replies - 518 Views - Last Post: 23 December 2010 - 01:18 AM
#1
multiplying matrices
Posted 22 December 2010 - 01:40 PM
I'm tryin to write a code for multiplying matrices but I'm stuck, can anyone help me?
Replies To: multiplying matrices
#2
Re: multiplying matrices
Posted 22 December 2010 - 01:48 PM
Just multiple each element with the correspoending other element, eg.
|1,2| |9,3| |9,6| |3,4| * |1,2| = |1,8|
#3
Re: multiplying matrices
Posted 22 December 2010 - 02:08 PM
Aphex19, on 22 December 2010 - 12:48 PM, said:
Just multiple each element with the correspoending other element, eg.
|1,2| |9,3| |9,6| |3,4| * |1,2| = |1,8|
are you sure? I think rows should be multiplied by columns but I can't write the code correctly
This post has been edited by shahrooz: 22 December 2010 - 02:11 PM
#4
Re: multiplying matrices
Posted 22 December 2010 - 02:12 PM
@Aphex19 sorry... that is not how to multiply matrices.

in general Matrix Multiplication is a little more complicated than you think.
|1,2| |9,3| |11, 7| |3,4| * |1,2| = |31,17|

in general Matrix Multiplication is a little more complicated than you think.
#5
Re: multiplying matrices
Posted 22 December 2010 - 02:27 PM
I know about matrix multiplication, I'm having problem at coding it
#6
Re: multiplying matrices
Posted 22 December 2010 - 02:36 PM
this is my last try with a slight difference from the first code, but it's not working yet
#include <stdio.h>
#include <conio.h>
int main()
{
int m , n , s , p , j = 0;
float sum = 0 , x[20][20] , y[20][20] , z[20][20];
do
{
printf("Enter M & N & S & P to determine the matrix size X[M,N] , Y[S,P] (M=P & N=S) \n");
scanf(" %d %d %d %d", &m , &n , &s , &p );
}
while ( (m < 0 || n < 0) || ( s < 0 || p < 0 ) || ( m != p || n!= s ));
{
for ( int t = 0 ; t < m ; t++ )
{
for( int u = 0 ; u < n ; u++ )
{
printf(" x[%d][%d] ", t + 1 ,u + 1 );
scanf("%f", &x[t][u] );
}
}
for ( int t = 0 ; t < s ; t++ )
{
for( int u = 0 ; u < p ; u++ )
{
printf(" y[%d][%d] ", t + 1 , u + 1 );
scanf("%f", &x[s][p] );
}
}
}
for ( int t = 0 ; t < n ; t++ )
{
sum = 0;
j = 0;
while ( j < p )
{
for( int u = 0 ; u < m ; u++ )
{
sum += x[u][t] * y[t][u + j];
z[t][j] = sum ;
}
j++ ;
}
}
for ( int t = 0 ; t < p ; t++ )
for ( int u = 0 ; u < m ; u++ )
{
printf("%f\t", z[u][t] );
if ( u == p - 1 )
printf("\n");
}
getch();
}
#7
Re: multiplying matrices
Posted 22 December 2010 - 03:08 PM
Well for one... you never input y values.. you have x rather than y there -- line 27
#8
Re: multiplying matrices
Posted 22 December 2010 - 03:33 PM
my problem with this is that I can't never seem to figure out the matrix orientation.
so I if I have the matrix:
element a is in A[0][0], where is element f?
A[2][1] or A[1][2]?
so I if I have the matrix:
A = | a b c |
| d e f |
element a is in A[0][0], where is element f?
A[2][1] or A[1][2]?
#9
Re: multiplying matrices
Posted 22 December 2010 - 05:32 PM
NickDMax, on 22 December 2010 - 02:33 PM, said:
my problem with this is that I can't never seem to figure out the matrix orientation.
so I if I have the matrix:
element a is in A[0][0], where is element f?
A[2][1] or A[1][2]?
so I if I have the matrix:
A = | a b c |
| d e f |
element a is in A[0][0], where is element f?
A[2][1] or A[1][2]?
I think f is A[3][2]
NickDMax, on 22 December 2010 - 02:08 PM, said:
Well for one... you never input y values.. you have x rather than y there -- line 27
omg, mistyped it, thanks. I'll give it another shot now
not working yet
#include <stdio.h>
#include <conio.h>
int main()
{
int m , n , s , p , j = 0;
float sum = 0 , x[20][20] , y[20][20] , z[20][20];
do
{
printf("Enter M & N & S & P to determine the matrix size X[M,N] , Y[S,P] (M=P & N=S) \n");
scanf(" %d %d %d %d", &m , &n , &s , &p );
}
while ( (m < 0 || n < 0) || ( s < 0 || p < 0 ) || ( m != p || n!= s ));
{
for ( int t = 0 ; t < m ; t++ )
{
for( int u = 0 ; u < n ; u++ )
{
printf(" x[%d][%d] ", t + 1 ,u + 1 );
scanf("%f", &x[t][u] );
}
}
for ( int t = 0 ; t < s ; t++ )
{
for( int u = 0 ; u < p ; u++ )
{
printf(" y[%d][%d] ", t + 1 , u + 1 );
scanf("%f", &y[s][p] );
}
}
}
for ( int t = 0 ; t < n ; t++ )
{
sum = 0;
j = 0;
while ( j < p )
{
for( int u = 0 ; u < m ; u++ )
{
sum += x[u][t] * y[t][u + j];
z[t][j] = sum ;
}
j++ ;
}
}
for ( int t = 0 ; t < p ; t++ )
for ( int u = 0 ; u < m ; u++ )
{
printf("%f\t", z[u][t] );
if ( u == p - 1 )
printf("\n");
}
getch();
}
This post has been edited by shahrooz: 22 December 2010 - 05:29 PM
#10
Re: multiplying matrices
Posted 22 December 2010 - 09:30 PM
it should be &y[t][u] as t & u are your loop variables. But that still does not fix the multiplication
#11
Re: multiplying matrices
Posted 23 December 2010 - 01:18 AM
Ah, reminds me of my last assignment. We use pointer though.
For starters, I suggest that you use specific matrices with small size[2x2 or 3x3] in order to get the multiplication correct. Now. When we do a matrix multiplication, there is a pattern. From the given link by NickDMax,



If we make further observation for each element, it seems the first matrix have the same row and second matrix have the same column. In the normal nested for loop, maybe we more variable to deal with it[hint: maybe 2 instead of one, each dealing with row and column]. Calculate the sum in form of for loop.
For starters, I suggest that you use specific matrices with small size[2x2 or 3x3] in order to get the multiplication correct. Now. When we do a matrix multiplication, there is a pattern. From the given link by NickDMax,



If we make further observation for each element, it seems the first matrix have the same row and second matrix have the same column. In the normal nested for loop, maybe we more variable to deal with it[hint: maybe 2 instead of one, each dealing with row and column]. Calculate the sum in form of for loop.
This post has been edited by shad0wk1: 23 December 2010 - 01:21 AM
Page 1 of 1
|
|

New Topic/Question
Reply




MultiQuote






|