C++ 3x3矩阵与3x1向量的乘法
我的程序要求用户输入一个三维双向量v和一个3 x 3双矩阵M,程序将打印出矩阵/向量积Mv。但是我的输出不是向量,而是标量。我不知道为什么,我已经将输出定义为向量。这是密码C++ 3x3矩阵与3x1向量的乘法,c++,arrays,calculator,C++,Arrays,Calculator,我的程序要求用户输入一个三维双向量v和一个3 x 3双矩阵M,程序将打印出矩阵/向量积Mv。但是我的输出不是向量,而是标量。我不知道为什么,我已经将输出定义为向量。这是密码 #include <iostream> using namespace std; int main() { double v[3][1]; double M[3][3]; double Mv[3][1]; int i,j; cout << "Enter
#include <iostream>
using namespace std;
int main()
{
double v[3][1];
double M[3][3];
double Mv[3][1];
int i,j;
cout << "Enter in the components of the vector v:\n";
for(i=0; i<3; i++)
{
cout << "Component " << i+1 << ": ";
cin >> v[i][0];
}
cout << "Enter in the components of the 3 x 3 matrix M:\n";
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
cin >> M[i][j];
}
}
for(i=0; i<3; i++)
{
Mv[i][0]= 0.0;
for(j=0; j<3; j++)
{
Mv[i][0] += (M[i][j] * v[j][0]);
}
}
cout << "The product of Mv is: " << Mv[i][0] << endl;
return 0;
}
#包括
使用名称空间std;
int main()
{
双v[3][1];
双M[3][3];
双Mv[3][1];
int i,j;
cout您只在输出调用中打印一个值Mv[i][0]
您需要创建一个循环来打印所有矢量元素:
而不是:
cout << "The product of Mv is: " << Mv[i][0] << endl;
coutPutcout
for(i=0; i<3; i++)
{
Mv[i][0]= 0.0;
for(j=0; j<3; j++)
{
Mv[i][0] += (M[i][j] * v[j][0]);
}
cout << "The product of Mv is: " << Mv[i][0] << endl;
}
对于(i=0;i您打印Mv[4][0]
这是UB,您想打印Mv[0][0]
,Mv[1][0]
,Mv[3][0]
,cout[OT],double v[3][1][/code>的意义是什么,而您可以使用double v[3][/code>(并摆脱[0]
)这将打印行Mv的乘积是三倍;)好吧,printf(“Mv[%d][0]=%.3f\n”,i,Mv[i][0]);
看起来会更好。:)你可以按照Olia的建议将这个循环与你的计算循环合并。哦,谢谢,我这样做了。我知道我不能将“矩阵的乘积”放在同一个循环中。
for(i=0; i<3; i++)
{
Mv[i][0]= 0.0;
for(j=0; j<3; j++)
{
Mv[i][0] += (M[i][j] * v[j][0]);
}
cout << "The product of Mv is: " << Mv[i][0] << endl;
}