c++ 将行列式化为上三角行列式,并求值。

#include<stdio.h>
#include<iostream>
using namespace std;bool op(double *a, int row, int col, int temp)
{double NUM1, NUM2;//主元素、非主元素//判断对角线是否为零if (a[temp*col + temp] == 0)//若对角线元素为0for (int i = temp+1; i < row; i++)//遍历当前以下的行{double t;if (a[i*col+ temp] != 0)//找出主元素非0的行{for (int j = 0; j < col; j++)//换行{t = -a[temp*col +j];a[temp*col + j] = a[i*col + j];a[i*col + j] = t;}break;}if (i == row - 1)//若无非0行,值为0,结束{return false;}}NUM1 = a[temp*col + temp];//主元素for (int i = temp + 1; i<row; i++)//遍历,消去所有非主元素{NUM2 = a[i*col + temp];//非主元素for (int j = temp; j<col; j++){//通分、相减、将非主元素消为0a[i*col + j] = a[i*col + j] - NUM2*a[temp*col + j] / NUM1;}}return true;
}int main() {int row, col;double value = 1;cout << "请输入行列式阶数";cin >> row;col = row;double  *a = (double*)malloc(row*col*sizeof(double));cout << "请输入所有元素" << endl;for (int i = 0; i<col*row; i++){cin >> a[i];}cout << "———输入成功———" << endl;int k = row;if (k>col) k = col;for (int i = 0; i<k - 1; i++)//计算第i行为主元素的中间矩阵{if (op(a, row, col, i) == false)//若值为0,输出,结束{cout << "行列式的值为" << 0 << endl;system("pause");return 0;}cout << "———计算过程———" << endl;for (int i = 0; i<col*row; i++)//输出中间矩阵{cout << a[i] << " ";if ((i + 1) % col == 0)cout << endl;}}cout << "———结果如下———" << endl;for (int i = 0; i<col*row; i++)//输出结果矩阵{cout << a[i] << " ";if ((i + 1) % col == 0)cout << endl;}//输出行列式的值for (int i = 0; i<k; i++)value *= a[i*col + i];cout << "行列式的值为" << value << endl;system("pause");return 0;
}

运行效果如下:


ps:修改了主元为0 的BUG;

c++ 将行列式化为上三角行列式,并求值。相关推荐

  1. [Swust OJ 643]--行列式的计算(上三角行列式变换)

    题目链接:http://acm.swust.edu.cn/problem/643/ Time limit(ms): 1000 Memory limit(kb): 65535 Description 一 ...

  2. 方阵求值——上三角行列式、定义(康拓展开求值)

    Problem:求方阵A的值. 设求n*n的矩阵:加法的操作次数为P(n),乘法的操作次数与为M(n). 对于方法1: j1~jn共有n!种选法:j1有n种选法,j2有n-1种选法,-,jn有1种选法 ...

  3. 化行列式为上三角形式 C++

    #include <iostream> #include <conio.h>using namespace std;int main() {int a; cout<< ...

  4. 四阶行列式计算_四阶行列式的计算

    四阶行列式要比三阶行列式复杂得多,是真正意义的高阶行列式.求四阶行列式的方法有很多,可以直接用展开公式:也可以化四阶行列式为上三角行列式:可以把行列式某行或者列尽可能的多化出零,然后按这一行或列展开. ...

  5. 线性代数行列式计算方法之三角法

                           行列式计算方法之三角形法 三角法计算行列式 三角法是一种利用行列式的性质把原有的行列式转换为上三角.下三角.对角线的一种计算方法. 按列消除化成三角型 计 ...

  6. 三角矩阵上三角列优先压缩存储---加法、减法、乘法、转置、秩、行列式值、伴随矩阵、逆

    三角矩阵上三角列优先压缩存储: 我们以图4.9中的矩阵A矩阵为例,针对A上三角部分,采用以列为主序存储至一个一维数组B内,按照三角矩阵上三角元素构成可知,该部分有n(n+1)/2个元素,因为下三角中的 ...

  7. 行列式(determinant)求值

    如果A是一个矩阵(n*n方阵),则det(A)或| A |表示和A对应的n阶行列式,是一个标量. 行列式值直接求解(1阶行列式的值等于其唯一元素值): 2阶矩阵的行列式:∣a11a12a21a22∣= ...

  8. 行列式求值Java语言实现———线性代数

    目录 前言 一.对行列式的某行或某列进行操作 二.缩小矩阵的大小 三.正负号处理和值存储之后进行除法运算 四.代码使用过程 五.整体代码 前言 行列式求值对于刚刚学习完线性代数的大学生再熟悉不过了,同 ...

  9. 线性代数学习笔记6-2:行列式的理解、行列式的性质

    再次强调,方阵才有行列式! 行列式尽可能多的压缩了方阵的信息,之前说过行列式代表线性变换中有向面积/有向体积的变化比例 因此, d e t ( A ) = ∣ A ∣ = 0 ⟺ det(\mathb ...

最新文章

  1. wikioi 3027 线段覆盖 2
  2. 超详细 1小时学会Python输入和输出!
  3. eclipse下看android support v4源码
  4. 不要笑!写 | 还是 || ,还真是一个问题
  5. anaconda来创建python环境
  6. 软件协会发布开源软件与商业软件知识产权报告
  7. kafka 集群_kafka 集群及原理
  8. gradle打包web jar_Gradle构建SpringBoot并打包可运行的jar配置
  9. tensorflow 版本列表_最新|谷歌发布TensorFlow 1.3.0版本,都更新了哪些内容?
  10. 为何AI也学会了种族和性别歧视?
  11. node.js stream
  12. dingtalk 推送手机号信息 golang_PureQuant使用功能介绍(二):通过配置模块导入API信息...
  13. dbutil 1.1.6
  14. axure:原型简单使用
  15. 物联网应用领域(全)
  16. 哈希表算法通俗理解和实现
  17. c语言西南交通大学出版社答案,西南交通大学C++上机实验答案
  18. vs code 插件change-case, 修改变量名 驼峰和常量等
  19. Depin(Linux)下安装Tibco Ems 8.5
  20. Buffon's Needle An Analysis and Simulation------蒙特卡洛法模拟蒲丰(Buffon)投针实验-使用Matlab

热门文章

  1. 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
  2. 【释义详解】Software License (软件许可证)是什么?
  3. CMake来编译OpenCV,细致教程
  4. 读《写给大家看的色彩书1》.设计配色基础1
  5. Chrome插件安装时出现的“程序包无效”问题
  6. Android的main方法,Android程序没有main函数,那Android程序的执行入口在哪儿?
  7. Android中通用配器的使用
  8. 天冕数据开发平台通过信通院“大数据产品能力评测”
  9. 焊接机器人编程c语言,机器人现场编程与调试(cnc上下料,弧焊,喷涂,点焊等),就是这么全!...
  10. “河南旦”的四个坟墓的故事·《晚唱·贾平凹》