前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >线性代数行列式的计算方法(通过代数余子式计算)

线性代数行列式的计算方法(通过代数余子式计算)

作者头像
全栈程序员站长
发布于 2022-07-23 06:06:17
发布于 2022-07-23 06:06:17
32000
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

permutation.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/***********************************/
/*
Nonstandard Permutation header
Copyright (C) 2021---@情久小羊,#Free
There is no data error check
*/
/***********************************/
#pragma once
#include<initializer_list>
#include <xutility>
#include <xstring>
#include<vector>
#include <stdexcept>
using std::vector;
using std::initializer_list;
class Permutation {
	int rank;//n阶行列式
	vector<vector<int>>data;
public:
	Permutation(int rank, vector<vector<int>> data) {
		if (data.size() != rank)throw std::range_error("行列式大小异常");
		for (int i = 0; i < data.size(); ++i) {
			if (data.at(i).size() != rank)throw std::range_error("行列式大小异常");
		}
		this->data = data;
		this->rank = rank;
	}
	Permutation(int rank, initializer_list<int>data_list) {
		if (data_list.size() != rank * rank)throw std::range_error("行列式大小异常");
		vector<int>v;
		for (auto i = data_list.begin(); i != data_list.end(); ++i) {
			v.push_back(*i);
			if (v.size() == rank) {
				this->data.push_back(v);
				v.clear();
			}
		}
		this->rank = rank;
	}
	void print_permutation() {
		for (auto i = this->data.begin(); i != this->data.end(); ++i) {
			for (auto j = i->begin(); j != i->end(); ++j) {
				cout << *j << " ";
			}
			cout << '\n';
		}
	}
	//计算余子式
	Permutation cal_Cofactor(int row,int col) {
		vector<int>row_data; vector<vector<int>>temp_data;
		for (int i = 0; i < this->rank; ++i) {
			if (i == row - 1)continue;
			for (int j = 0; j < this->rank; ++j) {
				if (j == col - 1)continue;
				row_data.push_back(this->data.at(i).at(j));
			}
			temp_data.push_back(row_data);
			row_data.clear();
		}
		return Permutation(this->rank - 1, temp_data);
	}
	//递归通过代数余子式计算
	int calculate() {
		int n = 0;
		if (this->rank == 1)return this->data.at(0).at(0);
		for (int i = 0; i < this->rank; ++i) {
			n += this->data.at(0).at(i) * pow(-1, i + 2) * this->cal_Cofactor(1, i + 1).calculate();
		}
		return n;
	}
};

然后继续递归得到结果

