mathtype精简版如何输入稀疏矩阵

mathtype精简版如何输入稀疏矩阵,第1张

1、带物点历行庆击打开mathtype精简版。

2、点击要进行编辑的模型。

3、在上面肢握的模型中进行矩阵输入。

4、输入完成以后点击完成就可以了。以上就是mathtype精简版如何输入稀疏矩阵的方法。

/*我写的一个例子,基本上将茄掘稀疏矩阵三元组存储结构的定义和其有关的算法都实现了,那java语言改变去吧!

#include<stdio.h>

#define MAXSIZE 1000//非零元素的个数最多为1000

typedef struct {

int row

int col

int e

}Triple

typedef struct{

Triple data[MAXSIZE]//非零元素的三元组表

int m//矩阵的行数

int n//矩阵的列数

int non_zero_num//非零元数的个数唯纳汪

}XSMatrix

XSMatrix XSM_Info_Input(XSMatrix s){

int i

printf("输入矩阵的行数:")

scanf("%d",&s.m)

printf("输入矩阵的列数:")

scanf("%d",&s.n)

printf("输入矩阵的非零元素的个数:")

scanf("%d",&s.non_zero_num)

for(i=0i<s.non_zero_numi++){

printf("输入第%d个非零元数的信息:\n",i+1)

printf("行下标:")

scanf("%d",&s.data[i].row)

printf("列下标:")

scanf("%d",&s.data[i].col)

printf("元素的值")

scanf("%d",&s.data[i].e)

}

return s

}

void XSM_Info_Output(XSMatrix s){

int i

printf("\n稀疏矩阵行数和列数:%d\t%d\n",s.m,s.n)

printf("稀疏矩阵指仔三元组表如下:\n")

printf("行下标\t列下标\t值\n")

for(i=0i<s.non_zero_numi++){

printf("%d\t%d\t%d\n",s.data[i].row,s.data[i].col,s.data[i].e)

}

}

//列序递增转置法

XSMatrix TransXSM(XSMatrix s){

XSMatrix d

int i,j,k=0

d.m=s.n

d.n=s.m

d.non_zero_num=s.non_zero_num

for(i=0i<s.ni++){

for(j=0j<s.non_zero_numj++){

if(s.data[j].col==i)

{

d.data[k].row=s.data[j].col

d.data[k].col=s.data[j].row

d.data[k].e=s.data[j].e

k++

}

}

}

return d

}

main(){

XSMatrix source,dest

source=XSM_Info_Input(source)

XSM_Info_Output(source)

dest=TransXSM(source)

XSM_Info_Output(dest)

}

C++稀疏矩阵转置代码:

#include <iostream>    

002    using namespace std    

003    //三元组    

004    struct Trituple    

005    {    

006        int row, col  //非零元素的行号、列号    

007        int val       //非零元素的值    

008    }    

009    //稀疏矩阵类声明    

010    class SparseMatrix    

011    {    

012    //friend ostream & operator << (ostream &, SparseMatrix &)    

013                            //友元函数,输出流 *** 作符重载    

014    //friend istream & operator >> (istream &, SparseMatrix &)    

015                            //友元函数,输入流 *** 作符重载    

016    public:    

017        SparseMatrix(int maxt = 100) //构造函数    

018        ~SparseMatrix() //析构函数    

019        bool TransposeTo(SparseMatrix &) //转置    

020        bool TransposeTo_Faster(SparseMatrix &)//快速转置    

021        void AddTo(const SparseMatrix &)//加运算    

022        bool Input() //输入稀疏矩阵    

023        void Output()//输出稀疏矩阵    

024    private:    

025        Trituple *data //存储非零元素三元组的数组    

026        int rows, cols, terms    //矩阵的行数、列数、非零元素个数    

027        int maxterms //数组data的大小    

028    }    

029    //构造函数,分配maxt个三元组结点的顺序空间,构造一个空的稀疏矩阵三元组表。    

030    SparseMatrix::SparseMatrix(int maxt)    

031    {    

032        maxterms = maxt    

033        data = new Trituple [maxterms]    

034        terms = rows = cols = 0    

035    }//SparseMatrix    

036    //析构函数,将三元组表结构销毁。    

037    SparseMatrix::~SparseMatrix()    

038    {    

039        if (data != NULL) delete [] data    

040    }//~SparseMatrix    

041    /*//输出稀疏矩阵    

042    ostream & operator 扒晌<< (ostream & out, SparseMatrix & M)    

043    {    

044        out << "rows=" << M.rows << endl    

045        out << "cols=" << M.cols << endl    

046        out << "terms=" << M.terms << endl    

047        for (int i = 0 i < M.terms i++)    

048            out << "data[" << M.data[i].row << "," << M.data[i].col << "]=" << M.data[i].val << endl    

049        return out    

050    }    

