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.3
- 回答日時:
カテゴリー違いです。
そのプログラムでは、n が 2 以上であれば、
return の直前の時点で、s[][] の中に
a[][] の n 乗が正しく求められています。
デバッガ上で s の値を確認すれば判ことです。
表示が上手くいかないとすれば、
数学以外の点に誤りがあります。
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');
}
に置き換える.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイナスからプラスへ転じた時...
-
2÷3などの余りについて
-
Aの値からBの値を除するとは??
-
値差の%計算方法について
-
EXCELの分散分析表のP-値が....
-
大きな負の値?負の大きな値???
-
数学 確率変数Xは、X=2またはX...
-
信頼区間の1.96や1.65ってどこ...
-
エクセルで可視セルにのみ値貼...
-
連立方程式の問題です 去年の新...
-
「Aに対するBの割合」と「Aに対...
-
等比数列の和を求めるとき黒文...
-
微分条件を満たす
-
比と比の値について。 a:b=a/b ...
-
素因数がわかりません。 Bの値...
-
ある商品のロス率を5%見込み、...
-
四分位偏差は答えは少数で表す...
-
大学数学の問題です。 加法群Z/...
-
√19-aの値が整数となる正の整数...
-
εを任意にとって固定する この...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マイナスからプラスへ転じた時...
-
2÷3などの余りについて
-
信頼区間の1.96や1.65ってどこ...
-
Aの値からBの値を除するとは??
-
エクセルで可視セルにのみ値貼...
-
変数とパラメータとは違うもの...
-
ある商品のロス率を5%見込み、...
-
値差の%計算方法について
-
エックスの値は5cmですか?
-
a^2の√=a が成り立たない場合
-
Excelで1つしかない値だけを抽...
-
20'(角度)の計算がわかりま...
-
「an=(n-1)/(n+1)のときlim[n→∞...
-
EXCELの分散分析表のP-値が....
-
「Aに対するBの割合」と「Aに対...
-
10%引いた元の数字を出すには?
-
パーセントの出し方を教えて下さい
-
楕円の外周の計算方法
-
中学生で数学です。 √84nが自然...
-
教えてください。数学Bの二項分...
おすすめ情報