main.cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include"permutation.h"
int main() {
   cout<< Permutation(4,
        { 3, -1, 0, 7,
          1, 0, 1, 5,
          2, 3, -3, 1,
          0, 0, 1, -2}).calculate()<<'\n';

    cout << "~~~~~~~~~~~~~~~~~~~~~~" << '\n';
    Permutation(1, { 1 }).print_permutation();
    return 0;
    
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126576.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
线性代数行列式方程求解(正交矩阵的行列式)
线性代数行列式求值算的可真是让人CPU疼,但计算机是不累的,所以用一个c++程序帮助你验证求解行列式的值吧。
全栈程序员站长
2022/07/28
1K0
线性代数行列式方程求解(正交矩阵的行列式)
计算n阶行列式
GeekLiHua
2025/01/21
840
计算n阶行列式
线性代数行列式计算方法之降阶法
线性代数行列式计算之降阶法一般针对于行列是0元素较多的情况,它的核心思想是对某行(列)能方便的进行行列式展开,即某行(列)元素与其代数余子式的乘积,而该行(列)元素为0的较多,对应的代数余子式又比较简单的求出(比如三角形的行列式)。
全栈程序员站长
2022/07/23
2.2K0
线性代数行列式计算方法之降阶法
线性代数精华1——从行列式开始
线性代数是机器学习领域当中非常重要的基础知识,但是很遗憾的是,在真正入门之前很少有人能认识到它的重要性,将它学习扎实,在入门之后,再认识到想要补课也不容易。
TechFlow-承志
2020/03/05
1.2K0
线性代数精华1——从行列式开始
线性代数,行列式(加边法求行列式例题)
对于n个不同的元素,先规定各元素之间有一个标准次序,于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有一个一个逆序,一个排列中所有逆序的总数叫做这个排列的逆序数。逆序数为奇数的排列叫做奇排列,为偶数的的排列叫做偶排列;
全栈程序员站长
2022/07/31
1.2K0
线性代数,行列式(加边法求行列式例题)
线性代数行列式计算之元素拆分与凑项法
线性代数行列式计算之元素拆分与凑项法
Java架构师必看
2021/12/02
1.8K0
线性代数行列式计算之元素拆分与凑项法
线性代数五阶行列式计算(行列式的计算方法)
由于线程代数的学习主要是为H.264算法的学习做铺垫,所以行列式的计算法就过多展开,详细请查看 【线性代数(5)】等和,三叉型,反对称行列式计算及python代码辅助验证
全栈程序员站长
2022/07/25
2.9K0
线性代数五阶行列式计算(行列式的计算方法)
线性代数整理(三)行列式特征值和特征向量
比方说在二维平面中,这里有三组二维向量,每组都有两个向量,那么每组向量的面积就可以表示它们的不同。当然这里说面积是针对二维平面来说的,在三维空间中,就是体积;在更高维度中,可能就是一个体,但这个体比较抽象
算法之名
2021/03/04
2.8K0
四阶行列式的计算方法余子式_三阶行列式降价
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/16
9340
线性代数行列式计算之迭代法
线性代数行列式计算之迭代法
Java架构师必看
2021/12/02
5230
线性代数行列式计算之迭代法
n阶行列式计算Python和C语言实现
行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。 行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。或者说,在 n 维欧几里得空间中,行列式描述的是一个线性变换对“体积”所造成的影响。
里克贝斯
2021/05/21
1.4K0
n阶行列式计算Python和C语言实现
化三角矩阵计算行列式的算法实现
前者的复杂度是 O(n!) 级别的,在计算约 12 阶的矩阵时就会需要超过 1s 的时间,而计算 1000 \times 1000 的矩阵需要进行约:
Clouder0
2022/09/28
9510
基于java的行列式计算程序
曾几何时, 是它, 是它, 就是它, 在数学课堂上, 一直折磨得我们死去活来, 对, 你没猜错, 它就是我们今天要讲的行列式。 行列式这玩意儿, 怎么说嘞, 说难吧,确实也不是很难, 说不难吧,其实也
一头小山猪
2020/04/10
1K0
codeforces736D. Permutations(线性代数)
题意 题目打错了 Sol 神仙题Orz 构造矩阵B,使得B[b[i]][a[i]] = 1 那么他的行列式的奇偶性也就对应了生成排列数列数量的奇偶性(定义) 删除一个位置相当于去掉对答案的贡献,也就是
attack
2018/08/09
3710
codeforces736D. Permutations(线性代数)
「Workshop」第二十期 线性代数---行列式
规定各元素之间有一个标准次序(比如从小到大为标准次序),在任一个排列中,当两个元素的先后次序与标准次序不同时,就说有1个逆序,一个排列中所有逆序的总数叫做 排列的逆序数。
王诗翔呀
2020/10/28
1.6K0
「Workshop」第二十期 线性代数---行列式
车牌识别从0到1之C++实现
车牌识别理论不做概述,网上比比皆是,请自行搜索哦。一个纯干货的公众号,断断续续写了一周,贴出代码,供交流学习。
用户9831583
2022/06/16
5680
车牌识别从0到1之C++实现
万字长文带你复习线性代数!
课程主页:http://speech.ee.ntu.edu.tw/~tlkagk/courses_LA16.html
石晓文
2018/12/25
1.7K0
万字长文带你复习线性代数!
【机器学习|数学基础】Mathematics for Machine Learning系列之线性代数(2):n阶行列式、对换
\[\begin{vmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\\ \end{vmatrix}=a_{11}*a_{22}*a_{33}+a_{12}*a_{23}*a_{31}+a_{13}*a_{21}*a_{32}-a_{11}*a_{23}*a_{32}-a_{12}*a_{21}*a_{33}-a_{13}*a_{22}*a_{31}\]
海轰Pro
2021/09/26
1.1K0
【C++11】{}/右值引用/移动语义/类型分类/引用折叠/完美转发--C++
C++11 是 C++ 的第二个主要版本,并且是从 C++98 起的最重要更新。它引入了大量更改,标准化了既有实践,并改进了对 C++ 程序员可用的抽象。在它最终由 ISO 在 2011 年 8 月 12 日采纳前,人们曾使用名称“C++0x”,因为它曾被期待在 2010 年之前发布。C++03 与 C++11 期间花了 8 年时间,故而这是迄今为止最长的版本间隔。从那时起,C++ 有规律地每 3 年更新一次。
小志biubiu
2025/02/27
1440
【C++11】{}/右值引用/移动语义/类型分类/引用折叠/完美转发--C++
【C++】C++11的新特性 --- 列表初始化,auto关键字,decltype关键字
在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。
叫我龙翔
2024/07/20
1650
【C++】C++11的新特性 --- 列表初始化,auto关键字,decltype关键字
推荐阅读
相关推荐
线性代数行列式方程求解(正交矩阵的行列式)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验