Need help with a matrix task for my school project | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

Need help with a matrix task for my school project

Hello guys, I am currently working on a project for my school. Our task is to make a matrix 4x4 multiplied with a vector 4x1. I am sure my code is right but the result keeps beeing false. https://code.sololearn.com/cuhR7NA0426e/#cpp help is appreciated

13th Jun 2017, 8:25 AM
Robin G
Robin G - avatar
10 Answers
+ 2
I think if you have to multiply a matrix with a vector your result will be another matrix. Each line of the new matrix is = each line of old matrix * vector. But in your code you use 2 vector and a matrix and in the function mul you attempt to save the result in the second vector
13th Jun 2017, 8:46 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 2
Yes...give me some time please
13th Jun 2017, 8:53 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 1
something like this, without scanf 4 semplicity #include <conio.h> #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; typedef double vec[4]; typedef double mat[4] [4]; void mul(mat m_res, mat m, vec v) { int i, j; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) m_res[i][j]= m[i][j] * v[i]; } int main() { vec v; mat m, m_res; int i, j; for (i = 0; i<4; i++) v[i] = i; for (i = 0; i < 4; i++) for( j = 0; j < 4; j++) m[i][j] = 10*i + j; mul(m_res, m, v); for (i = 0; i < 4; i++) { cout << endl; for( j = 0; j < 4; j++) cout << m_res[i][j] << " "; } return 0; }
13th Jun 2017, 9:07 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 1
maybe you have to adjust the formula but now it work
13th Jun 2017, 9:08 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 1
yes, the m_res matrix
13th Jun 2017, 9:14 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 1
v is 0 1 2 3 m is 0 1 2 3 10 11 12 13 20 21 22 23 30 31 32 33 so if u multiply each line with v first line 0*0 0*1 0*2 0*3 second line 1*10 1*11 1*12 1*13 third line 2*20 2* 21 2*22 2*23 last line 3*30 3*31 3*32 3*33
13th Jun 2017, 9:17 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 1
try also m_res[i][j] = m[i][j] * v[j] for a different moltiplication
13th Jun 2017, 9:19 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
+ 1
maybe the second is what you need
13th Jun 2017, 9:20 AM
Andrea Simone Costa
Andrea Simone Costa - avatar
0
do you have any idea how to change my code to do that?
13th Jun 2017, 8:52 AM
Robin G
Robin G - avatar
0
the output is just 0 0 0 0 10 11 12 13 40 42 44 46 90 93 96 99
13th Jun 2017, 9:13 AM
Robin G
Robin G - avatar