3×3の行列の積

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
太郎

3×3の行列の積

#1

投稿記事 by 太郎 » 8年前

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;
		}
	}
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 3×3の行列の積

#2

投稿記事 by みけCAT » 8年前

B[1][1]が-1.2になるべきなのに、-1,2になっています。 (ピリオドがあるべき位置にコンマがあります。)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 3×3の行列の積

#3

投稿記事 by みけCAT » 8年前

23行目のfor文の条件式がl<3であるべきなのにm<3となっているので、無限ループになり、
lが大きくなりすぎるため確保された領域の範囲外の値を読み込んでSegmentation Faultが発生する場合があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

太郎

Re: 3×3の行列の積

#4

投稿記事 by 太郎 » 8年前

>みけCATさん
ありがとうございます。超初歩的なミスでした、、、。
無事解決いたしました!

閉鎖

“C言語何でも質問掲示板” へ戻る