用C語言實現稀疏矩陣的除法

時間 2025-05-30 14:05:04

1樓:匿名使用者

一般人在使用matlab時。

對於矩陣的左除與右除很難正確的!區別出須要使用那乙個因此藉此機會說明一下。

希望能更大家多多討論。

矩陣之除法是有其特別的定義。

下面是例子:

假設a矩陣為方矩陣,且有反矩陣存在;b為配合之列向量或行向量,x為與b同大小之未知向量。

則以矩陣表示之聯立方程式可以表示如下:

a*x=b利用兩矩陣」左除」即 」 之意義可以獲得上式之解,即:

x = a\b

換言之,利搏慎用這樣的左除指令,可以解聯立方程式。

反之若方程式寫成另一種型式:

x*a=b則其解可以用右除表示:

x=b/a利用左除法,若a 方矩陣,則其乘冪是使用高斯遞減法解a*x=b 之矩陣方程式。

若a 不宴局為方矩陣,則其乘冪是使用歐斯侯德之正交法,以最小平方晌銀讓之方式就不足或過多變數系統求解。右除法與左除法之關係實際上可表示如下:

b/a = a'\b')'

2樓:匿名使用者

稀疏矩陣就是包含有大量0元素的矩陣。

在進行儲存時,一般的n階矩陣按照n維陣列的方式儲存,但是稀疏矩陣區不是按照這種方法儲存的,因為它一般維數很高,全李基部儲存會耗用脊衡大量記憶體空間,況且我們只關心那些非零的元素,所以用一些簡化的方法儲存。

同時,計算也有著與一般矩陣不同的計算方式櫻擾做。具體怎麼做,那要看你的矩陣的壓縮方式,一般沒有通用的解法!

利用稀疏矩陣的順序儲存實現稀疏矩陣的加、減、乘、轉置等簡單運算。 這是課題要求,求大佬用c語言。

3樓:網友

內容假設兩個稀疏矩陣a和b,他們均為m行n列,要求表寫求矩陣的加法即:c=a+b的演算法(c矩陣儲存a與b相加的結果)

分析利用一維陣列來儲存,一維陣列順序存放非零元素的行號、列號和數值,行號-1表示結束,然後進行矩陣加法運算時依次掃瞄矩陣a和b的行列值,並以行優先。當行列相同的時候,將第三個元素的值相加和以及行列號三個元素存入結果陣列c中;不相同時,將a或b的三個元素直接存入結果陣列中。

**// : 定義控制檯應用程式的入口點。 // #include "" #includeusing namespace std; #define line 10 struct node; //初始化陣列 int init(node array) cin>>line>>data; array[index].

data=data; array[index].line = line; array[index].row = row; index++;return index; }//列印陣列 void printarray(node array,int len) }int calc(node a

c語言稀疏矩陣的加法問題

4樓:海南正凱所

#include

#include

#define max 100

struct matnode //十字連結串列結點的定義。

tag;;struct matnode *createmat(struct matnode *hmone[max])

int m,n,t,s,i,r,c,v;

struct matnode *l,*p,*q;

struct matnode *h[100],*l,*p,*q; //h是十字連結串列每行的表頭指標陣列。

printf("行數m,列數n,非零元素個數t:");

輸入行、列數,非零元素個數。

scanf("%d,%d,%d",&m,&n,&t);//輸入行、列數,非零元素個數。

l=(struct matnode *)malloc(sizeof(struct matnode));

h[0]=l;//h是指標陣列,分別指向頭節點和行、列表頭結點。

l->row=m; //建立十字連結串列頭結點*l

用鄰接表表示稀疏矩陣並實現矩陣的加法減法乘法運算!求c語言**啊!

5樓:網友

# include

typedef struct a

table;

void createbiao(table *a)//建立鄰接表void tableplus(table *a,table *b)for(i=0;ivexnum;i++)

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

a->arc[i][j]+=b->arc[i][j];

void tablejian(table *a,table *b)for(i=0;ivexnum;i++)

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

a->arc[i][j]-=b->arc[i][j];

void tableplus(table *a,table *b)for(i=0;ivexnum;i++)有問題追問,寫寫不容易。

請c語言高手幫忙編寫兩個稀疏矩陣相加的程式,急!!!

6樓:網友

滿意答案的like其實是clear,還有在輸入行列和值的時候要用逗號隔開,不然會出現死迴圈。

7樓:網友

easy. 兩個連結串列,各乙個指標,先動第乙個連結串列的指標,每動一下看第二個連結串列的指標指向的是不是矩陣中的對應元素,是則加上,直到它在矩陣中的位置超過第二個連結串列的指標。再動第二個連結串列的指標……

8樓:匿名使用者

1. 以「帶行邏輯鏈結資訊」的三元組順序表表示稀疏矩陣。

2. 分別輸入矩陣的非零元素。

3. 實現兩個矩陣相加的運算。

4. 還原成矩陣形式列印出計算結果。

注意:是"帶行邏輯連線資訊",如果是一般的三元組順序表我會做,但他要求帶行標識,即標識出每行第乙個非0元的位置。

在相加和輸入的過程中,都得用到行標識才行。

9樓:網友

資料結構教材上有偽**的吧。

稀疏矩陣的構建 c語言

10樓:網友

這個是稀疏矩陣相乘的演算法吧。

num[col]表示矩陣m中第col列中非零元個數rpos[row]表示矩陣n中第row行中第乙個非零元在中的序號,那麼rpos[row+1]-1就是矩陣b第row行中最後乙個非零元在的序號,而最後一行中最後乙個非零元在中的位置顯然就是了。

這個比較繞 好好想想就理解了。

11樓:

看看嚴蔚敏老師的《資料結構(c語言)》96——106頁,講的很詳細。

能否實現vbs搭介面,C語言實現演算法

可以這樣做,但一般也不是用c,是用c 之類的建立dll供其它軟體呼叫,寫介面的想快的話一般是用vb或c 沒聽說過vbs搞介面的。c語言演算法必須要有輸入和輸出嗎?演算法可以沒有輸入但是必須要用輸出。也可以沒有輸入也可以沒有輸出,例如 求1到10的累加和,並不要求輸出。include int main...

完整正確的C語言二叉樹程式,用c語言實現二叉樹的程式,可以輸入輸出和遍歷

include using namespace std class node node node getleft void setleft node l node getright void setright node r char getdata void setdata const int in...

高分可追加到400用C 語言實現簡單的資料壓縮與加解密系統,求大神幫忙

請問編譯器是什麼?下面的程式適用於 linux的gcc,如果要win32 console,只需簡單修改 include include ifdef gnuc include else include endif int compess file fsrc,file fdest,int n while...