zoukankan      html  css  js  c++  java
  • Matlab随笔之求解线性方程

    理论知识补充:

    %矩阵除分为矩阵右除和矩阵左除。

    %矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X。

    %矩阵A和B的列数必须是相等。

    % 矩阵左除的运算符号为“”,设A,B为两个矩阵,则“BA”是指方程B*X=A的解矩阵X。

    %矩阵A和B的行数必须是相等。

    %求解多项式的解,用roots函数

    %求解定解方程组(未知数个数等于方程总数)

    %A*x=b 
    A=[1,2; 
       3,4]; 
    b=[5;11]; 
    y=A
    z=inv(A)*b

    运行结果:

    y =
    
         1 
         2
    
    
    z =
    
         1 
         2

    %求解不定方程组(未知数个数大于方程总数)

    A=[4,5,1; 
       1,2,3]; 
    b=[3;5]; 
    x=A

    运行结果:

    x =
    
             0 
        0.3077 
        1.4615

    %求解超定方程组(未知数个数小于方程总数)

    A=[1,1; 
       -2,-4; 
       1,-2]; 
    b=[2;-3;2]; 
    x=A 

    求解输出如下图所示,需要说明时,求得结果是以一最小二乘近似解。

    x =
    
        1.8182 
       -0.1299

    %求解奇异方程组(多个方程之间有重复)

    A=[1,2,1; 
        -2,-4,-2; 
        1,-2,5]; 
    b=[6;-12;3]; 
    x=A 

    此时,结果为

    警告: 矩阵为奇异工作精度。 
    > In test at 5
    
    x =
    
       NaN 
       NaN 
       NaN

    此时,可以做同解异构,如下:

    A=[1,2,1; 
       -2,-4,-2; 
        1,-2,5; 
        0,0,0]; 
    b=[6;-12;3;0]; 
    x=A

    运行结果为:

    x =
    
             0 
        2.2500 
        1.5000
    

     总结:将上面的所有情况封装起来,做成一个函数,代码如下:

    function X=solveEquation(A,b)
    % 解方程A*x=b
    % A为系数方程,b为列向量
    [temp1,temp2]=size(b);
    if(temp2~=1)%判断b是否为列向量
        disp('b不是列向量!');
        return
    end
    [c,d]=size(A);%c为方程数,d为未知量个数
    if(c~=temp1)
        disp('A,b行数不一致!');
        return
    end
    if(c==d)
        if(det(A)==0)%奇异方程组
            disp('奇异方程组问题');
            A=[A;zeros(1,d)];
            b=[b;0];
            X=A;
            return
        end
        %定解方程组    
        disp('定解方程组问题');
        X=A;
        return
    elseif(c>d)%超定方程
        disp('超定方程组问题');
        X=A;
        return
    else
        disp('不定方程问题');
        X=A;
        return
    end
  • 相关阅读:
    学习方法
    仿知乎Android端回答UI
    【LeetCode】:二叉树的Max,Min深度
    LeetCode:二叉树的前、中、后序遍历
    Caffe学习系列(四)之--训练自己的模型
    后端开发--之文件上传
    Python——轻量级web服务器flask的学习
    Django 部署(Apache下)
    Caffe学习系列(三)Docker安装及一些问题的记录
    Caffe学习系列(二)Caffe代码结构梳理,及相关知识点归纳
  • 原文地址:https://www.cnblogs.com/vanker/p/4252950.html
Copyright © 2011-2022 走看看