尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
《数值分析小白笔记03:高斯消元法与LU算法》
这周的课程老师给我们讲解了高斯消元法和LU分解法。听着这些名词有点高大上实则也是数学里面的线性代数知识。换了一个叫法。我从老师给的网址网盘里下载对应的教材文件。如有需要电子教材的可以评论区留言上课的时候老师不仅提及到了高斯消元还有提及到列主元。我的天一看目录才发现老师上课是跳着讲的知识一下到了第九章以后。老师讲的有点太跳跃我就凭借记忆复现一下知识内容。原始高斯消去法、LU分解法、高斯-赛德尔法、高斯列主元消去法1、原始高斯消去法看不懂跳过这个段文字我们直接看例子哦第一行第一列的元素是2把它下面的消出两个0行变换-3、-2变为0第二行第二列的元素是0.5把它下面的消出1个0行变换2变为0列方程式解方程2、LU分解法假装看不懂咱跳过这个段文字我们直接看例子AXB哦系数矩阵A可以由两个矩阵相乘而得即 矩阵A 下三角矩阵L×上三角矩阵ULU两个矩阵相乘再验算一下是否等于矩阵A。3、高斯列主元消去法咱们直接看例子吧哦和原始高斯消元法类似的只是主元由于换了行但是解是不变的。4、高斯-赛德尔法没看明白啊来我们上栗子。这是啥迭代公式没看懂啊哦这么算4x1​−x2​3 那么x1 ​3x2​/4−x1​4x2​−x3​4 那么x2 ​​4x1x3/4−x2​4x3​5 那么x3 5x2/4(1) x1 ​3x2​/4 令x20那么x13/40.75(2) x2 ​​4x1x3/4 在上式(1)中已得x10.75令x30那么x2(40.750)/41.1875(3) x3 5x2/4 在上式(1)和(2)中已得x10.75x21.1875那么x3(51.1875)/4如此就获得了x10.75、x21.1875、x31.546875 第一次迭代在第一次迭代中我们已经获得了下面的等式4x1​−x2​3 那么x1 ​3x2​/4−x1​4x2​−x3​4 那么x2 ​​4x1x3/4−x2​4x3​5 那么x3 5x2/4第一次迭代我们最开始令x20以后获得一组解如下x10.75、x21.1875、x31.546875 第一次迭代第二次迭代我们这次不令x20我们直接令第一次迭代获得的x21.1875x31.546875这些带入去计算x1 ​3x2​/437.1875/41.046875x2 ​​4x1x3/441.0468751.546875/41.6484375x3 5x2/451.6484375/41.662109375得到了一组新的解以上为第二次迭代。第三次迭代x21.6484375x31.662109375继续往方程里面带入计算又会得到一组解。以此类推。我们是来学软件学算法的怎么弄了半天matlab都还没上阵呢我记得上课老师有提及书上的lu分解会和matlab不一样但是是对的学习的是matlab复习了线性代数的知识。那我们现在就跑两个代码试试看1. 原始高斯消去法脚本函数function x gauss_naive(A,b) % 原始高斯消去法不选主元 n length(b); A [A b(:)]; % 增广矩阵 for k 1:n-1 if A(k,k) 0 error(主元为零原始高斯消去法失败第 %d 步, k); end for i k1:n m A(i,k)/A(k,k); A(i,k:n1) A(i,k:n1) - m*A(k,k:n1); end end % 回代 x zeros(n,1); for i n:-1:1 x(i) (A(i,n1) - A(i,i1:n)*x(i1:n))/A(i,i); end end脚本保存位置和重命名命令行窗口运行A [2 1 -1; -3 -1 2; -2 1 2]; b [8; -11; -3]; x1 gauss_naive(A,b)路径没有他添加进来有点问题addpath D:\matlab\Script_learn这个结果与开始得到的解是一致的。我们使坏一下交换一下行使 a110 a11​0命令行窗口运行A2 [0 1 1; 1 1 1; 1 1 2]; b2 [2; 3; 4]; try gauss_naive(A2,b2) catch e disp(e.message) end2. LU 分解法Doolittle不选主元脚本函数代码1function [L,U] lu_doolittle(A) n size(A,1); L eye(n); U zeros(n); for k 1:n for j k:n U(k,j) A(k,j) - L(k,1:k-1)*U(1:k-1,j); end if U(k,k) 0 error(U(%d,%d)0LU 分解失败,k,k); end for i k1:n L(i,k) (A(i,k) - L(i,1:k-1)*U(1:k-1,k))/U(k,k); end end end脚本函数代码2function x solve_lu(L,U,b) n length(b); y zeros(n,1); for i 1:n % 前代 Lyb y(i) b(i) - L(i,1:i-1)*y(1:i-1); end x zeros(n,1); for i n:-1:1 % 回代 Uxy x(i) (y(i) - U(i,i1:n)*x(i1:n))/U(i,i); end end两个脚本函数的代码路径依旧是我在刚刚报错的地方。注意一下路径哦addpath D:\matlab\Script_learnA [2 1 -1; -3 -1 2; -2 1 2]; b [8; -11; -3]; [L,U] lu_doolittle(A); disp(L ), disp(L) disp(U ), disp(U) disp(L*U - A ), disp(L*U - A) x2 solve_lu(L,U,b)3. 高斯列主元消去法代码运行的结果脚本函数function x gauss_partial_pivot(A,b) % 高斯列主元消去法 n length(b); A [A b(:)]; for k 1:n-1 [~,p] max(abs(A(k:n,k))); % 选列主元 p p k - 1; if A(p,k) 0 error(矩阵奇异); end if p ~ k A([k p],:) A([p k],:); % 交换行 end for i k1:n m A(i,k)/A(k,k); A(i,k:n1) A(i,k:n1) - m*A(k,k:n1); end end x zeros(n,1); for i n:-1:1 x(i) (A(i,n1) - A(i,i1:n)*x(i1:n))/A(i,i); end end命令行代码A [2 1 -1; -3 -1 2; -2 1 2]; b [8; -11; -3]; A2 [0 1 1; 1 1 1; 1 1 2]; b2 [2; 3; 4]; x3 gauss_partial_pivot(A,b) x3b gauss_partial_pivot(A2,b2)4. 高斯-赛德尔迭代法function [x,iter,res] gauss_seidel(A,b,x0,tol,maxit) n length(b); x x0(:); res zeros(maxit,1); for iter 1:maxit xold x; for i 1:n s A(i,:)*x - A(i,i)*x(i); % 用当前最新 x x(i) (b(i) - s)/A(i,i); end res(iter) norm(x - xold, inf); if res(iter) tol res res(1:iter); return; end end res res(1:maxit); endAgs [4 -1 0; -1 4 -1; 0 -1 4]; bgs [3; 4; 5]; [x4, iter, res] gauss_seidel(Ags, bgs, [0;0;0], 1e-10, 200); fprintf(迭代次数 %d\n, iter); fprintf(解 [%.6f, %.6f, %.6f]\n, x4); 迭代次数 14 解 [1.178571, 1.714286, 1.678571] semilogy(1:iter, res, o-) xlabel(迭代次数), ylabel(||x^{(k)}-x^{(k-1)}||_\infty) title(高斯-赛德尔法收敛过程), grid on
RELATED

