gpt4 book ai didi

c - 在矩阵乘法中解释

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:37 25 4
gpt4 key购买 nike

这是我的矩阵乘法代码。

  #include <stdio.h>
main()
{
int a[10][10],b[10][10],c[10][10],m,n,o,i,j,k;
printf("Enter rows and column for matrix: ");
scanf("%d%d%d",&m,&n,&o);
printf("\nEnter elements of matrix 1:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{

printf("Enter elements a[%d][%d]: ",i,j);
scanf("%d",&a[i][j]);
}
}
printf("\nEnter elements of matrix 2:\n");
for(i=0;i<n;i++)
{
for(j=0;j<o;j++)
{
printf("Enter elements b[%d][%d]: ",i,j);
scanf("%d",&b[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<o;j++)
{
c[i][j]=0;
}
}
for(i=0;i<m;i++)
{
for(j=0;j<o;j++)
{
for(k=0; k<n; ++k)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
printf("\nOutput Matrix:\n");
for(i=0;i<m;i++)
{
for(j=0;j<o;j++)
{
printf("%d \t\t ",c[i][j]);
}
printf("\n\n");
}
}

我的问题是矩阵乘法,为什么我们将结果数组 (c[i][j]) 初始化为 0,然后将结果数组与两个矩阵的乘法相加,即 c[ i][j] = c[i][j]+a[i][k]*b[k][j]?为什么我们不能直接写成c[i][j] = a[i][k]*b[k][j]

最佳答案

您必须初始化矩阵,因为每个单元格都是一个总和。这些总和需要初始化。初始化通常为零,因为您需要 C=A*B。您可以使用假设的 D 矩阵初始化 C,然后您将获得 C= A*B + D。

编辑:请注意,对于固定大小的矩阵(如 3x3),您可以使用更简单的表达式扩展总和,并避免初始化。例如,A 和 B(和 C)是 3x3 矩阵,你可以这样写:

for(int i=0; i<3; ++i){
for(int j=0; j<3; ++j){
c[i][j] = a[i][0]*b[0][j] + a[i][1]*b[1][j] + a[i][2]*b[2][j];
}
}

此代码不需要初始化,因为 c[i][j] 完全由一个表达式定义。

关于c - 在矩阵乘法中解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23781473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com