線性方程組的解法

文章目錄

  • 線性方程組的解法
      • 認識一些基本的矩陣函數
      • MATLAB 實現
      • 機電工程學院教學函數構造

線性方程組的解法

看到以下線性方程組的一般形式:設有以下的 n n n階線性方程組:

A x = b \mathbf{Ax}=\mathbf{b} Ax=b

求解線性方程組的方法可以分為兩類:直接法迭代法

  • 直接法是指假設計算中不產生舍入誤差,結果有限次的運算可以得到方程組的精確解的方法,主要用于解低階稠密矩陣
  • 迭代法是一種通過構造迭代序列逐步逼近方程組精確解的方法。它將求解方程組的問題轉化為一個迭代格式,從一個初始近似解出發,按照一定的迭代公式反復計算,得到一系列近似解,當迭代次數足夠多時,這些近似解逐漸收斂到方程組的精確解。迭代法主要用于解高階稀疏矩陣方程組,因為對于高階稀疏矩陣,直接法可能會面臨計算量過大、存儲需求過高的問題,而迭代法可以利用矩陣的稀疏性,減少計算量和存儲空間。

認識一些基本的矩陣函數

函數功能
rank ( A ) \texttt{rank}(\mathbf{A}) rank(A) A \mathbf{A} A的秩,即 A \mathbf{A} A中線性無關的行數和列數
det ( A ) \texttt{det}(\mathbf{A}) det(A) A \mathbf{A} A的行列式
inv ( A ) \texttt{inv}(\mathbf{A}) inv(A) A \mathbf{A} A的逆矩陣,若 A \mathbf{A} A近似奇異,會拋出錯誤
pinv ( A ) \texttt{pinv}(\mathbf{A}) pinv(A) A \mathbf{A} A的偽逆
trace ( A ) \texttt{trace}(\mathbf{A}) trace(A) A \mathbf{A} A的跡,即對角線元素和

MATLAB 實現

M A T L A B MATLAB MATLAB中,使用運算符\直接求解線性系統,該運算符功能強大,具有智能性。

x=A\b  %求解線性系統 Ax=b
X=A\B  %求解系統:AX=B
  1. 直接解法