相关推荐

绩效复盘:让复盘真正产出价值

绩效复盘:让复盘真正产出价值

每到年底,最让管理者和HR头疼的是如何做好绩效复盘。绩效复盘不能孤立地看绩效等级,它必须和员工的业绩达成情况放在一起审视。只有把 "人" 的结果和 "事" 的结果交叉验证,复盘才不会沦为一场数字游戏,才能真…

📅 2026/11/2 1:52:20
掌握RAG技术,让AI像搜索引擎一样高效检索知识库,小白程序员必备收藏!

掌握RAG技术,让AI像搜索引擎一样高效检索知识库,小白程序员必备收藏!

本文介绍了如何利用RAG(检索增强生成)技术解决LLM(大型语言模型)的知识截止、幻觉和上下文窗口有限等问题。通过将知识库与LLM结合,实现更精准、可靠的问答系统。文章详细阐述了RAG的完整流水线,包括索引阶…

📅 2026/11/2 1:52:20
战略、战役、战术、战备: 天天挂在嘴边,真能分清的不多

战略、战役、战术、战备: 天天挂在嘴边,真能分清的不多

战略规划与解码 战略、战役、战术、战备——这四个从军事领域借来的词,在企业经营里被说得最多,也混得最凶。看似只差一个字,实际分工完全不同:分不清,动作就会互相打架;分得清,所有的劲儿才能…

📅 2026/11/2 1:52:20
MORE NEWS

更多资讯

📰

Win11无法下载软件?四层排查从网络代理到系统服务

上周有人问我:“我这台 Win11 是不是中毒了?浏览器点下载一点反应都没有,换个网站也一样。”这类Win11无法下载软件的问题,我一年里少说碰上几十回,从公司配的办公本到朋友自己攒的台式机,症状看着千奇百怪…

📰

时序数据库在百万级IoT净水平台中的性能优化实践

1. 百万并发下的 IoT 净水平台性能挑战净水设备的物联网化已经成为行业标配,一个中型城市的净水监测平台往往需要接入数万台设备。每台设备以10秒/次的频率上报水质数据(TDS值、PH值、浊度等),这意味着单城市每秒就会产生数千条写…

📰

LeetCode 121股票买卖问题:最优解法与动态规划应用

1. 题目解析与核心思路LeetCode 121题"Best Time to Buy and Sell Stock"是算法面试中的经典问题,主要考察对数组遍历和动态规划思想的理解。题目要求给定一个数组prices,其中prices[i]表示某支股票第i天的价格,你需要选择某一天买…

📰

Chat-嬛嬛实战:用提示词工程与多轮对话管理稳住人设

第一天打卡,我们做的东西说出来有点不正经——一个满口“本宫”、会跟你抬杠、也会絮絮叨叨讲家常的聊天机器人,内部代号Chat-嬛嬛。这是 DataWale 大模型学习计划 Day1 的练手项目,目标很朴素:不训练、不微调、不碰显卡&#xff…

📰

Docker容器化CPLEX:Java求解服务环境一致性与部署实践

简介:这份资源面向需要在容器环境中运行 IBM ILOG CPLEX 的 Java 开发者与运筹优化学习者,解决 CPLEX 本地部署依赖复杂、跨平台环境配置繁琐的问题。包内共 7 个文件,以 Dockerfile 为主,配合 Java 示例源码、CPLEX 模型文件、pr…

📰

Vue DevTools 6.6.4离线安装与调试面板排障指南

简介:这是一份面向Vue.js 3开发者的Chrome调试扩展包,版本固定为6.6.4,主要用于在浏览器中观察Vue应用的组件层级、响应式状态、事件监听与路由切换,并辅助定位渲染异常和性能瓶颈。压缩包共128个文件,约2.12MB&#x…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