如何乘以一个4x4矩阵与C中的1x3矩阵?
如果你已经有一个4x4的矩阵。 防爆。
Matrix A = [1 2 3 4;
5 6 7 8;`
9 10 11 12;
13 14 15 16]
Matrix B = [1, 2, 3]
你如何将矩阵A转换为C编码? 还有什么位置在代码中? 对于位置我的意思是:如果我试图将第一行乘以矩阵B,我可以这样做吗?
A[1][0]*B[0]+A[1][1]*B[1]+A[1][2]*B[2]
大纲代码:
main(){
int matrixA[4][4] = [{"1","2","3","4"};
{"5","6","7","8"};
{"9","10","11","12"};
{"13","14","15","16"}];
printf(matrix A);
return 0;
}
首先,你不能用4×4矩阵乘1×3矩阵。 你应该有像m×n和n×p这样的矩阵使它们相乘(结果将是一个m×p矩阵)。
对于C语言中的4×4矩阵,你应该像这样实现它:
int main()
{
int mat[4][4];
for(int i=0;i<=3;i++)
{
for(int j=0;j<=3;j++)
{
scanf("%d", &mat[i][j]);
}
}
return 0;
}
据我所知,你想制作一个程序来执行与矩阵相关的数学分数。 线性代数中的例子。 矩阵大小没有被检查,但你明白了。 在划分中,您必须对Array2 ^ -1进行计算才能找到它。 希望我帮助。 找到它后,将结果乘以Array1。 然而在分区中,事情更复杂。 您需要以不同的方式处理您的编码,具体取决于您拥有的阵列(矩阵)尺寸。 必须包括例外情况,需要阅读关于如何划分这些矩阵的一些理论。 有关更多详细信息,请参阅https://en.wikipedia.org/wiki/Division_(mathematics)。
#include <stdio.h>
#include <math.h>
int main(){
//counters
int i=0,j=0,k=0,sum=0;
//first array
int Array1[4][4] ={
{87,96,70,22},
{18,65,77,78},
{76,72,84,65},
{87,93,73,77}};
//second array
int Array2[4][4]={
{14,45,66,88},
{45,32,97,44},
{34,64,23,66},
{39,98,55,32}};
//result array.
int ResultArray[4][4];
// Add
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
ResultArray[i][j]= Array1[i][j]+Array2[i][j];
}
}
//result
printf("tAdd Array1 and Array2n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf(" %10d t",ResultArray[i][j]);
}
printf("n");
}
//subtract
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
ResultArray[i][j]= Array1[i][j]-Array2[i][j];
}
}
//result
printf("tSubtract Array1 and Array2n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf(" %10d t",ResultArray[i][j]);
}
printf("n");
}
//multiply
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
for (k = 0; k < 4; ++k) {
sum=sum+Array1[i][k]*Array2[k][j];
}
ResultArray[i][j]=sum;
sum=0;
}
}
//result
printf("tMultiplication Array1 and Array2n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf(" %10d t",ResultArray[i][j]);
}
printf("n");
}
return 0;
}
你可以这样写:
int matrixA[4][4] = {
{ 1, 2, 3, 4},//matrixA[0][0] is 1
{ 5, 6, 7, 8},//matrixA[1][1] is 6
{ 9, 10, 11, 12},
{13, 14, 15, 16}
};
int matrixB[] = { 1, 2, 3};
for(int r = 0; r < 4; ++r){
for(int c = 0; c < 4; ++c){
printf("%3d", matrixA[r][c]);
}
printf("n");
}
链接地址: http://www.djcxy.com/p/85991.html