MATLAB教学_12线性方程式与线性系统

本文学习视频:https://www.bilibili.com/video/av68228488?p=12

本文学习两个内容:

  1. 线性方程式
  2. 线性系统

 

电路原理的例子。要用基尔霍夫定律:

 根据公式推导出来,也就是要解决如下公式:

第一种方法。 高斯消去法- reff()

reff() 这个函数有三个用法。

R = rref(A) 使用 Gauss-Jordan 消元法和部分主元消元法返回简化行阶梯形的 A

R = rref(A,tol) 指定算法用于确定可忽略列的主元容差。

[R,p] = rref(A) 还返回非零主元 p。 这里p也就是在矩阵R中没有1的1列。这个方法是高斯里的。

计算逆矩阵的更高效方法是使用 inv(A)。也可以用reff()

这是rref() 函数的主要用途。具体可以参考如下网址:

https://ww2.mathworks.cn/help/matlab/ref/rref.html

例题:

%%
clear all; clc; %15分钟练习
A=[1 2 1; 2 6 1;1 1 4];
b=[2;7;3];
R=rref([A b])

下面是R的显示结果:

R =

     1     0     0    -3    %也就是 x1=-3
     0     1     0     2    %x2=2
     0     0     1     1    %x1=1

矩阵论LU分解

解题思路:

将解 Ax=b 换成求解 U, 而L-1 是一个上三角矩阵或者是下三角。

L要经过多次才可以算出来。也才能知道U。不过可以利用函数 LU()

[L,U] = lu(A) 

将满矩阵或稀疏矩阵 A 分解为一个上三角矩阵 U 和一个经过置换的下三角矩阵 L,使得 A = L*U

[L,U,P] = lu(A) 

还返回一个置换矩阵 P,并满足 A = P'*L*U。在此语法中,L 是单位下三角矩阵,U 是上三角矩阵。

这里要特别注意:在PPT中,讲的是A=L^{-1}b。。但实际用 [L,U] = lu(A)  算出来的是 A = L*U

而且如果 用公式 [L,U,P] = lu(A) 的话, 实际上A=P'*L*U。所以35页的练习应该这样计算:

 

%%
clear all; clc;  %32分钟练习
A=[1 1 1;2 3 5;4 6 8];
b=[2;7;3];
[L,U]=lu(A)

y=inv(L)*b
x=inv(U)*y

%%
clear all; clc;   %32分钟练习,另一种方法
A=[1 1 1;2 3 5;4 6 8];
b=[2;7;3];
x=A\b
clear all; clc;   %37分钟练习,另一种方法
syms R1 R2 R3 R4 R5 V1 V2
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];
b=[V1;0;V2;0;0];
x=A\b
矩阵转换函数
[Q,R] = qr(A)正交三角分解其中 A 是 m×n)生成 m×n 上三角形矩阵 R 和 m×m 酉矩阵 Q,这样 A = Q*R
ldl()Hermitian 不定矩阵的分块 LDL 分解不太明白此矩阵的用法

[L,U] = lu(A) 

[L,U,P] = lu(A) 

矩块分解

将满矩阵或稀疏矩阵 A 分解为一个上三角矩阵 U 和一个经过置换的下三角矩阵 L,使得 A = L*U

返回一个置换矩阵 P,并满足 A = P'*L*U。在此语法中,L 是单位下三角矩阵,U 是上三角矩阵。

R = chol(A) Cholesky 分解将对称正定矩阵 A 分解成满足 A = R'*R 的上三角 R。如果 A 是非对称矩阵,则 chol 将矩阵视为对称矩阵,并且只使用 A 的对角线和上三角形。
[U,V,X,C,S] = gsvd(A,B)广义奇异值分解

返回酉矩阵 U 和 V、(通常)方阵 X 以及非负对角矩阵 C 和 S,以使

A = U*C*X'
B = V*S*X'
C'*C + S'*S = I 

A 和 B 必须具有相同列数,但可以具有不同行数。如果 A 为 m×p 且 B 为 n×p,则 U 为 m×mV 为 n×nX 为 p×qC 为 m×q 且 S 为 n×q(其中 q = min(m+n,p))。

S 的非零元素始终在其主对角线上。C 的非零元素在对角线 diag(C,max(0,q-m)) 上。如果 m >= q,则这是 C 的主对角线。

[U,S,V] = svd(A) 奇异值分解执行矩阵 A 的奇异值分解,因此 A = U*S*V'
ilu不完全 LU 分解 

关于chol(),看下面这个例题:

使用 chol 分解对称系数矩阵,然后使用 Cholesky 因子求解线性方程组。

创建在对角线上为正值的对称矩阵。

A = [1 0 1; 0 2 0; 1 0 3]
A = 3×3

     1     0     1
     0     2     0
     1     0     3

计算矩阵的 Cholesky 因子。

R = chol(A)
R = 3×3

    1.0000         0    1.0000
         0    1.4142         0
         0         0    1.4142

第二种方法。 Cramer's(Inverse) Method

这是有关线性代数的知识,再不解释了。

clear all; clc;   %44分钟练习
A=[1 2 1;2 6 1; 1 1 4];  
b=[2;7;3];
x=inv(A)*b    %必须要A的逆矩阵要存在

49分钟练习

这个不会哦。。。。。

clear all;clc;
x=-20:1:20;
y=0:1:40;
[X Y]=meshgrid(x,y);
Z1=-X-Y;
Z2=Y-X;
Z3=-X/3;
mesh(X,Y,Z1);
view(50,10);
hold on;
mesh(X,Y,Z2);
mesh(X,Y,Z3);
xlabel('x');
ylabel('y');
zlabel('z');
% zlim([-20 20]);
hold off;

试着画了几次,感觉都画不出来。不知道哪有错误噻!!!

线性系统

y=Ab, 线性系统 是想求y. 

而线性方程, 是Ax=b, 是想求x

 

 

这一节基本在讲线性,后面感觉没听懂。要先看线性了。

 

 

 

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值