高斯消元(完全主元法 and 部分主元法) C++代码

2023-11-22 23:28

本文主要是介绍高斯消元(完全主元法 and 部分主元法) C++代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

部分主元法高斯消元

/*
算法步骤:1.枚举每一列,找到绝对值最大的一行2.将该行和第一行交换3.将该行行首置为一4.将下面所有行第 i 列置为零
*/#include <iostream>
#include <cmath>using namespace std;
const int N = 109;
const double eps = 1e-6;
double a[N][N];
int n;// 未知数个数, 方程数量
void init()
{// cout << "未知数的个数,方程的数量: ";cin >> n;for (int i = 0; i < n; i++)for (int j = 0; j < n + 1; j++)cin >> a[i][j];
}
bool Gauss()
{int l = 0, r = 0; //行 列// step 1 and 2for (l = 0, r = 0; r < n; r++){int tt = l;for (int i = l; i < n; i++)if (fabs(a[tt][r]) < fabs(a[i][r]))tt = i;if (fabs(a[tt][r]) < eps)	continue;for (int i = r; i < n + 1; i++)swap(a[tt][i], a[l][i]);	// step 3for (int i = n; i >= r; i--)a[l][i] /= a[l][r];// step 4 将下面所有行第 r 列置为零for (int i = l + 1; i < n; i++){if (fabs(a[i][r]) < eps)	continue;for (int j = n; j >= r; j--)a[i][j] -= a[l][j] * a[i][r];}l++;}for (int i = n - 1; i >= 0; i--)for (int j = i + 1; j < n; j++)a[i][n] -= a[j][n] * a[i][j];if (l == n)	return 0;return 1;
}
int main()
{init();if (!Gauss())for (int i = 0; i < n; i++)cout << "x" <<  i  << " = "<< a[i][n] << '\n';elsecout << "无解!!!\n";
}/*
3
1 1 1 6
0 4 -1 5
2 -2 1 1
*/

完全主元法高斯消元

#include <bits/stdc++.h>
using namespace std;
#define PII pair<int, int>
const int N = 109;
const double eps = 1e-6;
double a[N][N];
int id[N];
int n;void init()
{cin >> n;for (int i = 0; i < n; i++) id[i] = i;for (int i = 0; i < n; i++)for (int j = 0; j < n + 1; j++)cin >> a[i][j];
}
PII Get_Max_Idx(int l, int r)
{PII idx;double mx = 0;for (int i = l; i < n; i++)for (int j = r; j < n; j++)if (fabs(a[i][j]) > mx)mx = fabs(a[i][j]), idx = {i, j};return idx;
}
bool Gauss()
{int l = 0, r = 0;for (l = 0, r = 0; r < n; r++){PII tt = Get_Max_Idx(l, l);//行交换for (int i = r; i < n + 1; i++)swap(a[tt.first][i], a[l][i]);tt.first = l;//列交换for (int i = 0; i < n; i++)swap(a[i][tt.second], a[i][r]);swap(id[tt.second], id[r]);// step 3for (int i = n; i >= r; i--)a[l][i] /= a[l][r];// step 4 将下面所有行第 r 列置为零for (int i = l + 1; i < n; i++){if (fabs(a[i][r]) < eps)    continue;for (int j = n; j >= r; j--)a[i][j] -= a[l][j] * a[i][r];}l++;}for (int i = n - 1; i >= 0; i--)for (int j = i + 1; j < n; j++)a[i][n] -= a[j][n] * a[i][j];if (l == n) return 0;return 1;
}
int main()
{init();if (!Gauss()){for (int i = 0; i < n; i++)cout << "x" <<  id[i]  << " = "<< a[i][n] << '\n';}else    cout << "无解!!!\n";
}

这篇关于高斯消元(完全主元法 and 部分主元法) C++代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/413676

相关文章

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)