c語(yǔ)言關(guān)于矩陣乘積的函數(shù),c語(yǔ)言中乘積函數(shù)

用c語(yǔ)言實(shí)現(xiàn)兩個(gè)矩陣相乘怎么做?

1、程序運(yùn)行輸入數(shù)據(jù)時(shí),第一行為A矩陣的行列數(shù)和B矩陣的行列數(shù),接著分別輸入A、B兩個(gè)矩陣的值。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到磐石網(wǎng)站設(shè)計(jì)與磐石網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋磐石地區(qū)。

2、首先,定義6個(gè)整型變量,保存A、B矩陣的行和列,以及控制循環(huán)的變量,k則用于實(shí)現(xiàn)矩陣的乘法。

3、接著,定義三個(gè)整型二維數(shù)組,保存A、B和C矩陣的各元素。

4、輸入三個(gè)矩陣的行數(shù)和列數(shù),保存在變量a、b、c中。

5、輸入矩陣A的各元素,保存在數(shù)組X中。

6、輸入矩陣B的各元素,保存在數(shù)組Y中。

7、將二維數(shù)組Z的各元素,初始化為0。

8、用兩層for循環(huán),控制矩陣的乘法,并輸出乘法所得的結(jié)果。

9、計(jì)算A矩陣和B矩陣的乘法,結(jié)果保存在數(shù)組Z中。

10、最后,輸出乘法所得的結(jié)果,即輸出Z數(shù)組中的所有元素。

11、運(yùn)行程序,輸入矩陣A和B的行數(shù)和列數(shù),以及A矩陣和B矩陣的所有元素,電腦就會(huì)計(jì)算出乘積C矩陣的所有元素,并輸出C矩陣。

C語(yǔ)言編程求矩陣乘積

#define?MAX?50

#define?M?MAX

#define?N?MAX

#define?T?MAX

#define?S?MAX

int?Mult(double?a[][N],int?m,int?n,double?b[][T]int?s,int?t,double?c[][T])?{

int?i,j,k;

if(n?!=?s)?{

printf("兩矩陣相乘,左矩陣的列數(shù)與右矩陣的行數(shù)必須相等。\n");

return?0;

}

int?c;

tmp.m_Mat?=?new?double?*[tmp.m_Rows];

for(int?i?=?0;i??tmp.m_Rows;i++)?tmp.m_Mat[i]?=?new?double[tmp.m_Cols];

for(i?=?0;?i??m;?++i)?{

for(j?=?0;?j??n;?++j)?{

c[i][j]?=?0;

for(k?=?0;?k??t;?++k)

c[i][j]?+=?c[i][k]?*?c[k][j];

}

}

return?1;

}

C語(yǔ)言編程:編寫一個(gè)函數(shù),實(shí)現(xiàn)矩陣的乘法。

如果確定距陣的大小長(zhǎng)度,定義兩個(gè)二維數(shù)組,用兩個(gè)for循環(huán)兩數(shù)據(jù)輸入到內(nèi)存,是每?jī)蓚€(gè)for輸入一個(gè)數(shù)組,然后定義另外一個(gè)數(shù)組,用來(lái)得到結(jié)果距陣,再用三個(gè)嵌套的for將結(jié)果放入第三個(gè)數(shù)組當(dāng)中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循環(huán),這樣就可以得到要求的距陣,如果不確定大小長(zhǎng)度就在輸入語(yǔ)句的每個(gè)for循環(huán)的轄區(qū)內(nèi)加一個(gè)變量作為標(biāo)記程序運(yùn)行時(shí)求出距陣的大小

C語(yǔ)言怎么求矩陣的乘積呢?

語(yǔ)言只提供+,-,*,/等低級(jí)運(yùn)算功能,高級(jí)的都必須代碼實(shí)現(xiàn),包括次方開放運(yùn)算,都是編寫代碼實(shí)現(xiàn)。 你學(xué)過(guò)矩陣乘法,這就很容易,你需要定義一個(gè)結(jié)構(gòu)體,作為矩陣。。。。

矩陣很簡(jiǎn)單,行數(shù),列數(shù),元素。

typedef struct {

uint r,c;

float *d;

int size;

}matrix;

