精华内容
下载资源
问答
  • 建立判断矩阵 层次分析法的一个重要特点就是用两两重要性程度之比的形式表示出两个方案的相应重要性程度等级。 4.计算层次单排序的权向量和一致性检验 对于每一个成对比较阵计算最大特征根及对应特征向量,利用一致...

    一、引言

    供应商管理,是在新的物流与采购经济形势下,提出的管理机制。供应链管理环境下的客户关系是一种战略性合作关系,提倡一种双赢机制。从传统的非合作性竞争走向合作性竞争、合作与竞争并存是当今企业关系发展的一个趋势。因此供应商选择对企业采购与供应工作具有直接的关键的影响。一个好的供应商能够在物料或服务的质量、成本等各个方面满足企业的需求,一个不合格的供应商在这些方面会给企业带来非常严重的问题与后果。无论是在传统的采购与供应管理中,还是在现在的供应链管理中,供应商选择都是关键环节,选择一个卓越的供应商,是企业的一项关键职能。

    供应商选择的一般原则是:资金力量较强,产品质量较好,价格合理,服务质量好。所以本文的评价指标主要考虑质量、价格、交货、服务和提前期这五个指标。对这五个评价指标的具体描述如下:

    产品质量:指供应商的产品满足企业需求的程度。一般用合格产品占总产品的比重计算,该指标越大越好,是“效益”型指标。

    产品价格:指企业采购的每一单位产品所付出的成本,该指标越小越好,是“成本”型指标。

    交货:指供应商及时满足企业定单的程度。一般用及时交货的定单数占总定单数的比例来表示,该指标值越大越优,是“效益”型指标。

    服务:指供应商在交货后在产品安装、维护等方面满足企业的程度,该指标值越大越好,为“效益”型指标。

    交货提前期:指企业发出定单到收到定货之间的时间,对于需求方来说,交货提前期越短越好,是“成本”型指标。

    二、方法介绍

    层次分析法首先将整个系统划分为目标、准则和方案三个层次,然后对方案进行相互比较,运用矩阵形式判断作相对评价,最后进行综合评价,排出各方案的优劣次序。具体做法可分为五个步骤:

    1.明确目标

    2.建立层次结构

    在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时又支配下一层的因素或受到下层因素的作用。最上层为目标层,通常只有1个因素,最下层通常为方案或对象层,中间可以有一个或几个层次,通常为准则或指标层。当准则过多时应进一步分解出子准则层。

    3.建立判断矩阵

    层次分析法的一个重要特点就是用两两重要性程度之比的形式表示出两个方案的相应重要性程度等级。

    4.计算层次单排序的权向量和一致性检验

    对于每一个成对比较阵计算最大特征根及对应特征向量,利用一致性指标、随机一致性指标和一致性比率做一致性检验。若检验通过,特征向量(归一化后)即为权向量:若不通过,需重新构追成对比较阵。

    5.进行总层次排序

    计算最下层对目标的组合权向量,并根据公式做组合一致性检验,若检验通过,则可按照组合权向量表示的结果进行决策,否则需要重新考虑模型或重新构造那些一致性比率较大的成对比较阵。

    应用这种方法,决策者通过将复杂问题分解为若干层次和若干因素,在各因素之间进行简单的比较和计算,就可以得出不同方案的权重,为最佳方案的选择提供依据。

    三、建立模型

    1.明确目标:选择理想的供应商。

    2.建立层次结构模型:该结构图包括目标层,准则层,方案层。

    4.计算层次单排序的权向量:W=(0.263,0.475,0.005,0.090,0.110)。CR=0.016<0.1通过一致性验证。

    同样求第3层(方案)对第2层每一元素(准则)的权向量:

    w1=(0.595,0.277,0.129),w2=(0.082,0.236,0.682),w3=(0.429,0.429,0.142),w4=(0.633,0.193,0.175),w5=(0.166,0.166,0.668)。CR1=0.05,CR2=0.002,CR3=0,CR4=0.009,CR5=0,均<0.1,通过一致性检验。

    5.进行总层次排序

    P1对总目标的权值为:0.595×0.263+0.082×0.475+0.429×0.055+0.663×0.099+0.166×0.110=0.3同理P2、P3 对总目标的权值分别为:0.246,0.456 决策层对总目标的权向量为:{0.3,0.246,0.456},CR=0.015<0.1层次总排序通过一致性检验。因此最佳供应商为P3。

    四、小结

    本文运用层次分析法对供应链管理中的供应商选择进行了评价,充分考虑了供应商的质量、成本、交货、服务和提前期,综合考虑各个供应商的优劣势,以及该层对上层的影响,选择了一个最优的供应商。随着供应链思想的普遍应用,供应商的选择显得越来越重要,因此本文具有一定的现实意义。

    文末资源:层次分析法常用软件,破解版yaahp软件,中间层个数可达99个,方案层个数可达99个,免费版的中间层、方案层个数只有3个哦,内含教程,永久使用:(浏览器输入/点击网址获取)

    层次分析法之yaahp软件,中间层、方案层99个,内含教程,提供技术支持!

    https://k.ruyu.com/l8veTM3e

    下图是我做的架构:在这里插入图片描述

    展开全文
  • 目录前言建立矩阵类类的成员:有参构造函数Matrix(int)和析构函数~Matrix():打印矩阵void Show():矩阵赋初值void Set_data():实现矩阵求逆矩阵的初等变换求逆:一些待完善的地方尾声 前言 最近有一位友人的选题是...

    前言

    最近有一位友人的选题是关于矩阵的C++实现,因而我也得以对其中一些部分稍稍接触,其中对于矩阵的求逆的运算挺有意思的,它看上去简单明了,但实际上要想去实现它还是值得思考的。做完后,觉得还是挺有价值的,所以记录下我的过程,以供分享。

    建立矩阵类

    在这里,我认为对于矩阵的各项属性和方法,我认为用类描述更为方便,因为以后若不只是想求逆还想进行其他运算的话加,可以直接在类里添加,明了很多。

    以下是具体实现的代码:

    类的成员:

    class Matrix
    {
    public:
        int Count;  //有关这个矩阵类的阶数的参数
        double **data;  //这个矩阵的具体内容
        Matrix(int);   //矩阵类的有参构造函数
        void Set_data();    //声明一个函数,作用是给矩阵赋初值
        void Show();   //声明一个函数,作用是打印这个矩阵内容
        ~Matrix();     //矩阵类的析构函数
        Matrix Inverse_Matrix ();//声明一个函数,作用是求该矩阵的逆矩阵
    };
    

    这里因为是有要求逆的环节,所以我默认了这个矩阵类代表的是方阵,所以我直接用一个参数"Count"来表示这是几阶方阵,然后我用了一个二级指针data来表示这个矩阵内部的各个具体数值。

    有参构造函数Matrix(int)和析构函数~Matrix():

    因为我们在建立一个矩阵对象的时候,我们一定要对这个矩阵的阶数进行规定,所以我在这里设置了一个有参构造函数:

    Matrix(int);   //矩阵类的有参构造函数
    

    传入的参数就可以用来规定阶数了。

    下面是有参构造函数的内容:

    Matrix::Matrix(int M)
    {
        int Count = M;
        double **data = new double* [M]; 
        //意思就是为data这个二重指针分配了内存,内存大小为M个指针,data指向这M个指针,即这个矩阵有M行
        for (int i = 0; i < M; ++i) {
            data[i] = new double [M];    
            //意思就是给这M个指针分配了内存,内存大小为M个double类型的数据,即这个矩阵有M列
        }
    }
    

    其中分配内存的方式就可以理解为:我为data分配了M个指针的内存,同时这M个指针我又分配给他们M个double类型的内存。
    这样,一个M行,M列的矩阵就建立了。

    之后在析构函数中要注意要把内存释放:

    Matrix::~Matrix(){
        delete data;
    }
    

    打印矩阵void Show():

    这个没太多好说的,就是将矩阵打印出来

    void Matrix::Show() //这个函数的功能是打印这个矩阵
    {
        for (int i = 0; i < Count; ++i) {
            for (int j = 0; j < Count; ++j) {
                cout << data[i][j] << '\t';
            }
            cout << '\n';
        }
    }
    

    矩阵赋初值void Set_data():

    void Matrix::Set_data()
    {
        //这个要自己写了,就是把文件中的数据记录到矩阵中
    }
    

    这里是因为我的友人是利用文件输入的,所以需要他自己书写,如果就是手动输入的话,其实就是打印矩阵的逆向输入,很好实现。

    实现矩阵求逆

    重头戏来了,对于矩阵求逆的实现:
    之前有想过利用伴随矩阵求逆,但是仔细思考发现:
    虽然矩阵的行列式还是有办法求,但是伴随矩阵实在是太难了
    这样的话,自然想到了利用初等变换:

    矩阵的初等变换求逆:

    这边援引百度知道上的概述:

    我们假设给了一个A矩阵,则如何求A得逆du矩阵呢
    我们知道如果PA=E1,则P矩阵是A的逆矩阵。
    然而A矩阵的每一次行变换都相当于A矩阵左乘了一个初等矩阵P1,所以A的所有行变换可以看为多个初等矩阵左乘A矩阵,即P1P2P3…Pn=P,还有一个条件就是PE2=P,由此可以看出,当A和E2做相同的行变换,且A变成E1矩阵时,E2矩阵变为P矩阵,即A的逆矩阵,这里E矩阵标12是为了帮助理解区分,E1 E2都是单位矩阵。
    接下来你只需要在A矩阵右边加一个单位矩阵,然后在对这个组合矩阵进行行变换,使A矩阵变为E矩阵,右边则得到了P矩阵,即A的逆矩阵。

    那么具体实现呢:

    Matrix Matrix::Inverse_Matrix()
    {
        Matrix result(Count);   //建立一个结果矩阵,用来表示这个矩阵的逆矩阵
        //将结果矩阵变为单位阵
        for (int i = 0; i < Count; ++i) {
            for (int j = 0; j < Count; ++j) {
                if (i == j)
                    result.data[i][j] = 1;
                else
                    result.data[i][j] = 0;
            }
        }
        //第一次变换(矩阵化成三角阵)
        for (int k = 0; k < Count-1; ++k) {
            for (int i = k+1; i < Count; ++i) {
                double change = data[i][k]/data[k][k];
                for (int j = 0; j < Count; ++j) {
                    data[i][j] -= change*data[k][j];
                    result.data[i][j] -= change*data[k][j]; // 这边单位矩阵进行相同的变换
                }
            }
        }
        //第二次变换(三角阵化成对角阵)
        for (int j = Count - 1; j >= 1 ; --j) {
            for (int i = j-1; i >= 0 ; --i) {
                double change = data[i][j] / data[j][j];
                data[i][j] -= change*data[j][j];
                result.data[i][j] -= change*data[j][j];
            }
        }
        //第三次变换(对角阵化为单位阵)
        for (int l = 0; l < Count; ++l) {
            data[l][l] /= data[l][l];
            result.data[l][l] /= result.data[l][l];
        }
        //返回得到的逆矩阵
        return result;
    }
    

    我们新建立了一个新的矩阵对象result,作用是作为增广的单位阵,来参与矩阵的变换。在每一次原矩阵的变换同时,单位阵也进行的相同的变换。最终当原矩阵变为单位阵后,它也将转变为原矩阵的逆矩阵。

    其中变换的代码实现方法值得我们品味,其中最为重要的就是化为三角阵的第一步,我们用到了三重循环。第一重循环的作用是确定以哪一行作为减法的底,之后的其他行就是来减这一行的。第二重循环就是确定被减的一行,在这里,我们可以确定相减的倍数,这里我用参数change来表示。最后一重循环,则是让被减行的每一个数字都执行相同的运算。最终循环下来,三角阵就形成了。这里的三重循环是矩阵求逆的最难点,把此处理解了,也就没什么很难得地方了。

    一些待完善的地方

    这里我还留了一些小的BUG,比方说应该还增加一个过程,判断矩阵的逆是否存在。其实这里也比较好完成,可以判断矩阵的行列式是否为零(其实一般不是直接说是否等于零,而是判断是否小于eps(可以表示的最小数))

    尾声

    个人认为算是比较好理解了?如果有任何不足的话欢迎评论一起探讨。如果认为有帮助的话也请点个赞吧。蟹蟹!
    在这里插入图片描述

    展开全文
  • 数组表示法建立图,建立邻接矩阵,求顶点的度 要求 ** 对给定的任意连通无向图各个结点,使用数组表示法创建该图。其中无向图结点(0,1,3)表示该节点为0,与其相邻的结点为1和3。 创建该图后根据邻接矩阵计算每个...

    **

    数组表示法建立图,建立邻接矩阵,求顶点的度

    要求

    **
    对给定的任意连通无向图各个结点,使用数组表示法创建该图。其中无向图结点(0,1,3)表示该节点为0,与其相邻的结点为1和3。
    创建该图后根据邻接矩阵计算每个结点的度,并输出。
    文本输入
    input_7_1.txt,每一组数据表示一个图,至少包含3个结点,第一行为节点个数,第二行开始为无向图各个节点的邻接表示,最后一行是空行。以下为例:
    4
    0 1 3
    1 0 2 3
    2 1 3
    3 0 1 2
    文本输出
    output_7_1.txt,每一组输入数据对应一行输出数据,按输入结点的数据依次输出各个结点的度,如上述输入对应的输出为
    2 3 2 3
    如果输入数据有错,则输出ERROR
    多组输入数据则对应多行输出结果

    源码如下:

    #include<iostream>
    #include<fstream>
    #include<stdio.h>
    #include<string>
    using namespace std;
    #define max 100                                   
    #define infinity (~(1<<(sizeof(int)*8-1)))         //正无穷
    struct graph
    {
    	int Vnum;                   //顶点数
    	int edge[max][max];         //边数组
    	int str[20][20],cou[20];
    };
    //创建无向图
    void creategraph(graph *&g,int &A)
    {
    	int *f=new int, e, i=0, j=0, k,count=0;
    	char ch, d = 0; string s;
    	
    	//读文本
    	ofstream ofile;
    	ofile.open("output_7_1.txt", ios::out | ios::app);
    	ifstream ifile("input_7_1.txt", ios::in);
    	for (int a = 0; a < A;a++)
    	getline(ifile, s);          //因为一共有5组测试,getline清理前面的数据,
    	                           //不影响下一组数据的读取
    	ifile >> noskipws;                              //不跳过空格,换行,作为判断结束的条件
    	ifile >>g->Vnum>>ch;      
    	A += g->Vnum;
    	A++;
    	//把数据存到二维数组里
    	for (int a = 0; a < g->Vnum;a++)
    	{	while (d != '\n'&&!ifile.eof())
    		{
    			ifile >> g->str[i][j] >> d;
    			j++;
    			count++;
    		}
    		g->str[i][j] = '\0';
    		g->cou[i] = count;
    		d = 0; count = 0;
    		i++;
    		j = 0;
    	}
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->cou[i]; j++)
    			cout << g->str[i][j] << " ";
    		cout << endl;
    	}
    
    	//对邻接矩阵初始化
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->Vnum; j++)
    		{
    			if (i == j)
    				g->edge[i][j] = 0;
    			else
    				g->edge[i][j] = infinity;
    		}
    	}
    
    	//建立邻接矩阵
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->cou[i]; j++)
    		{
    			e = g->str[i][j];
    			for (k = 0; k < g->Vnum; k++)
    			{
    				if (g->str[k][0] == e&&k!=i)
    				{
    					g->edge[i][k] = 1;
    					
    				}
    			}
    		}
    	}
    	//判断是否邻接矩阵对称
    	int b = 0;
    	for (i = 0; i < g->Vnum; i++)
    	{
    		for (j = 0; j < g->Vnum; j++)
    		{
    			if (g->edge[i][j] != g->edge[j][i])
    			{
    				ofile << "ERROR" << endl;
    				
    				exit(0);
    				system("pause");
    			}
    			
    		}
    		
    	}
    	ifile.close();
    	ofile.close();
    }
    //展示邻接矩阵
    void showgraph(graph *&g)
    {
    	cout << "邻接矩阵为:" << endl;
    	cout << '\t';
    	for (int i = 0; i < g->Vnum; i++)
    		cout <<g->str[i][0] << '\t';
    	cout << endl;
    	for (int i = 0; i < g->Vnum; i++)
    	{
    		cout << g->str[i][0] << '\t';
    		for (int j = 0; j < g->Vnum; j++)
    		{
    			if (g->edge[i][j] == infinity)
    				cout << "∞" << '\t';
    			else
    				cout << g->edge[i][j] << '\t';
    		}
    		cout << endl;
    	}
    	cout << "--------------------------------" << endl;
    }
    void add(graph *g)
    {
    	ofstream ofile;
    	ofile.open("output_7_1.txt", ios::out | ios::app);
    	int *d=new int,total=0;            //记录度的大小
    	for (int i = 0; i < g->Vnum; i++)
    	{
    		for (int j = 0; j < g->Vnum; j++)
    		{
    			if (g->edge[i][j] != infinity)
    				total += g->edge[i][j];
    			d[i] = total;
    		}
    		total = 0;
    	}
    	for (int i = 0; i < g->Vnum;i++)
    	ofile << d[i]<<" ";
    	ofile << endl;
    	ofile.close();
    }
    int main()
    {
    	static int A = 0;                      //读文本使用来清空前面数据
    	for (int i = 1; i <=5 ; i++)
    	{
    		graph *g = new graph;
    		creategraph(g, A);
    		showgraph(g);
    		add(g);
    	}
    	system("pause");
    }
    
    
    展开全文
  • 矩阵 

    千次阅读 2009-06-02 09:30:00
    英文名Matrix(矩阵)本意是子宫、母体、孕育生命的地方,同时,在数学名词中,矩阵用来表示统计数据等方面的各种有关联的数据。这个定义很好地解释了Matrix代码制造世界的数学逻辑基础。 数学上,矩阵就是由方程组...

    英文名Matrix(矩阵)本意是子宫、母体、孕育生命的地方,同时,在数学名词中,矩阵用来表示统计数据等方面的各种有关联的数据。这个定义很好地解释了Matrix代码制造世界的数学逻辑基础。

      数学上,矩阵就是由方程组的系数及常数所构成的方阵。把用在解线性方程组上既方便,又直观。例如对于方程组。

      a1x+b1y+c1z=d1

      a2x+b2y+c2z=d2

      a3x+b3y+c3z=d3

      来说,我们可以构成一个矩阵:

      / /

      |a1 b1 c1 |

      | |

      |a2 b2 c2 |

      | |

      |a3 b3 c3 |

      / /

      因为这些数字是有规则地排列在一起,形状像矩形,所以数学家们称之为矩阵,通过矩阵的变化,就可以得出方程组的解来。

      矩阵这一具体概念是由19世纪英国数学家凯利首先提出并形成矩阵代数这一系统理论的。

      数学上,一个m×n矩阵乃一m行n列的矩形阵列。矩阵由数组成,或更一般的,由某环中元素组成。

      矩阵常见于线性代数、线性规划、统计分析,以及组合数学等。请参考矩阵理论。

     

      

    矩阵图法的涵义

      矩阵图法就是从多维问题的事件中,找出成对的因素,排列成矩阵图,然后根据矩阵图来分析问题,确定关键点的方法,它是一种通过多因素综合思考,探索问题的好方法。 在复杂的质量问题中,往往存在许多成对的质量因素.将这些成对因素找出来,分别排列成行和列,其交点就是其相互关联的程度,在此基础上再找出存在的问题及问题的形态,从而找到解决问题的思路。 矩阵图的形式如图所示,A 为某一个因素群,a1、a2、a3、a4、…是属于A这个因素群的具体因素,将它们排列成行;B为另一个因素群,b1、b2、b3、b4、…为属于B这个因素群的具体因素,将它们排列成列;行和列的交点表示A和B各因素之间的关系。按照交点上行和列因素是否相关联及其关联程度的大小,可以探索问题的所在和问题的形态,也可以从中得到解决问题的启示等。 质量管理中所使用的矩阵图,其成对因素往往是要着重分析的质量问题的两个侧面,如生产过程中出现了不合格品时,着重需要分析不合格的现象和不合格的原因之间的关系,为此,需要把所有缺陷形式和造成这些缺陷的原因都罗列出来,逐一分析具体现象与具体原因之间的关系,这些具体现象和具体原因分别构成矩阵图中的行元素和列元素。 矩阵图的最大优点在于,寻找对应元素的交点很方便,而且不遗漏,显示对应元素的关系也很清楚。矩阵图法还具有以下几个点: ①可用于分析成对的影响因素; ②因素之间的关系清晰明了,便于确定重点; ③便于与系统图结合使用。 二、矩阵图法的用途 矩阵图法的用途十分广泛.在质量管理中.常用矩阵图法解决以下问题: ①把系列产品的硬件功能和软件功能相对应,并要从中找出研制新产品或改进老产品的切入点; ②明确应保证的产品质量特性及其与管理机构或保证部门的关系,使质量保证体制更可靠; ③明确产品的质量特性与试验测定项目、试验测定仪器之间的关系,力求强化质量评价体制或使之提高效率; ④当生产工序中存在多种不良现象,且它们具有若干个共同的原因时,希望搞清这些不良现象及其产生原因的相互关系,进而把这些不良现象一举消除; ⑤在进行多变量分析、研究从何处入手以及以什么方式收集数据。 三、矩阵图的类型 矩阵图法在应用上的一个重要特征,就是把应该分析的对象表示在适当的矩阵图上。因此,可以把若干种矩阵图进行分类,表示出他们的形状,按对象选择并灵活运用适当的矩阵图形。常见的矩阵图有以下几种: (1)L型矩阵图。是把一对现象用以矩阵的行和列排列的二元表的形式来表达的一种矩阵图,它适用于若干目的与手段的对应关系,或若干结果和原因之间的关系。 (2)T型矩阵图。是A、B两因素的L型矩阵和A、c两因素的L型矩阵图的组合矩阵图,这种矩阵图可以用于分析质量问题中“不良现象一原因一工序”之间的关系,也可以用于分析探索材料新用途的“材料成分一特性一用途”之间酌关系等。 (3)Y型矩阵图。是把A因素与B因素、B因素与C因素、C因素与A因素三个L型矩阵图组合在一起而形成的矩阵图。 (4) X型矩阵图。是把A因素与B因素、B因素与C因素、C因素与D因素、D因素与A因素四个L型矩阵图组合而形成的矩阵图,这种矩阵图表示A和B、D,D和 A、C,C和B、D,D和A、C这四对因素间的相互关系,如“管理机能一管理项目一输入信息一输出信息”就属于这种类型。 (5)C型矩阵图。是以A、B、C三因素为边做出的六面体,其特征是以A、B、c三因素所确定的三维空间上的点为“着眼点”。 四、制作矩阵图的步骤 制作矩阵图一般要遵循以下几个步骤: ①列出质量因素: ②把成对对因素排列成行和列,表示其对应关系; ③选择合适的矩阵图类型; ④在成对因素交点处表示其关系程度,一般凭经验进行定性判断,可分为三种:关系密切、关系较密切、关系一般(或可能有关系),并用不同符号表示; ⑤根据关系程度确定必须控制的重点因素; ⑥针对重点因素作对策表。

    历史

      矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。
      作为解决线性方程的工具,矩阵也有不短的历史。1693年,微积分的发现者之一戈特弗里德•威廉•莱布尼茨建立了行列式论(theory of determinants)。1750年,加布里尔•克拉默其后又定下了克拉默法则。1800年代,高斯和威廉•若尔当建立了高斯—若尔当消去法。
      1848年詹姆斯•约瑟夫•西尔维斯特首先创出matrix一词。研究过矩阵论的著名数学家有凯莱、威廉•卢云•哈密顿格拉斯曼、弗罗贝尼乌斯和冯•诺伊曼。

    定义和相关符号

      以下是一个 4 × 3 矩阵:
      某矩阵 A 的第 i 行第 j 列,或 i,j位,通常记为 A[i,j] 或 Ai,j。在上述例子中 A[2,3]=7。
      在C语言中,亦以 A[j] 表达。(值得注意的是,与一般矩阵的算法不同,在C中,"行"和"列"都是从0开始算起的)
      此外 A = (aij),意为 A[i,j] = aij 对于所有 i 及 j,常见于数学著作中。
      一般上构作的矩阵
      给出一环 R,M(m,n, R) 是所有由 R 中元素排成的 m× n 矩阵的集合。若 m=n,则通常记以 M(n,R)。这些矩阵可加可乘 (请看下面),故 M(n,R) 本身是一个环,而此环与左 R Rn 的自同态环同构
      若 R 可置换, 则 M(n, R) 为一带单位元的 R-代数。其上可以莱布尼茨公式定义 行列式:一个矩阵可逆当且仅当其行列式在 R 内可逆。
      在维基百科内,除特别指出,一个矩阵多是实数矩阵或虚数矩阵。
      分块矩阵
      分块矩阵 是指一个大矩阵分割成“矩阵的矩阵”。举例,以下的矩阵
      可分割成 4 个 2×2 的矩阵。
      此法可用于简化运算,简化数学证明,以及一些电脑应用如VLSI芯片设计等。

    特殊矩阵类别

      对称矩阵是相对其主对角线(由左上至右下)对称, 即是 ai,j=aj,i。
      埃尔米特矩阵(或自共轭矩阵)是相对其主对角线以复共轭方式对称, 即是 ai,j=a*j,i。
      特普利茨矩阵在任意对角线上所有元素相对, 是 ai,j=ai+1,j+1。
      随机矩阵所有列都是概率向量, 用于马尔可夫链。

    矩阵运算

      给出 m×n 矩阵 A 和 B,可定义它们的和 A + B 为一 m×n 矩阵,等 i,j 项为 (A + B)[i, j] = A[i, j] + B[i, j]。举例:
      另类加法可见于矩阵加法.
      若给出一矩阵 A 及一数字 c,可定义标量积 cA,其中 (cA)[i, j] = cA[i, j]。 例如
      这两种运算令 M(m, n, R) 成为一实数线性空间,维数是mn.
      若一矩阵的列数与另一矩阵的行数相等,则可定义这两个矩阵的乘积。如 A 是 m×n 矩阵和 B 是 n×p矩阵,它们是乘积 AB 是一个 m×p 矩阵,其中
      (AB)[i, j] = A[i, 1] * B[1, j] + A[i, 2] * B[2, j] + ... + A[i, n] * B[n, j] 对所有 i 及 j。
      例如
      此乘法有如下性质:
      (AB)C = A(BC) 对所有 k×m 矩阵 A, m×n 矩阵 B 及 n×p 矩阵 C ("结合律").
      (A + B)C = AC + BC 对所有 m×n 矩阵 A 及 B 和 n×k 矩阵 C ("分配律")。
      C(A + B) = CA + CB 对所有 m×n 矩阵 A 及 B 和 k×m 矩阵 C ("分配律")。
      要注意的是:可置换性不一定成立,即有矩阵 A 及 B 使得 AB ≠ BA。
      对其他特殊乘法,见矩阵乘法

    其他性质

      线性变换,转置
      矩阵是线性变换的便利表达法,皆因矩阵乘法与及线性变换的合成有以下的连系:
      以 Rn 表示 n×1 矩阵(即长度为n的矢量)。对每个线性变换 f : Rn -> Rm 都存在唯一 m×n 矩阵 A 使得 f(x) = Ax 对所有 x &in; Rn。 这矩阵 A "代表了" 线性变换 f。 今另有 k×m 矩阵 B 代表线性变换 g : Rm -> Rk,则矩阵积 BA 代表了线性变换 g o f。
      矩阵 A 代表的线性代数的映像的维数称为 A 的矩阵秩。矩阵秩亦是 A 的行(或列)生成空间的维数。
      m×n矩阵 A 的转置是由行列交换角式生成的 n×m 矩阵 Atr (亦纪作 AT 或 tA),即 Atr[i, j] = A[j, i] 对所有 i and j。若 A 代表某一线性变换则 Atr 表示其对偶算子。转置有以下特性:
      (A + B)tr = Atr + Btr,(AB)tr = BtrAtr。

    注记

      矩阵可看成二阶张量, 因此张量可以认为是矩阵和向量的一种自然推广。
      矩阵(设备)
      矩阵是监控系统中的模拟设备,主要负责对前端视频源与控制线的切换控制,举个例子,如果你有70个摄像机,可是只有7台监视器,那么矩阵可以让你的任何一台监视器显示出任意组合的10个画面。简短地说,矩阵主机主要是配合电视墙使用,完成画面切换的功能。但是常见的矩阵一般输入(接摄像机)是16的倍数,输出(接监视器)是4的倍数;美国AD矩阵是视频切换矩阵的鼻祖,业界第一台视频切换矩阵就出自AD,到目前为止,市场上的模拟视频切换矩阵基本上还是参照AD矩阵的电路设计和架构。像深圳安星数字系统有限公司生产的视频切换矩阵,一块输入板也是16路输入,一块输出板是4路输出,采用和AD相同的架构,模块化设计,可自由方便的通过增加或减少矩阵板来实际不同的容量。
      安星矩阵已经不只是单纯的切换图像那么简单了,还可以通过附件扩展设备来实现控制云台转动和镜头变焦,连接探头实现报警联动,增加网络模块来实现矩阵轻松多级远程互联,实现数模结合监控,真正做到不受时间,地点限制的安防自动化控制,成为监控系统中最核心设备!

    矩阵卡

      矩阵卡是由深圳网域提出的一种保护个人帐号的系统,它是由一张表格组成,横排是A/BC/D等英文字母,在竖排是1.2.3等阿拉伯数字,在登录时必须通过矩阵卡的验证才可以进入游戏..
      类似于

    矩阵卡


    展开全文
  • //标志判断是否有被访问过  }MGraph;   void createMGraph(MGraph *G) //创建邻接矩阵  {  printf("请分别输入要访问的城市个数和总共的道路数:\n");  cin>>G->ves>>G->edge; printf("定义一个起始城市,...
  • ch2[i][j]){ cout由此图的可达矩阵可知:\n 除了对角线上元素,还存在零元素在矩阵里面,因此判定: 此图为不是强连通图!"; return 0; } } } cout由此图的可达矩阵可知:\n 不存在零元素在矩阵...
  • 标题PTA 7-14 判断上三角矩阵 (15分)

    千次阅读 2020-04-15 21:30:38
    标题PTA 7-14 判断上三角矩阵 (15分) 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。 本题要求编写程序,判断一个给定的方阵是否上三角矩阵。 输入格式: 输入第一行给出一...
  • OpenCV—基本矩阵操作与示例

    万次阅读 多人点赞 2016-05-02 16:30:14
    图像处理中对矩阵的操作非常重要,本文总结了使用OpenCV进行矩阵的创建、初始化以及基本矩阵操作,给出了示例代码。
  • 数据结构图的建立和遍历(邻接表、邻接矩阵

    万次阅读 多人点赞 2017-11-28 17:49:47
    首先是图的存储结构:一、邻接矩阵存储方式实现邻接矩阵存储的结构体中,包括一个存储边的结构体,存储每条边的信息(权值) 将这个边的结构体的二维数组作为图的基本存储结构,放到单个图的结构体中 每个图又包含总...
  • 【任务4】建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。 #include using namespace std; class Douary { public:  Douary(int m...
  • MATLAB空矩阵

    千次阅读 2014-11-27 11:37:07
    创建空矩阵 a = [];%[]表示为空 a = zeros(m,n);%创建m*n的全零矩阵,不同于空矩阵 判断矩阵 isempty(a);判断a是不是空矩阵
  • 掌握图的结构特征,以及邻接矩阵和邻接表存储结构的特点和建立方法;掌握在邻接矩阵或邻接表存储结构下图的深度优先和广度优先遍历算法的设计方法。 实验条件:计算机一台,vc++6.0 实验内容与算法思想: 内容: ...
  • 布尔矩阵

    千次阅读 2019-02-18 20:06:20
    一个布尔矩阵有一种奇偶性,即该矩阵所有行和所有列的和都是偶数。下面这4×4的矩阵就具有奇偶性:  1 0 1 0  0 0 0 0  1 1 1 1  0 1 0 1  它所有行的和是2,0,4,2。它所有列的和是2,2,2,2。 现请你编写一...
  • /* (程序头部注释开始) * 程序的版权和版本声明部分 ...* 文件名称:建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。 * 作 者: 雷恒鑫
  • 共现矩阵

    千次阅读 2019-02-15 17:11:51
    (三)语言模型和共现矩阵 2018年05月25日 19:23:47 HawardScut 阅读数:2225 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hao5335156/article/details/80452793 1、语言模型 ...
  • G) 初始化函数 参数:图G 作用:初始化图的顶点表,邻接矩阵等 InsertNode(Graph &amp;G,VexType v) 插入点函数 参数:图G,顶点v 作用:在图G中插入顶点v,即改变顶点表 InsertEdge(Graph &amp;G,VexType v,...
  • * 问题描述:建立一个二维数组类Douary,使该类中有以下数据成员,成员函数及友元函数,完成矩阵的输入,输出,加,减,相等判断判断 * 程序输出: * 程序头部的注释结束 */ #include <iostream> using ...
  • 螺旋矩阵题解

    千次阅读 2016-01-23 10:48:01
    螺旋矩阵 (matrix.cpp) 【问题描述】 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子, 则继续前进,否则右转;重复上述操作直至经过矩阵中...
  • 蛇形矩阵(螺旋矩阵

    千次阅读 2016-04-03 21:54:43
    晚上参加腾讯2016实习生网上笔试,结果一团糟,提前交了之后对最后一个蛇形矩阵的编程题心有不甘,...首先一开始先将最外层建立起来,将这层“围墙”建立起来后面就好办了,这层根据输入的矩阵大小而定,非常容易建立
  • 矩阵入门总结

    千次阅读 2014-04-28 19:26:25
    利用矩阵乘法可以将一个“向量”转换成令一个“向量”
  • 决策矩阵分析法

    千次阅读 2018-11-06 10:26:28
    网格分析,也被称为是决策矩阵分析,是由英国管理学家斯图尔特•普提出的一种多因素辅助决策工具。因此该方法也被称为普氏分析或者多因素辅助分析。它是一款非常有效的辅助决策工具,当你面临很多好的项目选择,同时...
  • 理解矩阵

    千次阅读 2014-12-18 14:05:34
    然而包括我本人在内的很多人都对此表示怀疑,我们不认为直觉性与抽象性一定相互矛盾,特别是在数学教育中和数学教材中,帮助学生建立直觉,有助于它们理解那些抽象的概念,进而理解数学的本质。反之,如果一味注重...
  • 矩阵快速幂总结

    万次阅读 多人点赞 2016-11-25 15:40:18
    基础知识:(会基础的直接看应用部分)(1)矩阵乘法简单的说矩阵就是二维数组,数存在里面,矩阵乘法的规则:A*B=C其中c[i][j]为A的第i行与B的第j列对应乘积的和,即:代码:const int N=100; int c[N][N]; void multi(int...
  • 矩阵运算

    千次阅读 2010-03-30 10:07:00
    2.赋值语句(1) 变量=表达式(2) 表达式其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。例2-1 计算表达式的值,并显示计算结果。在MATLAB命令窗口输入命令:x=1+2i;y=3-sqrt(17);z=
  • 杨氏矩阵查找

    千次阅读 2013-03-20 16:01:51
    请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。  例如下面的二维数组就是每行、每列都递增排序,如果在这个数组中查找数字6,则返回True;如果查找数字10,由于数组不含有该数字...
  • 布尔矩阵—C语言

    千次阅读 2017-07-20 16:17:43
    1122: 布尔矩阵 时间限制: 1 Sec 内存限制: 32 MB 提交: 25 解决: 16 [提交][状态][讨论版] 题目描述 一个布尔矩阵有一种奇偶性,即该矩阵所有行和所有列的和都是偶数。下面这4×4的矩阵就具有奇偶性:  1 ...
  • 矩阵式管理

    千次阅读 2018-06-13 14:21:42
    矩阵式管理 矩阵式管理指的是常见的组织结构形式之一,与直线式管理相对,以其灵活、有效的特点而被大多数组织所接受。如果这种专门小组有若干个的话,就会形成一个为完成专门任务而出现的横向系统。中文名矩阵式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,618
精华内容 21,047
关键字:

判断矩阵如何建立