【线性代数】基础版本的高斯消元法

[精确算法] 高斯消元法求线性方程组

线性方程组

考虑线性方程组, 已知 A ∈ R n , n , b ∈ R n A\in \mathbb{R}^{n,n},b\in \mathbb{R}^n ARn,n,bRn, 求未知 x ∈ R n x\in \mathbb{R}^n xRn

A 1 , 1 x 1 + A 1 , 2 x 2 + ⋯ + A 1 , n x n = b 1 , A_{1,1} x_1 +A_{1,2}x_2+\cdots +A_{1,n} x_n = b_1, A1,1x1+A1,2x2++A1,nxn=b1,
A 2 , 1 x 1 + A 2 , 2 x 2 + ⋯ + A 2 , n x n = b 2 , A_{2,1} x_1 +A_{2,2}x_2 +\cdots +A_{2,n} x_n = b_2, A2,1x1+A2,2x2++A2,nxn=b2,
⋯ \cdots
A n , 1 x 1 + A n , 2 x 2 + ⋯ + A n , n x n = b n , A_{n,1} x_1 +A_{n,2}x_2 +\cdots +A_{n,n} x_n = b_n, An,1x1+An,2x2++An,nxn=bn,

也可以写为矩阵乘法的形式,
A x = b Ax=b Ax=b

化为上三角

  • 第 1 轮:
    A i , 1 : n = A i , 1 : n − A i , 1 A 1 , 1 A 1 , 1 : n , i = 2 , ⋯ , n A_{i,1:n} = A_{i,1:n}- \frac{A_{i,1}}{A_{1,1}} A_{1,1:n}, i=2,\cdots,n Ai,1:n=Ai,1:nA1,1Ai,1A1,1:n,i=2,,n

  • 第 2 轮:
    A i , 2 : n = A i , 2 : n − A i , 2 A 2 , 2 A 2 , 2 : n , i = 3 , ⋯ , n A_{i,2:n} = A_{i,2:n}- \frac{A_{i,2}}{A_{2,2}} A_{2,2:n}, i=3,\cdots,n Ai,2:n=Ai,2:nA2,2Ai,2A2,2:n,i=3,,n
    ⋯ \cdots

  • 第 k 轮:
    A i , k : n = A i , k : n − A i , k A k , k A k , k : n , i = k + 1 , ⋯ , n A_{i,k:n} = A_{i,k:n}- \frac{A_{i,k}}{A_{k,k}} A_{k,k:n}, i=k+1,\cdots,n Ai,k:n=Ai,k:nAk,kAi,kAk,k:n,i=k+1,,n

  • 第n-1 轮
    A i , n − 1 : n = A i , n − 1 : n − A i , n − 1 A n − 1 , n − 1 A n , n − 1 : n , i = n A_{i,n-1:n} = A_{i,n-1:n} - \frac{A_{i, n-1}}{A_{n-1,n-1}} A_{n,n-1:n}, i=n Ai,n1:n=Ai,n1:nAn1,n1Ai,n1An,n1:n,i=n

化为对角

  • 第 1 轮:
    A i , 2 : n = A i , 2 : n − A i , n A n , n A n , 2 : n , i = 1 , ⋯ , n − 1 A_{i,2:n} = A_{i,2:n}- \frac{A_{i,n}}{A_{n,n}} A_{n,2:n}, i=1,\cdots,n-1 Ai,2:n=Ai,2:nAn,nAi,nAn,2:n,i=1,,n1

  • 第 2 轮:
    A i , 2 : n − 1 = A i , 2 : n − 1 − A i , n − 1 A n − 1 , n − 1 A n − 1 , 2 : n − 1 , i = 1 , ⋯ , n − 2 A_{i,2:n-1} = A_{i,2:n-1}- \frac{A_{i,n-1}}{A_{n-1,n-1}} A_{n-1,2:n-1}, i=1,\cdots,n-2 Ai,2:n1=Ai,2:n1An1,n1Ai,n1An1,2:n1,i=1,,n2
    ⋯ \cdots

  • 第 k 轮:
    A i , 2 : n − k + 1 = A i , 2 : n − k + 1 − A i , n − k + 1 A n − k + 1 , n − k + 1 A n − k + 1 , 2 : n − k + 1 , i = 1 , ⋯ , n − k + 1 A_{i,2:n-k+1} = A_{i,2:n-k+1}- \frac{A_{i,n-k+1}}{A_{n-k+1,n-k+1}} A_{n-k+1,2:n-k+1}, i=1,\cdots,n-k+1 Ai,2:nk+1=Ai,2:nk+1Ank+1,nk+1Ai,nk+1Ank+1,2:nk+1,i=1,,nk+1

  • 第n-1 轮

