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...