問題
{ x 1 + 3 x 2 ? 3 x 3 ? x 4 = 1 3 x 1 ? 6 x 2 ? 3 x 3 + 4 x 4 = 4 x 1 + 5 x 2 ? 9 x 3 ? 8 x 4 = 0 \begin{cases} x_1 + 3x_2 - 3x_3 - x_4&= 1 \\ 3x_1 - 6x_2 - 3x_3 + 4x_4 &= 4\\ x_1 + 5x_2 - 9x_3 - 8x_4 &= 0 \end{cases} ? ? ??x1?+3x2??3x3??x4?3x1??6x2??3x3?+4x4?x1?+5x2??9x3??8x4??=1=4=0?

A=[1,3,-3,-1;3,-6,-3,4;1,5,-9,-8];
B=[1,4,0]';
X=A\B

  1. 逆矩陣:

注意這種方法首先要看一下 A \mathbf{A} A是不是方陣。

x=A^-1*b
x=inv(A)*b

問題
{ x 1 + 2 x 2 = ? 1 3 x 1 + 4 x 2 = ? 1 \begin{cases} x_1 + 2x_2&= -1 \\ 3x_1+4x_2 &=-1 \end{cases} {x1?+2x2?3x1?+4x2??=?1=?1?

A=[1,2;3,4];b=[-1;-1];x=A^-1*b


3. L U LU LU分解

[L U]=lu(A)
X=U\(L\B)

問題
{ 4 x 1 + 2 x 2 ? x 3 = 2 3 x 1 ? x 2 + 2 x 3 = 10 11 x 1 + 3 x 2 + x 3 = 8 \left\{ \begin{array}{c} 4x_1+2x_2-x_3=2\\ 3x_1-x_2+2x_3=10\\ 11x_1+3x_2+x_3=8\\ \end{array} \right. ? ? ??4x1?+2x2??x3?=23x1??x2?+2x3?=1011x1?+3x2?+x3?=8?

>> A=[4 2 -1;3 -1 2; 11 3 1];
>> B=[2 10 8]';
>> D=det(A)D =-10.0000>> [L U]=lu(A)L =0.3636   -0.5000    1.00000.2727    1.0000         01.0000         0         0U =11.0000    3.0000    1.00000   -1.8182    1.72730         0   -0.5000>> X=U\(L\B)X =4.0000-10.0000-6.0000

機電工程學院教學函數構造

1.高斯消元法

代碼模板

function x = pureGaussianElimination(A, b)% 獲取矩陣 A 的行數n = size(A, 1);% 構建增廣矩陣 [A, b]augmentedMatrix = [A, b];% 前向消元過程for k = 1:n - 1for i = k + 1:n% 計算消元因子factor = augmentedMatrix(i, k) / augmentedMatrix(k, k);% 消去第 i 行第 k 列的元素augmentedMatrix(i, k:end) = augmentedMatrix(i, k:end) - factor * augmentedMatrix(k, k:end);endend% 回代求解x = zeros(n, 1);x(n) = augmentedMatrix(n, end) / augmentedMatrix(n, n);for i = n - 1:-1:1x(i) = (augmentedMatrix(i, end) - augmentedMatrix(i, i + 1:n) * x(i + 1:n)) / augmentedMatrix(i, i);end
end
2.列主元消去法

代碼模板

function x = gaussianElimination(A, b)% 獲取矩陣 A 的行數和列數[n, m] = size(A);% 構建增廣矩陣 [A, b]augmentedMatrix = [A, b];% 前向消元過程for k = 1:n-1% 選主元[~, pivotIndex] = max(abs(augmentedMatrix(k:n, k)));pivotIndex = pivotIndex + k - 1;% 交換行if pivotIndex ~= ktemp = augmentedMatrix(k, :);augmentedMatrix(k, :) = augmentedMatrix(pivotIndex, :);augmentedMatrix(pivotIndex, :) = temp;end% 消元for i = k+1:nfactor = augmentedMatrix(i, k) / augmentedMatrix(k, k);augmentedMatrix(i, k:end) = augmentedMatrix(i, k:end) - factor * augmentedMatrix(k, k:end);endend% 回代求解x = zeros(n, 1);x(n) = augmentedMatrix(n, end) / augmentedMatrix(n, n);for i = n-1:-1:1x(i) = (augmentedMatrix(i, end) - augmentedMatrix(i, i+1:n) * x(i+1:n)) / augmentedMatrix(i, i);end
end
3. L U LU LU分解法

代碼模板

function x = luDecomposition(A, b)% 獲取矩陣 A 的行數n = size(A, 1);% 初始化 L 為單位矩陣,U 為 AL = eye(n);U = A;% LU 分解過程for k = 1:n - 1for i = k + 1:n% 計算 L 矩陣的元素L(i, k) = U(i, k) / U(k, k);% 更新 U 矩陣U(i, k:end) = U(i, k:end) - L(i, k) * U(k, k:end);endend% 求解 Ly = by = zeros(n, 1);for i = 1:ny(i) = (b(i) - L(i, 1:i - 1) * y(1:i - 1)) / L(i, i);end% 求解 Ux = yfunction x = GaussianElimination(A, b)% 獲取矩陣 A 的行數n = size(A, 1);% 構建增廣矩陣 [A, b]augmentedMatrix = [A, b];% 前向消元過程for k = 1:n - 1for i = k + 1:n% 計算消元因子factor = augmentedMatrix(i, k) / augmentedMatrix(k, k);% 消去第 i 行第 k 列的元素augmentedMatrix(i, k:end) = augmentedMatrix(i, k:end) - factor * augmentedMatrix(k, k:end);endend% 回代求解x = zeros(n, 1);x(n) = augmentedMatrix(n, end) / augmentedMatrix(n, n);for i = n - 1:-1:1x(i) = (augmentedMatrix(i, end) - augmentedMatrix(i, i + 1:n) * x(i + 1:n)) / augmentedMatrix(i, i);end
endx = zeros(n, 1);for i = n:-1:1x(i) = (y(i) - U(i, i + 1:n) * x(i + 1:n)) / U(i, i);end
end

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

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

相關文章

Java的Selenium的特殊元素操作與定位之模態框

Modal Dialogue Box,又叫做模式對話框,是指在用戶想要對對話框以外的應用程序進行操作時,必須首先對該對話框進行響應。如單擊【確定】或【取消】按鈕等將該對話框關閉。 alert(警告) //訪問本地的HTML文件 chromeDr…

2022年全國職業院校技能大賽 高職組 “大數據技術與應用” 賽項賽卷(1卷)任務書

2022年全國職業院校技能大賽 高職組 “大數據技術與應用” 賽項賽卷(1卷)任務書 背景描述:模塊A:大數據平臺搭建(容器環境)(15分)任務一:Hadoop 完全分布式安裝配置任務二…

題目練習之set的奇妙使用

???~~~~~~歡迎光臨知星小度博客空間~~~~~~??? ???零星地變得優秀~也能拼湊出星河~??? ???我們一起努力成為更好的自己~??? ???如果這一篇博客對你有幫助~別忘了點贊分享哦~??? ???如果有什么問題可以評論區留言或者私信我哦~??? ?????? 個…

Java虛擬機——JVM(Java Virtual Machine)解析一

1.JVM是什么? 1.1 JVM概念 Java Virtual Machine (JVM) 是JDK的核心組件之一,它使得 Java 程序能夠在任何支持 JVM 的設備或操作系統上運行,而無需修改源代碼 JDK是什么,JDK和JVM是什么關系?1.Java IDE(Integrated …

初識 Three.js:開啟你的 Web 3D 世界 ?

3D 技術已經不再是游戲引擎的專屬,隨著瀏覽器技術的發展,我們完全可以在網頁上實現令人驚艷的 3D 效果。而 Three.js,作為 WebGL 的封裝庫,讓 Web 3D 的大門向更多開發者敞開了。 這是我開啟這個 Three.js 專欄的第一篇文章&…

OpenGL ES -> SurfaceView + EGL實現立方體紋理貼圖+透視效果

XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.MySurfaceView xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"…

pikachu靶場搭建教程,csfr實操

靶場安裝 靶場下載地址 百度網盤下載地址和密碼 百度網盤 請輸入提取碼 0278 github靶場下載地址 https://gitcode.com/Resource-Bundle-Collection/c7cc1 安裝前提 這兩個文件夾的配置文件都要進行更改修改數據庫密碼 D:\phpstudy_pro\WWW\pikachu\inc D:\phpstudy_pro…

浙江大學DeepSeek系列專題線上公開課第二季第四期即將上線!端云協同:讓AI更懂你的小心思! - 張圣宇 研究員

今晚8點10分左右&#xff0c;端云協同&#xff1a;讓AI更懂你的小心思&#xff01;浙大學者張圣宇研究員將揭秘人機交互新玩法。浙江大學DeepSeek系列專題線上公開課第二季第四期即將上線&#xff01; 講座 主題&#xff1a; 大小模型端云協同賦能人機交互 主講人&#xff1a…

Vue3實戰三、Axios封裝結合mock數據、Vite跨域及環境變量配置

目錄 Axios封裝、調用mock接口、Vite跨域及環境變量配置封裝Axios對象調用mock接口數據第一步、安裝axios&#xff0c;處理一部請求第二步、創建request.ts文件第三步、本地模擬mock數據接口第四步、測試axiosmock接口是否可以調用第五步、自行擴展 axios 返回的數據類型 axios…

Linux如何刪除文件名包含無效編碼字符文件

在Linux中&#xff0c;文件名包含無效編碼字符或特殊不可見字符時&#xff0c;可能導致此文件無法通過常規方式選中或刪除&#xff0c;可以通過下面方法處理 1、確認文件名問題 檢查終端編碼環境 echo $LANG # 默認應為 UTF-8&#xff08;如 en_US.UTF-8&#xff09; 查看…

Completablefuture的底層原理是什么

參考面試回答&#xff1a; 個人理解 CompletableFuture 是 Java 8 引入的一個類、它可以讓我們在多線程環境中更加容易地處理異步任務。CompletableFuture 的底層原理是基于一個名為 FutureTask 的機制、結合了 監聽器模式 和 等待-通知機制 來處理異步計算。 1.首先就是Com…

C/C++ 調用約定:深入理解棧與平棧

前言 在編程中&#xff0c;理解函數調用約定和棧的機制對于編寫高效代碼、調試程序以及進行逆向工程至關重要。本文將深入探討 C 和 C 的調用約定&#xff0c;以及棧與平棧的相關知識。 C 調用約定 在 C 語言中&#xff0c;默認的調用約定是 cdecl。cdecl 調用約定的特點如下&…

xv6-labs-2024 lab1

lab-1 注&#xff1a;實驗環境在我的匯編隨手記的末尾部分有搭建教程。 0.前置 第零章 xv6為我們提供了多種系統調用&#xff0c;其中&#xff0c;exec將從某個文件里讀取內存鏡像(這確實是一個好的說法)&#xff0c;并且將其替換到調用它的內存空間&#xff0c;也就是這個…

屬性修改器 (AttributeModifier)

主頁面設置組件 import { MyButtonModifier } from ../datastore/MyButtonModifier;Entry ComponentV2 struct MainPage {// 支持用狀態裝飾器修飾&#xff0c;行為和普通的對象一致Local modifier: MyButtonModifier new MyButtonModifier();build() {Column() {Button(&quo…

【 <二> 丹方改良:Spring 時代的 JavaWeb】之 Spring Boot 中的監控:使用 Actuator 實現健康檢查

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、引子&…

類和對象(下篇)(詳解)

【本節目標】 1. 再談構造函數 2. Static成員 3. 友元 4. 內部類 5. 再次理解封裝 1. 再談構造函數 1.1 構造函數體賦值 在創建對象時&#xff0c;編譯器通過調用構造函數&#xff0c;給對象中各個成員變量一個合適的初始值。 #include <iostream> using name…

高精度算法

高精度加法 輸入兩個數&#xff0c;輸出他們的和&#xff08;高精度&#xff09; 輸入樣例 111111111111111111111111111111 222222222222222222222222222222 輸出樣例 333333333333333333333333333333 #include <bits/stdc.h> using namespace std;string a,b; in…

Linux開發中注意哪些操作系統安全

在 Linux 開發中&#xff0c;確保操作系統的安全至關重要。以下是一些需要注意的方面&#xff1a; 用戶管理與權限控制 合理設置用戶權限&#xff1a;為不同的用戶和用戶組分配適當的權限&#xff0c;遵循最小權限原則。避免給普通用戶過多的權限&#xff0c;以免他們誤操作或…

x64dbg調試python解釋器

可以先寫個input()這會讓dbg中斷在ntdll模塊中&#xff0c;查看調用堆棧在系統調用結束后的打斷點 然后直接斷到PyObject_Vectorcall函數

? Ultralytics YOLO驗證(Val)時自動輸出COCO指標(AP):2025最新配置與代碼詳解 (小白友好 + B站視頻)

? YOLO獲取COCO指標(3)&#xff1a;驗證(Val) 啟用 COCO API 評估&#xff08;自動輸出AP指標&#xff09;| 發論文必看&#xff01; | Ultralytics | 小白友好 文章目錄 一、問題定位二、原理分析三、解決方案與實踐案例步驟 1: 觸發 COCO JSON 保存步驟 2: 確保 self.is_coc…