首页 > 编程语言 >算法数学笔记-二、线性代数

算法数学笔记-二、线性代数

时间:2022-09-29 21:11:56浏览次数:50  
标签:lie num return matrix int 笔记 算法 线性代数

目录

二、线性代数

矩阵模板

namespace Matrix{
	
	struct matrix{
		int hang, lie;
		vector <vector<int >> num;
		
		matrix(int x = 0, int y = 0){
			
			hang = x;
			lie = y;
			num.resize(x + 1);
			for(int i = 1; i <= x; i ++)
				num[i].resize(y + 1);
		}
		
		void out(){
			for(int i = 1; i <= hang; i ++){
				for(int j = 1; j <= lie; j ++)
					cout << num[i][j] << " ";
				cout << endl;
			}		
		}
	
	}no;
	
	matrix E(int n){
		matrix ret(n, n);
		for(int i = 1; i <= n; i ++)
			ret.num[i][i] = 1;
		return ret;
	}
	
	matrix operator * (matrix a, matrix b){
	
		matrix ret(a.hang, b.lie);
		
		for(int i = 1; i <= ret.hang; i ++)
			for(int j = 1; j <= ret.lie; j ++)
				for(int k = 1; k <= a.lie; k ++)
					ret.num[i][j] = (ret.num[i][j] + 1ll * a.num[i][k] * b.num[k][j]) % mod;
	
		return ret;
	}

	matrix operator * (int k, matrix b){
		
		matrix ret = b;
		
		for(int i = 1; i <= b.hang; i ++)
			for(int j = 1; j <= b.lie; j ++)
				ret.num[i][j] = 1ll * k * b.num[i][j] % mod;
				
		return ret;
	}
	
	matrix operator + (matrix a, matrix b){
		
		matrix ret = a;
		for(int i = 1; i <= a.hang; i ++)
			for(int j = 1; j <= a.lie; j ++){
				ret.num[i][j] = a.num[i][j] + b.num[i][j];
				if(ret.num[i][j] >= mod) ret.num[i][j] -= mod;
			}
				
		return ret;
	}
	
	matrix quickpow(matrix x, int b){
		if(b == 0) return E(x.lie);
		if(b == 1) return x;
		
		matrix l = quickpow(x, b >> 1);
		l = l * l;
		if(b & 1)
			l = l * x;
		return l;
	}

}

高斯消元

标签:lie,num,return,matrix,int,笔记,算法,线性代数
From: https://www.cnblogs.com/lyhy/p/16743069.html

相关文章

  • 简单易懂的manacher算法讲解
    manacher求最长回文子串的算法(顺便还能求出来以每个点为中心的最长回文子串)介绍先来一道模板题:P3805【模板】manacher算法先考虑一下小学二年级都会的纯暴力解法:以每......
  • 自学笔记
    1,方法使用static修饰时,调用该方法时就不用通过对象.方法。而是直接写方法名字就可以完成调用2,一个java文件可以有多个类,但是只能有一个用public修斯的类。3,短路与或非&&......
  • java-抽象类笔记
    抽象方法和抽象类抽象方法使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。抽象类包含抽象方......
  • 读书笔记1
    每一程序员都有属于自己的编程风格,每个人都有自己擅长的和不擅长的,随着时间的推移会逐渐形成属于自己的编程环境。一个成功的程序员成功的一个关键是他们会对自己所做的事......
  • springaop笔记
    springaop解决的问题什么是增强增强代码,比如买装备在不惊动源代码的基础上对代码进行更改,增强,什么是aop第一步导入坐标第二步创建aop文件夹@Aspect作用标识此......
  • drf学习笔记
    今日内容概要drf之请求与响应drf之视图组件两个视图基类今日内容详细补充知识反射:通过字符串动态的获取,设置,判断对象中得属性或方法-getattr:res=getattr(se......
  • 感知机算法
    感知机算法依赖importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt人工数据集n=100X=np.random.multivariate_normal((1,1),[[0.16,0]......
  • 27岁算法工程师,1月无情被辞:想给做算法的提个醒!
    近日,大厂程序员在知乎吐槽“能力很强的同事学历造假,被辞了”,引发热议。“本科211,硕士去了哥伦比亚大学,因为GPA过低,第一学期就被开除。国外黑了两年,造了个假学历回国,竟然还过......
  • 《程序员修炼之道:从小工到专家》阅读笔记2
    在某些方面,编程就像是绘画。你从空白的画布和某些基本原材料开始,通过知识、艺术和技艺的结合去确定用前者做些什么。你勾画出全景,绘制背景,然后填入各种细节。你不时后退一......
  • 《程序员修炼之道:从小工到专家》阅读笔记
    当我读了《程序员修炼之道:从小工到专家》之后,我最感同身受的是在所有弱点中,最大的弱点就是害怕暴露弱点。我本人就是一个害怕暴露弱点的人。喜欢把强势的一面表现出来而把......