ページ 11

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

Posted: 2007年11月21日(水) 08:20
by
大学で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:行列の積のもとめかたについて

Posted: 2007年11月21日(水) 08:39
by
すみません。
プログラムの下の方に
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:行列の積のもとめかたについて

Posted: 2007年11月21日(水) 08:44
by 組木紙織
行列とベクトルの積の定義は分かりますか?

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

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

Posted: 2007年11月21日(水) 08:53
by
早い返信ありがとうございます。
計算式はわかってはいるのですが、それをfor文でどういじればいいのかがわかっていません。

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

Posted: 2007年11月21日(水) 08:59
by box
> 正方行列Aとベクトルxの積を求めたい

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

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

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

Posted: 2007年11月21日(水) 09:03
by 組木紙織
でしたら、
一行目を求めるにはいくつの項を足しますか?

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

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

Posted: 2007年11月21日(水) 17:58
by
返信がおそくなってすみません。
お2人のヒントのおかげで間違いに気づくことが出来ました。

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

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