分別是行數(shù),列數(shù),數(shù)據(jù)指針,和數(shù)據(jù)最大長(zhǎng)度。數(shù)據(jù)最好用指針不用數(shù)組,是因?yàn)樵黾屿`活性,你只需要?jiǎng)討B(tài)申請(qǐng)內(nèi)存即可讓你的矩陣大小可變,數(shù)組長(zhǎng)度不可變。最后一個(gè)參數(shù)代表內(nèi)存長(zhǎng)度,最好是要有,方便你重新定義數(shù)組時(shí)看內(nèi)存夠不夠,不夠可以realloc,沒(méi)有的話你就不知道夠不夠(5*4的矩陣,乘以 4*5 矩陣必然變成5*5矩陣,賦值到新矩陣結(jié)構(gòu)體里,如果還是20個(gè)單位,顯然裝不下,必須realloc,所以該參數(shù)必須有)。。。

你只要實(shí)現(xiàn)個(gè)函數(shù) int mul(matrix *m1,*m2,*m3)即可,m1,m2分別為左右 矩陣,m3為結(jié)果。

按照運(yùn)算法則,你必須完成兩件事,判斷m1,m2是否可以相乘,不可以相乘返回一個(gè)錯(cuò)誤(比如返回-1),(3*3和4*4矩陣不能相乘),如果可以那就先讓m3.r=m1.r,m3.c=m2.c;

m3.d[i][j]=0;

for(k=0;km1.c;k++)

m3.d[i][j]+=m1.d[i][k]*m2.d[k][j];

這你就能到到m3的一個(gè)元素,那你只要求出所有的元素就得到新矩陣了。

不過(guò)因?yàn)槭荂語(yǔ)言,你要考慮內(nèi)存,m3也許內(nèi)存不夠長(zhǎng),你必須要做一下內(nèi)存長(zhǎng)度判斷,不夠長(zhǎng)要申請(qǐng),否則就報(bào)錯(cuò)沒(méi)法用了。。。所以size這個(gè)成員也是必須的。。

不過(guò)話說(shuō)回來(lái),如果是用C++,只要你寫一個(gè)矩陣類,重載運(yùn)算符 * ,你就可以用

m3=m1*m2; 這樣運(yùn)算,書寫更方便,但C語(yǔ)言沒(méi)這好事。

C語(yǔ)言關(guān)于矩陣乘法的函數(shù),,

童鞋,不知道你是用的什么測(cè)試數(shù)據(jù),在我的機(jī)器上測(cè)試了幾組數(shù)據(jù),結(jié)果都是正確的。

重復(fù)下我的測(cè)試代碼。

#include

"stdio.h"

#include

"stdlib.h"

#include

"malloc.h"

void

multiplication(int

a,int

b,int

c,int

*p,int

*q);

void

main()

{

int

m,n,l,h;

int

i,j,g,k;

int

*p,*q;

char

x;

printf("請(qǐng)輸入a矩陣行數(shù)和列數(shù),以空格分開,,,");

scanf("%d

%d",m,n);

p=(int

*)malloc(sizeof(int)*m*n);

for(i=0;im;i++)

for(j=0;jn;j++)

{

printf("請(qǐng)輸入a矩陣%d行%d列的數(shù),,",(i+1),(j+1));

scanf("%d",(p+m*i+j));

}

printf("請(qǐng)輸入b矩陣行數(shù)和列數(shù),以空格分開,,,");

scanf("%d

%d",l,h);

q=(int

*)malloc(sizeof(int)*l*h);

for(g=0;gl;g++)

for(k=0;kh;k++)

{

printf("請(qǐng)輸入b矩陣%d行%d列的數(shù),,",(g+1),(k+1));

scanf("%d",(q+l*g+k));

}

multiplication(

m,

n,

h,

p,

q);

}

void

multiplication(int

a,int

b,int

c,int

*p,int

*q)

{

int

i,j;

int

k;

int

sum;

for(i=0;ia;i++)

{

for(j=0;jc;j++)

{

sum=0;

for(k=0;kb;k++)

{

sum=sum+(*(p+a*i+k))*(*(q+b*k+j));

}

printf("%d

",sum);

}

printf("\n");

}

}

附帶一組測(cè)試數(shù)據(jù)

A

3

4

2

1

B

3

4

Result

25

10

結(jié)果正確。

c語(yǔ)言矩陣乘法函數(shù)

函數(shù)類型是根據(jù)有無(wú)返回值判斷的,無(wú)返回值就把函數(shù)定義為void類型

如果是單純輸出矩陣那就不用返回了,如果還要傳回主函數(shù)有其它應(yīng)用那就返回吧

名稱欄目:c語(yǔ)言關(guān)于矩陣乘積的函數(shù),c語(yǔ)言中乘積函數(shù)
URL地址:http://muchs.cn/article6/hcgsig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、商城網(wǎng)站、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管