高斯消元(完全主元法 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";
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux內核的內存管理

Linux內核源碼內存管理主要包括以下幾個部分&#xff1a; 1. 物理內存管理&#xff1a;這部分主要負責將物理內存劃分為不同的頁表項&#xff0c;以便操作系統能夠快速地訪問和操作內存。 2. 虛擬內存管理&#xff1a;這部分主要負責將用戶空間的地址映射到物理內存中&#x…

linux之進程地址空間

文章目錄 1.進程地址空間回顧1.1進程地址空間劃分1.2驗證進程地址空間劃分1.簡單劃分2.完整劃分 2.初探進程地址空間2.1初看現象2.2Makefile的簡便寫法 3.進程地址空間詳解3.1地址空間是什么?3.2地址空間的設計/由來3.3空間區域劃分3.4如何理解地址空間?3.5解釋3.2的&#x1…

警惕.locked勒索病毒,您需要知道的預防和恢復方法。

尊敬的讀者&#xff1a; 隨著網絡技術的進步&#xff0c;勒索病毒已經成為一種極具威脅性的網絡犯罪工具之一。其中&#xff0c;.locked勒索病毒是一種采用高級加密算法的惡意軟件&#xff0c;目的是加密用戶的文件&#xff0c;并勒索贖金以提供解密密鑰。本文將介紹如何應對被…

解決No Feign Client for loadBalancing defined,修改Maven依賴

Spring微服務報錯&#xff1a; java.lang.IllegalStateException:FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-netf…

你不知道的庫:庫的種類,作用和加載方式

你不知道的庫&#xff1a;庫的種類&#xff0c;作用和加載方式 &#x1f4df;作者主頁&#xff1a;慢熱的陜西人 &#x1f334;專欄鏈接&#xff1a;Linux &#x1f4e3;歡迎各位大佬&#x1f44d;點贊&#x1f525;關注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客…

組件化——組件的實現原理

渲染器主要負責將虛擬 DOM 渲染為真實 DOM&#xff0c;我們只需要使用虛擬 DOM 來描述最終呈現的內容即可。但當我們編寫比較復雜的頁面時&#xff0c;用來描述頁面結構的虛擬 DOM 的代碼量會變得越來越多&#xff0c;或者說頁面模板會變得越來越大。這時&#xff0c;我們就需要…

iperf3 網絡測試

iperf3 測試網絡的上下行帶寬 下載地址 https://iperf.fr/iperf-download.php 開啟服務器 開啟客戶端 常用命令 -c 代表客戶端-s 代表服務端-u 代表 udp-r 代表數據方向是否反向 https://baijiahao.baidu.com/s?id1731514357681464971&wfrspider&forpc

C++學習 --queue

目錄 1&#xff0c; 什么是queue 2&#xff0c; 創建queue 2-1&#xff0c; 標準數據類型 2-2&#xff0c; 自定義數據類型 2-3&#xff0c; 其他創建方式 3&#xff0c; 操作stack 3-1&#xff0c; 賦值 3-2&#xff0c; 插入元素(push) 3-3&#xff0c; 查詢元素 3…

Python簡直是萬能的,這5大主要用途你一定要知道!

從2015開始國內就開始慢慢接觸Python了&#xff0c;從16年開始Python就已經在國內的熱度更高了&#xff0c;目前也可以算的上"全民Python"了。 眾所周知小學生的教材里面已經有Python了&#xff0c;國家二級計算機證也需要學習Python了&#xff01; 因為Python簡單…

編程語言發展史:布爾代數和機器語言

布爾代數是一種數學理論&#xff0c;用于描述和分析邏輯和布爾值的關系。它是由英國數學家George Boole在19世紀中期發明的&#xff0c;被認為是現代計算機科學的基礎之一。布爾代數的發明使得邏輯運算可以被表示為代數運算&#xff0c;從而為計算機科學的發展奠定了基礎。 在…

PTA 7-4 數列求和-加強版

7-4 數列求和-加強版 分數 20 全屏瀏覽題目 作者 DS課程組 單位 浙江大學 給定某數字A&#xff08;1≤A≤9&#xff09;以及非負整數N&#xff08;0≤N≤100000&#xff09;&#xff0c;求數列之和SAAAAAA?AA?A&#xff08;N個A&#xff09;。例如A1, N3時&#xff0c;S1…

Unity、UE和Godot的優劣對比

先占位。。。。。。 首先說Unity和UE這兩家公司&#xff0c;是行業的兩座燈塔&#xff0c;對整個游戲引擎的這個行業的發展具有這種指導性的這種作作用。這兩個引擎我從2016年開始就一直在用&#xff0c;結合一下業內的共識&#xff0c;一般來說認為呢&#xff0c;Unity更擅長移…

2023全球邊緣計算大會深圳站-核心PPT資料下載

一、峰會簡介 邊緣計算&#xff0c;是指在靠近物或數據源頭的一側&#xff0c;采用網絡、計算、存儲、應用核心能力為一體的開放平臺&#xff0c;就近提供最近端服務。其應用程序在邊緣側發起&#xff0c;產生更快的網絡服務響應&#xff0c;滿足行業在實時業務、應用智能、安…

LeetCode算法題解(動態規劃,背包問題)|LeetCode416. 分割等和子集

LeetCode416. 分割等和子集 題目鏈接&#xff1a;416. 分割等和子集 題目描述&#xff1a; 給你一個 只包含正整數 的 非空 數組 nums 。請你判斷是否可以將這個數組分割成兩個子集&#xff0c;使得兩個子集的元素和相等。 示例 1&#xff1a; 輸入&#xff1a;nums [1,5,…

Linux中的進程程序替換

Linux中的進程程序替換 1. 替換原理2. 替換函數3. 函數解釋4. 命名理解程序替換的意義 1. 替換原理 替換原理 用fork創建子進程后執行的是和父進程相同的程序(但有可能執行不同的代碼分支),子進程往往要調用一種exec函數以執行另一個程序。當進程調用一種exec函數時,該進程的…

[Docker]九.Docker compose講解

docker-compose 是 docker 官方的一個開源項目&#xff0c;可以實現對 docker 容器集群的快速編排, docker-compose 通過一個 配置文件 來管理多個 Docker 容器,在配置文件中&#xff0c;所有的容器通過 services 來定義&#xff0c;然后使用 docker-compose腳本 來 啟動&am…

Nuxt.js Next.js Nest.js

Nuxt.js和Next.js都是服務端渲染框架(SSR)&#xff0c;屬于前端框架,Nest.js則是node框架,屬于后端框架。 其中Nuxt.js是vue的ssr框架&#xff0c;Next.js是react的ssr框架。 都是比vue和react更上層的前端框架。 文章目錄 1.SSR2.Nuxt2.1 Nuxt的下載2.2 Nuxt的集成2.3 Nuxt…

HuggingFace-利用BERT預訓練模型實現中文情感分類(下游任務)

準備數據集 使用編碼工具 首先需要加載編碼工具&#xff0c;編碼工具可以將抽象的文字轉成數字&#xff0c;便于神經網絡后續的處理&#xff0c;其代碼如下&#xff1a; # 定義數據集 from transformers import BertTokenizer, BertModel, AdamW # 加載tokenizer token Ber…

cobol基本動詞

cobol基本動詞 基本動詞用于過程部中的數據處理。每個語句總是以cobol動詞開頭。 input&#xff08;輸入&#xff09;/output&#xff08;輸出&#xff09; 輸入輸出動詞用于從用戶獲取數據。并顯示cobol程序的輸出。 accept 用于從操作系統或者用戶獲取數據&#xff0c;例如日…

langchain 部署組件-LangServe

原文&#xff1a;&#x1f99c;?&#x1f3d3; LangServe | &#x1f99c;?&#x1f517; Langchain LangServe &#x1f6a9; We will be releasing a hosted version of LangServe for one-click deployments of LangChain applications. Sign up here to get on the wa…