ページ 11

3×3の行列の積

Posted: 2017年1月29日(日) 14:38
by 太郎
3*3の行列の積です。
どこが違うのか全く分かりません。どなたか回答できる方お願いいたします。

コード:

#include <iostream>
using namespace std;

int main()
{
	int m,k,l;
	double A[3][3]={{-1.7, 2.4, 8.4},
					{2.3, 0.3, 1.7},
					{5.2, -2.1, -0.1}};			//行列Aの値

	double B[3][3]={{0.1, -9.2, -0.1},
					{1.1, -1,2, 1.2},
					{0.2, -2.4, -2.2}};			//行列Bの値

	double C[3][3]={{0.0, 0.0, 0.0},
					{0.0, 0.0, 0.0},
					{0.0, 0.0, 0.0}};			//積の行列初期化


	for(m=0;m<3;m++){
		for(k=0;k<3;k++){
			C[m][k]=0.0;
			for(l=0;m<3;l++){
				C[m][k]+=A[m][l]*B[l][k];		//計算
			}
		}
	}
	

	for(m=0;m<3;m++){
		for(k=0;k<3;k++){
			cout << C[m][k] << endl;
		}
	}
}

Re: 3×3の行列の積

Posted: 2017年1月29日(日) 15:02
by みけCAT
B[1][1]が-1.2になるべきなのに、-1,2になっています。 (ピリオドがあるべき位置にコンマがあります。)

Re: 3×3の行列の積

Posted: 2017年1月29日(日) 15:08
by みけCAT
23行目のfor文の条件式がl<3であるべきなのにm<3となっているので、無限ループになり、
lが大きくなりすぎるため確保された領域の範囲外の値を読み込んでSegmentation Faultが発生する場合があります。

Re: 3×3の行列の積

Posted: 2017年1月29日(日) 16:13
by 太郎
>みけCATさん
ありがとうございます。超初歩的なミスでした、、、。
無事解決いたしました!