线性方程组的解法

文章目录

  • 线性方程组的解法
      • 认识一些基本的矩阵函数
      • 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+3x23x3x43x16x23x3+4x4x1+5x29x38x4=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+2x23x1+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+2x2x3=23x1x2+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.mzph.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…