行列の積のもとめかたについて

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

行列の積のもとめかたについて

#1

投稿記事 by » 18年前

大学でC言語を習い始めて約1ヶ月の超初心者です。

以下のような正方行列Aとベクトルxの積を求めたいのですがもとめかたがわかりません。
間違っていますが一応自分が書いたプログラムを載せておきます。

1.00 4.00 7.00 0.11
2.00 5.00 8.00 0.22
3.00 6.00 9.00 0.33
#include <stdio.h>

int main()
{
  int i,j;
  double a[3][3]={{1.00,4.00,7.00},
		    {2.00,5.00,8.00},
		    {3.00,6.00,9.00}};
  
  double b[3]={0.11,0.22,0.33};
  double c[3],sum;
  sum=0.0;
  
 printf("Ax=\n");
 
  for(i=0;i< 3;i++){
   for(j=0;j<1;j++)
    sum+=a[j]*b;
    c=sum;
    printf("%f\n",c);
  }


回答よろしくお願いします。

Re:行列の積のもとめかたについて

#2

投稿記事 by » 18年前

すみません。
プログラムの下の方に
return 0;
}
が抜けてました。
それと正方行列Aは
1.00 4.00 7.00
2.00 5.00 8.00
3.00 6.00 9.00
でベクトルxは
0.11
0.22
0.33
をさします。わかりにくい表記ですみません。

組木紙織

Re:行列の積のもとめかたについて

#3

投稿記事 by 組木紙織 » 18年前

行列とベクトルの積の定義は分かりますか?

殆どあっているので、定義とアルゴリズムを比較すれば、想定通りの実行結果になると思います。

Re:行列の積のもとめかたについて

#4

投稿記事 by » 18年前

早い返信ありがとうございます。
計算式はわかってはいるのですが、それをfor文でどういじればいいのかがわかっていません。

box

Re:行列の積のもとめかたについて

#5

投稿記事 by box » 18年前

> 正方行列Aとベクトルxの積を求めたい

まずは手計算で、Aの何行何列目とxの何行目との積の和を
求めるかを追いかけてみてください。

そうすれば、ソースコードに落とすための
一般則が見えてくるかもしれません。

組木紙織

Re:行列の積のもとめかたについて

#6

投稿記事 by 組木紙織 » 18年前

でしたら、
一行目を求めるにはいくつの項を足しますか?

そしてこのプログラムではいくつの項を足していますか?

Re:行列の積のもとめかたについて

#7

投稿記事 by » 18年前

返信がおそくなってすみません。
お2人のヒントのおかげで間違いに気づくことが出来ました。

よくよくみたら最後の出力の部分も関数が足りてませんでしたし、与え方も間違っていました・・
その他のところもいじっていたら結果が無事出力出来ました。

本当にありがとうございました。

閉鎖

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