Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請問矩陣的問題

0 views
Skip to first unread message

真情男子

unread,
Feb 2, 2001, 7:57:27 AM2/2/01
to
請問如何用VC++來設計一個程式,可以計算3*2矩陣和2*3矩陣的乘積.
--
[1;33m※ Origin: [36m奇摩 大摩域 [37m<telnet://bbs.kimo.com.tw> [m
[1;35m◆ From: [1;32m139.175.164.57 [m

有誰願意陪我(M)

unread,
Feb 2, 2001, 4:50:58 PM2/2/01
to
※ 引述《skeche...@bbs.kimo.com.tw (真情男子)》之銘言:
> 請問如何用VC++來設計一個程式,可以計算3*2矩陣和2*3矩陣的乘積.

不就直接乘就好了ㄇ??

int a[3][2],b[2][3];
assign給兩matrix值;
int c[3][3];
轉置b matrix為new_b[3][2]
for( int i=0;i<3;i++)
for( int j=0;j<2;j++)
c[i][j]=a[i][j]*new_b[i][j];

運算時間為O(3*2)

--
[m○ Origin: 新竹師院 風之坊﹝bbs.NHCTC.edu.tw﹞From: thccy11.Oz.nthu.edu.tw

隨浪漂流的電鍋

unread,
Feb 2, 2001, 9:59:27 PM2/2/01
to
※ 引述《Skyrac...@bbs.nhctc.edu.tw (有誰願意陪我(M))》之銘言:

> ※ 引述《skeche...@bbs.kimo.com.tw (真情男子)》之銘言:
> > 請問如何用VC++來設計一個程式,可以計算3*2矩陣和2*3矩陣的乘積.
> 不就直接乘就好了ㄇ??
> int a[3][2],b[2][3];
> assign給兩matrix值;
> int c[3][3];
> 轉置b matrix為new_b[3][2]
> for( int i=0;i<3;i++)
> for( int j=0;j<2;j++)
> c[i][j]=a[i][j]*new_b[i][j];
> 運算時間為O(3*2)
ㄟ~~~~這個答案不太對吧??
既然你開了C[3][3]
你很明顯的知道乘出來該有9個值的
你不覺得C[i][j]算出來只有3*2=6個嗎??
而且~~~應該是
C[1][1]=A[1][1]*B[1][1]+A[1][2]*B[2][1]

所以你的程式應該寫成
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
for(int k=0; k<2; k++)
c[i][j]=c[i][j]+a[j][k]*b[k][j];

--
[0;36;40m電鍋 [0;32;40m不只是 [0;36;40m電鍋 [m
[0;33;40m而它之所以為普通電鍋 [m
[0;31;40m唯一因素是你 [0;35;40m狹隘的思想 [m

[0;31;40m電鍋說: [0;32;40m限制想像力等於限制自己的成就 [m


--
[1;33m※ Origin: [36m奇摩 大摩域 [37m<telnet://bbs.kimo.com.tw> [m

[1;35m◆ From: [1;32m210.241.153.88 [m

有誰願意陪我(M)

unread,
Feb 3, 2001, 4:29:57 PM2/3/01
to
※ 引述《POTRI...@bbs.kimo.com.tw (隨浪漂流的電鍋)》之銘言:
> ※ 引述《Skyrac...@bbs.nhctc.edu.tw (有誰願意陪我(M))》之銘言:

> > 不就直接乘就好了ㄇ??
> > int a[3][2],b[2][3];
> > assign給兩matrix值;
> > int c[3][3];
> > 轉置b matrix為new_b[3][2]
for( int i=0;i<3;i++)
for( int j=0;j<3;j++)
{
int p=0;
c[i][j]=a[i][p]*new_b[j][p]+a[i][p+1]*new_b[j][p+1];
}
運算時間為O(3*3)+轉置的時間(其實可以不必轉置啦..)為===>降應該對了..
喔..抱歉阿.. 寫太快了..

> ㄟ~~~~這個答案不太對吧??
> 既然你開了C[3][3]
> 你很明顯的知道乘出來該有9個值的
> 你不覺得C[i][j]算出來只有3*2=6個嗎??
> 而且~~~應該是
> C[1][1]=A[1][1]*B[1][1]+A[1][2]*B[2][1]
> 所以你的程式應該寫成
> for(int i=0; i<3; i++)
> for(int j=0; j<3; j++)
> for(int k=0; k<2; k++)
> c[i][j]=c[i][j]+a[j][k]*b[k][j];
你的方式為O(3*3*2)
0 new messages