B站台湾大学郭彦甫|MATLAB 学习笔记|12 线性方程式和线性系统 Linear equations
MATLAB学习笔记(12 线性方程式和线性系统 Linear equations)
1. 线性方程 (Linear Equation)
1.1 提出问题
题目:
对于一个电路网络:

给出电压 和 、电阻 ,求解电流 .
解:
根据基尔霍夫电压电流定律(KCL/KVL),可得到:
[基尔霍夫定律内容](基尔霍夫定律(电学定律)_百度百科 (baidu.com))
转换为矩阵形式:
得到的矩阵方程中, 和 已知, 未知,需要求解 .
1.2 求解线性方程组
可以使用的方法:
-
消元法 (Successive elimination (通过因式分解))
包括高斯消去法、LU分解
-
克莱默法则 (Cramer’s method)
1.3 高斯消去法 (Gaussian Elimination)
1.3.1 数学解释:
将增广矩阵进行 行与行之间的化简,尽可能使增广矩阵的左下方数字为 0
example:
给定方程组:
求解过程:
通过最后的矩阵列方程组求出解
1.3.2 MTALAB 方法:rref()
A = [1 2 1;2 6 1;1 1 4];
b = [2; 7; 3];
R = rref([A b]) %使用 rref 以简化行阶梯形矩阵表示该方程组。
>> Class12
R =
1 0 0 -3
0 1 0 2
0 0 1 1
1.4 LU分解 (LU Factorization)
-
假设我们要求解: , 其中
-
将 分解为2个三角矩阵:
-
则问题转化为:
-
策略方法:
- 求解 得到
- 求解
1.4.1 上/下三角矩阵定义
-
下三角矩阵 (对角线为1)
-
上三角矩阵
1.4.2 如何获得 和 ?
使用一系列的左乘:
1.4.2 LU 分解举例
对于一个矩阵:
解:
先左乘一个矩阵 ,其中 是在单元矩阵 的基础上补充得到, 相乘使得矩阵 中的元素 和 化简为 :
同理,左乘一个矩阵 , 使得矩阵 中的元素 化简为 。
由此求解出 和 .
1.4.3 MATLAB 方法: lu()
- matlab 中的
lu()
函数在输入一个矩阵 A 之后,可以得到 L, U, P,其语法为[L,U,P]=lu(A)
,数学关系满足: - 计算 , 由 可得到: ,
example:
给出:
A = [1 1 1;2 3 5;4 6 8];
[L, U, P] = lu(A);
- 方法一:(matlab 中的数学计算方法)
得到 可利用 求 ,可利用 关系式求解 。
- 方法二:(老师的方法)
1.4.4 矩阵的逆的快速表示:\
对于方程组:
A = [1 2 1;2 6 1;1 1 4];
b = [2; 7; 3];
x = A\b
exercise (P14)(有疑惑)
题目:

解:
% LU分解
clear
clc
syms R1 R2 R3 R4 R5 i1 i2 i3 i4 i5 V1 V2 V3 V4 V5
%根据方程组列出矩阵方程Ax=b,其中x与电流i有关
A=[R1 0 0 R4 0;...
0 R2 0 -R4 R5;...
0 0 -R3 0 R5;...
-1 1 0 1 0;...
0 -1 1 0 1];
x=[i1; i2; i3; i4; i5];
b=[V1; V2; V3; V4; V5];
[L,U,P]=lu(A);
% matlab的数学计算方法
x1 = x;
y1 = L\(P*b);
x1 = U\y1;
% 老师的方法
x2 = x;
y2 = L*b;
x2 = U\y2;
(解出来的 x1
和 x2
不一致,比较疑惑)
1.5 克莱默法则(Cramer’s (Inverse) Method)
内容:
- 问题如下:
- 假设存在 使得
- 则变量 为:
1.5.1 逆矩阵(Inverse Matrix)
- 对于矩阵 ,其逆矩阵定义如下:
其中 表示 的行列式:
- 性质:
example:(使用克莱姆法则求解方程组)
题目:
解:
A = [1 2 1;2 6 1;1 1 4];
b = [2; 7; 3];
x = inv(A)*b
exercise (P19)
题目:
- 在三维空间画该平面
解:
clear
clc
clf
x = 0:40;
y = 0:40;
[X1,Y1]=meshgrid(x,y); %画三维图之前绘制网格,可以参考高阶绘图部分讲义
[X2,Y2]=meshgrid(x,y);
[X3,Y3]=meshgrid(x,y);
Z1 = -X1-Y1;
Z2 = -X2+Y2;
Z3 = -1/3*X3;
hold on
surf(Y1,X1,Z1);
surf(Y2,X2,Z2);
surf(Y3,X3,Z3);
axis square;
hold off
%如果需要改变Y轴的方向和z轴的取值范围,可以在 Figure-查看-属性检查器 中更改

1.6 检查矩阵状况的函数:cond()
如果矩阵 出现下图中第二和第三种情况,则 的行列式为零(,Singular):

在 MATLAB 中可以使用 cond()
函数观察矩阵的“健康状况”,得到的值越小,矩阵对求逆运算越不敏感。
2. 线性系统 (Linear System)
2.1 提出问题
线性方程式是 的形式,线性系统是 的形式
-
给出方程组:
-
矩阵表达形式:

2.2 特征值和特征向量 (Eigenvalues and Eigenvectors)
2.2.1 数学方法:
-
对于一个系统 ,如果矩阵相乘 比较复杂,可以找到一个向量 ,使得 ,并且 为常数(把 称为特征向量, 称为特征值)
-
然后分解
-
矩阵相乘变为:
2.2.2 特征值和特征向量的解释
对于矩阵 的特征值和特征向量:
当输入为 时, 如果 , 称系统对输入进行放大;如果输入不是 , 可以对输入进行分解, 输入
example:
-
给出 (假如不想计算矩阵乘法,用求特征值的方法)
-
利用 MATLAB 的
eig()
函数可以得到下面结果:(2.2.3部分有解释)
-
把 拆解
-
计算
2.2.3 算特征值和特征向量用 eig()
函数
求特征值和特征向量:
[v,d] = eig([2 -12;1 -5])
2.3 矩阵指数:expm()

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具