行列の積について
Posted: 2009年1月20日(火) 14:28
行列の積を計算するプログラムを作っています。
A*B=Cの行列を計算するプログラムを書いたのですが、Cの値がすべて0になってしまいます。
Cの値を出すためにはどこを直したら良いのか教えていただきたいです。
C言語の知識は授業で行列式の表し方を習ったぐらいで、計算式の方は本から引用しています。
コンパイルはできました。
A*B=Cの行列を計算するプログラムを書いたのですが、Cの値がすべて0になってしまいます。
Cの値を出すためにはどこを直したら良いのか教えていただきたいです。
C言語の知識は授業で行列式の表し方を習ったぐらいで、計算式の方は本から引用しています。
コンパイルはできました。
#include <stdio.h> main() { int l,m,n,i,j,k; double a[20][20]; double b[20][20]; double c[20][20];//配列の定義 printf("A-Row = "); fflush(stdout); scanf("%d",&l); printf("A-Column B-Row = "); fflush(stdout); scanf("%d",&m); printf("B-Column = "); fflush(stdout); scanf("%d",&n); printf("\n"); for(i=0;i<l;i++) { for(j=0;j<m;j++) { printf(" A[ %d, %d] = ",i+1,j+1); fflush(stdout); scanf("%lf",&a[j]); } } printf(" A = \n"); for(i=0;i<l;i++) { for(j=0;j<m;j++) { printf(" %5f\t",a[j]); } printf("\n"); } printf("\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf(" B[ %d, %d] = ",i+1,j+1); fflush(stdout); scanf("%lf",&a[j]); } } printf(" B = \n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf(" %5f\t",a[j]); } printf("\n"); } for(i=0;i<l;i++) { for(j=0;j<n;j++) { c[j] = 0; for(k=0;k<m;k++) { c[j] = c[j] + a[k] * b[k][j]; } } } printf("\n"); printf(" C = \n"); for(i=0;i<l;i++) { for(j=0;j<n;j++) { printf("%5f\t",c[j]); } printf("\n"); } }