.................. program 18 .................. /* 行列とベクトルの掛け算 program 7を書き換える。掛け算部分と 行列への入力や出力をvoid型関数にする。 また、行列の大きさはdefineで指定する */ #include #define NN 2 void m_times_v(double [][],double [],double[]); void m_input(double [][]); void v_input(double []); void m_output(double [][]); void v_output(double []); main() { double a[NN][NN],x[NN],y[NN]; int i,j; /* キーボード(またはファイル)から行列に値を読み込む */ m_input(a); /* ベクトルに値を読み込む */ v_input(x); /* y = ax を計算*/ m_times_v(a,x,y); /* 出力 */ printf("matrix a:\n"); m_output(a); printf("vector x:\n"); v_output(x); printf("vector y=ax:\n"); v_output(y); } /* ベクトルw = 行列m * ベクトルv を計算する関数*/ void m_times_v(double m[][NN],double v[],double w[]) { int i,j; /* ベクトルwを初期化(値を0に) */ for( i=0; i #define NN 2 void m_times_m(double [][],double [][],double[][]); void m_input(double [][]); void m_output(double [][]); main() { double a[NN][NN],b[NN][NN],c[NN][NN]; /* キーボード(またはファイル)から行列に値を読み込む */ m_input(a); m_input(b); /* c = ab を計算*/ m_times_m(a,b,c); /* 出力 */ printf("matrix a:\n"); m_output(a); printf("matrix b:\n"); m_output(b); printf("matrix c=ab:\n"); m_output(c); } /* 行列m3 = 行列m1 * 行列m2 を計算する関数*/ void m_times_m(double m1[][NN],double m2[][NN],double m3[][NN]) { int i,j,k; /* 行列m3を初期化(値を0に) */ for( i=0; i