matlab 之 线性回归方程式与线性系统

现行方程式求解:

高斯消去法

rref()

>> A = [1 2 1; 2 6 1; 1 1 4]

A =

     1     2     1
     2     6     1
     1     1     4

>> b = [2 7 3]';
>> R = rref([A b])

R =

     1     0     0    -3
     0     1     0     2
     0     0     1     1

>> 

LU Factorization

利用lu():

【P*A = L*U】 参见博客:https://blog.csdn.net/Lrrent/article/details/51297284

>> A = [1 1 1; 2 3 5 ; 4 6 8];
>> [L U P] = lu(A);
>> L

L =

    1.0000         0         0
    0.2500    1.0000         0
    0.5000         0    1.0000

>> U

U =

    4.0000    6.0000    8.0000
         0   -0.5000   -1.0000
         0         0    1.0000

>> P

P =

     0     0     1
     1     0     0
     0     1     0

>> inv(L)

ans =

    1.0000         0         0
   -0.2500    1.0000         0
   -0.5000         0    1.0000

>> 

左除法: \ 、mldivide()

 

>> A = [1 2 1; 2 6 1; 1 1 4];
>> b = [2; 7; 3];
>> x = A\b

x =

   -3.0000
    2.0000
    1.0000

>> 

左除法会根据情况自动判断选择合适的方法进行求值。

几个常用函数总结:

矩阵的逆 inverse matrix

利用INV求解:

【但是inv(A) 不一定存在】

例如:

>> A = [1 2 3 4; 2 4 6 8; 9 8 7 6; 1 3 2 8];
>> inv(A)
警告: 矩阵为奇异工作精度。 

ans =

   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf
   Inf   Inf   Inf   Inf

>> det(A)

ans =

     0

>> 

det():求方阵行列式的值。

当det(A) = 0是A就没有inv。

当det(A)接近于0时不能用inv()求解。

检查矩阵的健康情形:

健康:某个元素做很小的变动,他的det也只会变动很小。

>> A = [1 2 3; 2 4.001 6;9 8 7];
 
>> cond(A)

ans =

   4.3484e+04

>> B = [1 2 3; 2 5 6; 9 8 7]; cond(B)

ans =

   45.5623

>> 

1、矩阵的条件数是判断矩阵“病态”程度的一个指标。

      若矩阵的条件数越大,则表明矩阵的病态越严重(稳定性越差);反而就是呈现出良态

2、矩阵的条件数函数

(1)cond函数                求矩阵二范式条件数

(2)condest函数           求矩阵一范式条件数

(3)rcond函数              求矩阵条件数的倒数

【由上面可以看出A相对于B是非常不稳定的】

特征向量

eig()

>> [v,d] = eig([2 -12;1 -5])

v =

    0.9701    0.9487
    0.2425    0.3162


d =

    -1     0
     0    -2

>> 

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种:
(1) E=eig(A):求矩阵A的全部特征值,构成向量E。
(2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
(3) [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。(4) E=eig(A,B):由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E。
(5) [V,D]=eig(A,B):由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向量构成N×N阶满秩矩阵,且满足AV=BVD。
【参考:https://blog.csdn.net/ssdxiao01/article/details/6641180 】

expm()

>> A = [0 -6 -1;6 2 -16; -5 20 -10];
>> x0 = [1 1 1]' ;
>> X=[];
>> for t = 0:.01:1
X = [X expm(t*A)*x0];
end
>> plot3(X(1,:),X(2,:),X(3,:),'-o');
>> xlabel('x_1'); ylabel('x_2');
>> zlabel('x_3'); grid on;
>> axis tight square;
>> set(gcf,'color',[1 1 1])
>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值