051    //输入稀疏矩阵    

052    istream & operator >> (istream & in, SparseMatrix & M)    

053    {    

054        cout << "输入稀疏矩阵的行数、列数以及非零元素个数" << endl    

055        in >> M.rows >> M.cols >> M.terms    

056        if (M.terms > M.maxterms) exit (1)    

057        cout << "terms=" << M.terms << endl    

058        for (int i = 0 i < M.terms i++){    

059            cout << "输入非零元素的行号、列号和元素值 " << i + 1 << endl    

060            in >> M.data[i].row >> M.data[i].col >> M.data[i].val    

061        }    

062        return in    

063    }*/    

064    //转置,将*this的转置矩阵送入B    

065    bool SparseMatrix::TransposeTo(SparseMatrix &B)    

066    {    

067        if(terms > B.maxterms)    

068            return false    

069        B.rows = cols    

070        B.cols = rows    

071        B.terms = terms    

072        if (terms > 0) {    

073            int p = 0    

074            for (int j = 1 j <= cols j++)    

075     春神锋           for (int k = 0 k < terms k++)    

076                  瞎简  if (data[k].col == j) {    

077                        B.data[p].row = j    

078                        B.data[p].col = data[k].row    

079                        B.data[p].val = data[k].val    

080                        p++    

081                    }    

082        }    

083        return true    

084    }//TransposeTo    

085    //快速转置,将*this的转置矩阵送入B    

086    bool SparseMatrix::TransposeTo_Faster(SparseMatrix &B)    

087    {    

088        if (terms > B.maxterms)    

089            return false    

090        B.rows = cols    

091        B.cols = rows    

092        B.terms = terms    

093        if (terms > 0) {    

094            int *num, *cpot    

095            int j,k,p    

096            num = new int[cols]    

097            cpot = new int[cols]    

098            for (j = 0 j < cols j++)  //初始化num[]    

099                num[j] = 0    

100            for (k = 0 k < terms k++)  //统计每一列的非零元素个数num[]    

101                num[data[k].col - 1]++    

102            //求出B中每一行的起始下标cpot[]    

103            cpot[0] = 0    

104            for(j = 1 j < cols j++)    

105                cpot[j] = cpot[j - 1] + num[j - 1]    

106            //执行转置 *** 作    

107            for(k = 0 k < terms k++) {    

108                p = cpot[data[k].col - 1]++   //B中的位置    

109                B.data[p].row = data[k].col    

110                B.data[p].col = data[k].row    

111                B.data[p].val = data[k].val    

112            }    

113            delete [] num    

114            delete [] cpot    

115        }    

116        return true    

117    }//TransposeTo_Faster    

118    //输入稀疏矩阵    

119    bool SparseMatrix::Input()    

120    {    

121        cout << "输入稀疏矩阵的行数、列数以及非零元素个数" << endl    

122        cin >> rows >> cols >> terms    

123        if (terms > maxterms) {    

124            cout << "非零元个数太多!" << endl    

125            return false    

126        }    

127        if (terms == 0)    

128            return true    

129        cout << "按行序输入" << terms << "个非零元素的三元组" << endl    

130        for (int i = 0 i < terms i++) {    

131            cout << "输入第" << i + 1 << "个非零元素的行号、列号和元素值 " << endl    

132            cin >> data[i].row >> data[i].col >> data[i].val    

133            if (data[i].row < 1 || data[i].row > rows || data[i].col < 1 || data[i].col > cols) {    

134                cout << "矩阵输入有误!" << endl    

135                return false    

136            }    

137        }    

138        return true    

139    }//Input    

140    //输出稀疏矩阵    

141    void SparseMatrix::Output()    

142    {    

143        cout << "rows=" << rows << endl    

144        cout << "cols=" << cols << endl    

145        cout << "terms=" << terms << endl    

146        for (int i = 0 i < terms i++)    

147            cout << "data[" << data[i].row << "," << data[i].col << "]=" << data[i].val << endl    

148    }//Output    

149    int main()    

150    {    

151        SparseMatrix M(100)    

152        if (M.Input()) {    

153            cout << "原始矩阵:" << endl    

154            M.Output()    

155            SparseMatrix T, S    

156            cout << "转置矩阵:" << endl    

157            if(M.TransposeTo(T))    

158                T.Output()    

159            if(M.TransposeTo_Faster(S))    

160                S.Output()    

161            system("pause")    

162            return 1    

163        }    

164        else    

165            return 0    

166    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12248592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存