请选择 进入手机版 | 继续访问电脑版
楼主: fantuanxiaot
17035 109

[编程语言] [C++]基于C++矩阵行列式的计算   [推广有奖]

Ψ▄┳一大卫卍卐席尔瓦

大师

8%

还不是VIP/贵宾

-

威望
7
论坛币
-234475 个
通用积分
123.7824
学术水平
3783 点
热心指数
3819 点
信用等级
3454 点
经验
150207 点
帖子
7546
精华
32
在线时间
1327 小时
注册时间
2013-2-3
最后登录
2022-2-24

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

fantuanxiaot 发表于 2015-4-21 11:12:23 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
运用了排序的方法
代码如下:

本帖隐藏的内容

  1. //  矩阵的行列式计算
  2. //  by fantuanxiaot
  3. #include <iostream>
  4. #include <cmath>
  5. #include <iomanip>
  6. #include <Matrix.h>
  7. #include <MatrixIO.h>
  8. #include <vector>
  9. #include <string>
  10. #include <random>
  11. using namespace std;
  12. using namespace Numeric_lib;
  13. //  //////////////////////////////////////////////////////////////////////////////////////
  14. //  //////////////////////////////////////////////////////////////////////////////////////
  15. //  计算乘法
  16. double Vector_Det(Matrix<double,2> a1,vector<int> num_list)
  17. {
  18.         if(a1.dim1()!=a1.dim2())
  19.         {error("Not Square");}
  20.         double result=1;
  21.         for(int i=0;i<=a1.dim1()-1;i++)
  22.         {
  23.                 result=result*a1[a1.dim1()-i-1][num_list[i]];
  24.         }
  25.         return result;
  26. }
  27. //  计算矩阵的行列式
  28. double Matrix_Det(Matrix<double,2> a1)
  29. {
  30.         if(a1.dim1()!=a1.dim2())
  31.         {error("Not Square");}
  32.         int matrix_size=a1.dim1();
  33.         //  判断
  34.         if(matrix_size==1) return a1[0][0];
  35.         const int list_num=matrix_size;
  36.         //  构建排列对表
  37.         vector<int> num_list(list_num);
  38.         for(int i=0;i<=list_num-1;i++)
  39.         {
  40.                 num_list[i]=list_num-i-1;
  41.         }
  42.         double sum=0;
  43.         //  交换
  44.         int temp;
  45.         //  求代数和
  46.         //  从大到小进行排列
  47.         int n=0;
  48.         int Time=1;
  49.         while(Time<=list_num)
  50.         {
  51.                 for(int j=0;j<=list_num-2;j++)
  52.                 {
  53.                         sum=sum+pow(-1,n)*Vector_Det(a1,num_list);
  54.                         n++;
  55.                         temp=num_list[j];
  56.                         num_list[j]=num_list[j+1];
  57.                         num_list[j+1]=temp;
  58.                 }
  59.                 Time=Time+1;
  60.         }
  61.         return sum;
  62. }
  63. //  //////////////////////////////////////////////////////////////////////////////////////
  64. //  //////////////////////////////////////////////////////////////////////////////////////
  65. //  试验
  66. int main()
  67. {
  68.         Matrix<double,2> b(2,2);
  69.         Matrix<double,2> a(3,3);
  70.         Matrix<double,2> c(3,3);
  71.         //  a矩阵的求值
  72.         a[0]=0;
  73.         a[1]=1;
  74.         a[2]=2;
  75.         //  b矩阵的求值
  76.         b[0][0]=1;
  77.         b[1][0]=2;
  78.         b[0][1]=1;
  79.         b[1][1]=6;
  80.         //  c矩阵的求值
  81.         c[0][0]=1;
  82.         c[0][1]=1;
  83.         c[0][2]=1;
  84.         c[1][0]=1;
  85.         c[1][1]=2;
  86.         c[1][2]=3;
  87.         c[2][0]=1;
  88.         c[2][1]=2;
  89.         c[2][2]=4;
  90.         cout<<"一个矩阵"<<endl;
  91.         cout<<b<<endl;
  92.         cout<<"矩阵的行列式"<<endl;
  93.         cout<<Matrix_Det(b)<<endl;
  94.         cout<<"一个矩阵"<<endl;
  95.         cout<<a<<endl;
  96.         cout<<"矩阵的行列式"<<endl;
  97.         cout<<Matrix_Det(a)<<endl;
  98.         cout<<"一个矩阵"<<endl;
  99.         cout<<c<<endl;
  100.         cout<<"矩阵的行列式"<<endl;
  101.         cout<<Matrix_Det(c)<<endl;
  102.         return 0;
  103. }
  104. //  //////////////////////////////////////////////////////////////////////////////////////
  105. //  //////////////////////////////////////////////////////////////////////////////////////
复制代码




效果如下:

Matrix_Agorithmn_Det.jpg



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:行列式 fantuanxiaot include numeric double 行列式

回帖推荐

zbin7451f 发表于20楼  查看完整内容

一定要支持

kychan 发表于15楼  查看完整内容

支持楼主,厉害 分享了

henry_l 发表于14楼  查看完整内容

已有 6 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Nicolle + 100 + 100 精彩帖子
niuniuyiwan + 60 + 60 + 5 + 5 + 5 精彩帖子
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献
我的素质低 + 20 + 5 + 5 精彩帖子
kychan + 80 + 5 + 5 + 5 精彩帖子
xddlovejiao1314 + 60 + 30 + 3 + 3 + 3 谢谢分享

总评分: 经验 + 400  论坛币 + 210  学术水平 + 18  热心指数 + 23  信用等级 + 23   查看全部评分

本帖被以下文库推荐

condmn 发表于 2015-4-21 11:52:11 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

支持楼主,厉害
已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 10 + 3 鼓励积极发帖讨论

总评分: 经验 + 10  论坛币 + 3   查看全部评分

使用道具

rrjj101022 发表于 2015-4-21 14:41:27 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

谢谢分享~
已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 10 + 3 鼓励积极发帖讨论

总评分: 经验 + 10  论坛币 + 3   查看全部评分

使用道具

rrjj101022 发表于 2015-4-21 14:43:17 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

支持~~~

使用道具

rrjj101022 发表于 2015-4-21 14:45:41 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

顶起~~~

使用道具

aasa11 发表于 2015-4-21 15:47:14 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 10 + 3 鼓励积极发帖讨论

总评分: 经验 + 10  论坛币 + 3   查看全部评分

使用道具

xddlovejiao1314 学生认证  发表于 2015-4-21 15:54:22 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

谢谢分享

使用道具

mike68097 发表于 2015-4-21 16:20:20 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 10 + 3 鼓励积极发帖讨论

总评分: 经验 + 10  论坛币 + 3   查看全部评分

使用道具

fjrong 在职认证  发表于 2015-4-21 17:31:01 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

使用道具

fjrong 在职认证  发表于 2015-4-21 17:31:48 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 10:03