A i , 2 = A i , 2 − A i , 2 A 2 , 2 A 2 , 2 , i = 1 A_{i,2} = A_{i,2} - \frac{A_{i, 2}}{A_{2,2}} A_{2,2}, i=1 Ai,2=Ai,2A2,2Ai,2A2,2,i=1

美化数据格式

using DataFrames
function pm(A,b)m,n=size(A); z=[]for i=1:nz=[z; "a$i"]endz=[z; "b"]println(DataFrame([A b],z))
end            

高斯消元法程序

function LEsol(A,b,SHOW=false)"""SHOW 默认为 false 不输出解题步骤, 可以选填 true 输出解题步骤"""n=length(b);   A=copy(A);  b=copy(b)if SHOW pm(A,b) endif SHOW println("化为上三角") endfor i=1:n-1for j=i+1:nc=A[j,i]/A[i,i]b[j]=b[j]-b[i]*cA[j,i:n]=A[j,i:n]-A[i,i:n]*c endif SHOW pm(A,b) endendif SHOW println("化为对角") endfor i=n:-1:2for j=1:i-1c=A[j,i]/A[i,i]b[j]=b[j]-b[i]*cA[j,i:n]=A[j,i:n]-A[i,i:n]*cendif SHOW pm(A,b) endendx=copy(b)for j=1:nx[j]=b[j]/A[j,j];endreturn(x)
end

举例

n=3;
A=ones(Rational,n,n)
b=ones(Rational,n)
for i=1:n-1A[i,i]=2.0;A[i,i+1]=1.0;A[i+1,i]=1.0; b[i]=i+0.0
end
A[n,n]=2.0;
b[n]=n;
x=LEsol(A,b,true)

求解结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIGC视频生成模型:Runway的Gen系列模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Runway开发的视频生成模型Gen系列,包括Gen-1、Gen-2和Gen3 Alpha等,这些模型每次发布都震惊AI圈,荣获多个视频生成的…

【JVM-9】Java性能调优利器:jmap工具使用指南与应用案例

在Java应用程序的性能调优和故障排查中,jmap(Java Memory Map)是一个不可或缺的工具。它可以帮助开发者分析Java堆内存的使用情况,生成堆转储文件(Heap Dump),并查看内存中的对象分布。无论是内…

【基于无线电的数据通信链】Link 11 仿真测试

〇、废话 Link 11 仿真测试 涉及多个方面,包括信号仿真、协议模拟、数据链路层的仿真以及网络性能评估等。Link 11 是一种基于 HF(高频) 或 UHF(超高频) 波段的无线通信协议,主要用于军事通信系统中。为了…

AG32 FPGA 的 Block RAM 资源:M9K 使用

1. 概述 AG32 FPGA 包含了 4 个 M9K 块,每个 M9K 块的容量为 8192 bits,总计为 4 个 M9K(4K bytes)。这使得 AG32 的内部存储非常适合嵌入式应用,能够有效地利用片上资源。 M9K 参数 参考自《AGRV2K_Rev2.0.pdf》。…

【算法笔记】力扣热题100(LeetCode hot-100)438. 找到字符串中所有字母异位词 滑动窗口

力扣热题100(LeetCode hot-100)之 438. 找到字符串中所有字母异位词 本文主要记录算法思路,着急要答案的同学可以直接跳转到最后的代码。 题目 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子…

Hadoop•搭建完全分布式集群

听说这里是目录哦 一、安装Hadoop🥕二、配置Hadoop系统环境变量🥮三、验证Hadoop系统环境变量是否配置成功🧁四、修改Hadoop配置文件🍭五、分发Hadoop安装目录🧋六、分发系统环境变量文件🍨七、格式化HDFS文…

【机器人学】2-3.六自由度机器人运动学逆解-工业机器人【附MATLAB代码】

解析解推导 假设有一工业机器人参数如下图所示: matlab代码 clc;clear; %带入机器人初始值 d1 0.670; d4 1.280; d6 0.215;a2 0.312; a3 1.075; a4 0.225;Position[288.1, -433.1, 2832,96.9158, -29.6162, 109.3547]; px Position(1)/1000; py Positio…

