1 2 -1
D= 3 0 -2
-1 1 2
の3次正方行列のn乗を計算するプログラムを作成しています。
いろいろと試してみましたがうまくいきません。
どなたか教えていただけるとうれしいです。
よろしくおねがいします。
#include <stdio.h>
int main(void)
{
int a[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} };
int b[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} };
int s[3][3];
int m,n;
int i,j,k;
printf("[A]^n;n = ");scanf("%d",&n);
for (m=2;m <= n;m++){
for (i=0;i<3;i++){
for (j=0;j<3;j++){
s[i][j] = 0;
for(k=0;k<3;k++){
s[i][j] =s[i][j] + a[i][k] * b[k][j];
}
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
b[i][j]=s[i][j];
}
}
printf("%3d",s[i][j]);
putchar('\n');
}
return (0);
}
No.2ベストアンサー
- 回答日時:
計算方法はあってます。
違っているのは次の2箇所です。
(1) 行列a, bの値設定
(2) 計算結果の表示
> int a[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} };
> int b[3][3]={ {-1,2,-1},{3,0,-2},{-1,1,2} };
1行1列目の要素(つまりa[0][0]とb[0][0]の値)が-1になっています。
行列Dの1行1列目の要素は1ですよね。
> printf("%3d",s[i][j]);
> putchar('\n');
この2行だけだとs[3][3]だけを表示して終わってしまいます。
また、この位置で出力してしまうと2乗 ~ n乗の結果が全部表示されてしまいます。
n乗の結果のみを出力したいなら、
この2行を消してreturn文の直前に
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
printf("%3d",s[i][j]);
}
putchar('\n');
}
と打ち込んでみましょう
(ちなみに上のコードは全角空白を含んでいるので、
回答文からこのコードをコピー&ペーストしてしまうと
コンパイルエラーが起きるので注意してください)。
No.4
- 回答日時:
printf("%3d",s[i][j]);
ここ,上の i,j の for 文抜けた後だから,
i=3, j=3 の s[3][3] つまり,
行列の 4,4 成分を表示している.
コンパイルエラーか segmentation faults か意味のない数を表示するか
のどれか
printf("%3d",s[i][j]);
putchar('\n');
の2行を
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%3d",s[i][j]);
}
putchar('\n');
}
に置き換える.
No.3
- 回答日時:
カテゴリー違いです。
そのプログラムでは、n が 2 以上であれば、
return の直前の時点で、s[][] の中に
a[][] の n 乗が正しく求められています。
デバッガ上で s の値を確認すれば判ことです。
表示が上手くいかないとすれば、
数学以外の点に誤りがあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
行列をべき乗させるプログラム
C言語・C++・C#
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
信頼区間の1.96や1.65ってどこ...
-
2÷3などの余りについて
-
エクセルで可視セルにのみ値貼...
-
マイナスからプラスへ転じた時...
-
Aの値からBの値を除するとは??
-
エクセルの問題です。絶対値の...
-
EXCELの分散分析表のP-値が....
-
一次関数についてです。 y=5な...
-
エクセルのオートフィル?ドラ...
-
2番以降って2番も含まれますか...
-
「Aに対するBの割合」と「Aに対...
-
数学のデータの相関の散布図で...
-
この極限値
-
10%引いた元の数字を出すには?
-
二次関数と関数の違いは何ですか?
-
20'(角度)の計算がわかりま...
-
分散の計算
-
数学 確率変数Xは、X=2またはX...
-
ニューラルネットワークの重み...
-
数学で逆三角関数の勉強をして...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2÷3などの余りについて
-
マイナスからプラスへ転じた時...
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
ある商品のロス率を5%見込み、...
-
20'(角度)の計算がわかりま...
-
エクセルで可視セルにのみ値貼...
-
値差の%計算方法について
-
二次関数と関数の違いは何ですか?
-
変数とパラメータとは違うもの...
-
EXCELの分散分析表のP-値が....
-
エクセルの問題です。絶対値の...
-
エクセルのオートフィル?ドラ...
-
数学のデータの相関の散布図で...
-
数学 確率変数Xは、X=2またはX...
-
2番以降って2番も含まれますか...
-
10%引いた元の数字を出すには?
-
シグマを平均値で割る
-
Excelで1つしかない値だけを抽...
おすすめ情報