#include "stdioh"
#include "stdlibh"
void main ()
{
int m,l,p,q;
scanf("%d%d",&m,&l);
printf("输入第二个矩阵的维数p和q:\n");
scanf("%d%d",&p,&q);
while (l!=p)
{
printf("两个矩阵不匹配,不能进行相乘运算,请重新输入\n\n");
printf("输入第一个矩阵的维数m和l:\n");
scanf("%d%d",&m,&l);
printf("输入第二个矩阵的维数p和q:\n");
scanf("%d%d",&p,&q);
}
double a[200][200]={0}, b[200][200]={0},sum=0;
int i,j,k=0;
for (i=0;i<m;i++)
{
for (j=0;j<l;j++)
{
a[i][j]=(double)rand()/RAND_MAX;
}
}
printf("随机矩阵a是:\n");
for (i=0;i<m;i++)
{
for (j=0;j<l;j++)
{
printf("%f ",a[i][j]);
}
printf("\n");
}
//cout<<"输入一个32的矩阵:"<<endl;
for (i=0;i<p;i++)
{
for (j=0;j<q;j++)
{
b[i][j]=(double)rand()/RAND_MAX;
}
}
printf("随机矩阵b是:\n");
for (i=0;i<p;i++)
{
for (j=0;j<q;j++)
{
printf("%f ",b[i][j]);
}
printf("\n");
}
printf("ab相乘结果为:\n");
for (i=0;i<m;i++)
{
while (k<q)
{
for (j=0;j<q;j++)
{
sum = a[i][j]b[j][k]+sum;
}
printf("%f ",sum);
k++;
sum=0;
}
k=0;
printf("\n");
}
}
如果不满足你要求,自己再改一下吧
#include <stdioh>
int main()
{
int A[3][3]={{1,2,-1}, {1,0,-1},{3,4,0}};
int B[3][3]={{2,1,3}, {1,2,3},{-1,0,4}};
int C[3][3]={{0}};
int n = 3; / 第一矩阵的行数 /
int p = 3; / 第一矩阵的列数,即第二矩阵的行数 /
int m = 3; / 乘积矩阵的列数 /
int i, j, k;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
C[i][j] = 0;
for(int k = 0; k < p; k++)
{
C[i][j] = C[i][j] + A[i][k] B[k][j];
}
printf("%5d", C[i][j]);
}
printf("\n");
}
}
python实现矩阵乘法的方法
本文实例讲述了python实现矩阵乘法的方法。分享给大家供大家参考。
具体实现方法如下:
def matrixMul(A, B):
res = [[0] len(B[0]) for i in range(len(A))]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
res[i][j] += A[i][k] B[k][j]
return res
def matrixMul2(A, B):
return [[sum(a b for a, b in zip(a, b)) for b in zip(B)] for a in A]
a = [[1,2], [3,4], [5,6], [7,8]]
b = [[1,2,3,4], [5,6,7,8]]
print matrixMul(a,b)
print matrixMul(b,a)
print "-"90
print matrixMul2(a,b)
print matrixMul2(b,a)
print "-"90
from numpy import dot
print map(list,dot(a,b))
print map(list,dot(b,a))
#Out:
#[[11, 14, 17, 20], [23, 30, 37, 44], [35, 46, 57, 68], [47, 62, 77, 92]]
#[[50, 60], [114, 140]]
#------------------------------------------------------------------------
#[[11, 14, 17, 20], [23, 30, 37, 44], [35, 46, 57, 68], [47, 62, 77, 92]]
#[[50, 60], [114, 140]]
#------------------------------------------------------------------------
#[[11, 14, 17, 20], [23, 30, 37, 44], [35, 46, 57, 68], [47, 62, 77, 92]]
#[[50, 60], [114, 140]]
希望本文所述对大家的Python程序设计有所帮助。
怎么说呢,错误太多了,双引号都是全角的
数组越界,返回值怎么可能有多个?
修改后程序如下:
#include "stdioh"
int r[6][6];
void mult(int a[6][6] , int b[6][6])
{
int i,j;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
r[i][j]=a[i][j]b[i][i];
printf("\n两个矩阵相乘后的结果为:\n");
for(i=1;i<=6;i++)
{
for(j=1;j<=6;j++)
printf("%4d",r[i][j]);
printf("\n");
}
}
main()
{
int i,j;
int num1[6][6],num2[6][6];
printf("请输入第一个矩阵的值:\n");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&num1[i][j]);
printf("请输入第二个矩阵的值:\n");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&num2[i][j]);
mult(num1,num2);
}
//矩阵乘法属于线性代数;矩阵乘法的原理不难,只要原理搞请,代码很好写的
#include<stdioh>
/功能为计算给定的矩阵a(m行n列)和矩阵b(n行t列)的乘积矩阵c/
void f(int a[3][4], int b[4][3], int c[3][3], int m, int n, int t) {
//矩阵乘法:前行乘后列
//矩阵a的行(m)作为矩阵c的行
//矩阵b的列(t)作为矩阵c的列
for (int i = 0; i < m; i++) {//新矩阵m行
for (int j = 0; j < t; j++) {//新矩阵t列
int sum=0;
for (int k = 0; k < n; k++) {
sum += (a[i][k] b[k][j]);//行列对应相乘,然后累加
}
c[i][j]=sum;
}
}
}
/ 请在这里填写答案 /
/
1 2 3 4
2 3 4 5
3 4 5 6
1 2 3
2 3 4
3 4 5
4 5 6
/
int main() {
int i, j, a[3][4], b[4][3], c[3][3];
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < 4; i++)
for (j = 0; j < 3; j++)
scanf("%d", &b[i][j]);
f(a, b, c, 3, 4, 3);
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
printf("%5d", c[i][j]);
printf("\n");
}
}
以上就是关于求一个 矩阵乘法的C语言程序全部的内容,包括:求一个 矩阵乘法的C语言程序、c++怎么编写两个矩阵相乘的程序、python实现矩阵乘法的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)