ARM学习(42)CortexM3/M4 MPU配置

笔者之前学习过CortexR5的MPU配置,现在学习一下CortexM3/M4 MPU配置 1、背景介绍 笔者在工作中遇到NXP MPU在访问异常地址时,就会出现总线挂死,所以需要MPU抓住异常,就需要配置MPU。具体背景情况可以参考ARM学习(41)NXP MCU总线挂死,CPU could not be halted以及无法连…

PIC单片机HEX文件格式分析

在调试PIC单片机在bootloader程序时,需要将hex文件转换为bin文件,在转换之前先了解一下hex文件中数据是如何定义的。 直接打开一个LED灯闪烁的程序生成的hex文件,芯片型号为PIC18F46K80 可以看到每条数据都是由6部分组成的,下面分…

用户中心项目教程(四)---Vue脚手架完成前端初始化

目录 1.项目的创建 2.使用开发工具打开 3.项目运行方法 4.使用按钮组件 5.全局注册 6.如何进行组件的测试 7.使用组件的效果展示 8.关于这个vue项目内容的说明 1.项目的创建 这个前提你是你完成了我的教程(三)里面的相关配置,不然你可…

【GitHub】登录时的2FA验证

一、如何进行2FA认证 1.在你的浏览器中下载 Authenticator身份验证插件 2.使用身份验证器添加凭证 2.1 使用身份验证器扫描验证二维码 选择扫描二维码

目标跟踪算法发展简史

单目标跟踪(Single Object Tracking,SOT)是计算机视觉领域中的一个重要研究方向,旨在在视频序列中持续定位并跟踪一个特定目标。随着计算机视觉和机器学习技术的飞速发展,单目标跟踪算法经历了从经典方法到深度学习的演…

【Java设计模式-7】责任链模式:我是流水线的一员

一、责任链(Chain of Responsibility Patten)模式是个啥? 想象一下,你要请假。你先把请假申请交给了小组长,小组长一看,这事儿他能决定,就直接批了。要是小组长觉得这事儿得往上汇报&#xff0…

QT调用OpenSceneGraph

OSG和osgQt编译教程,实测通过 一、下载OpenSceneGraph OpenSceneGraphhttps://github.com/openscenegraph/OpenSceneGraph 二、使用CMAKE编译OpenSceneGraph 1.打开cmake,配置源代码目录 2. CMAKE_INSTALL_PREFIX设置为install文件夹,生…

数据结构与算法面试专题——引入及归并排序

数据结构与算法引入 我们都知道数据结构与算法很重要,甚至会将其称为程序员的“内功”,但是我们花了很多时间学的算法和数据结构,好像就只是为了应对算法面试,对日常的开发工作没有什么帮助。 这点对于我们数据工程师来说&#…

《鸿蒙 HarmonyOS 应用开发从入门到精通(第 2 版)》学习笔记 ——HarmonyOS 环境搭建之安装DevEco Studio

作为一款开发工具,除了具有基本的代码开发、编译构建及调测等功能外,DevEco Studio还具有如下特点: 高效智能代码编辑:支持Java、XML、ArkTS、JS、C/C等语言的代码高亮、代码智能补齐、代码错误检查、代码自动跳转、代码格式化、…

电脑办公技巧之如何在 Word 文档中添加文字或图片水印

Microsoft Word是全球最广泛使用的文字处理软件之一,它为用户提供了丰富的编辑功能来美化和保护文档。其中,“水印”是一种特别有用的功能,它可以用于标识文档状态(如“草稿”或“机密”)、公司标志或是版权信息等。本…

学习记录之原型,原型链

构造函数创建对象 Person和普通函数没有区别,之所以是构造函数在于它是通过new关键字调用的,p就是通过构造函数Person创建的实列对象 function Person(age, name) {this.age age;this.name name;}let p new Person(18, 张三);prototype prototype n…

logback日志自定义占位符

前言 在大型系统运维中,很大程度上是需要依赖日志的。在java大型web工程中,一般都会使用slf4jlogback这一个组合来实现日志的管理。 logback中很多现成的占位符可以可以直接使用,比如线程号【%t】、时间【%d】、日志等级【%p】,…

Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅

引言:音浪太强,我稳如老 HAL! 如果有一天你的耳机里传来的不是《咱们屯里人》,而是金属碰撞般的杂音,那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果!在 Android 音频架构中&#xff0c…