用克拉默法则求非齐次线性方程组

用克拉默法则求非齐次线性方程组

先点击新建脚本,并保存一下,以由

{ 2 x 1 + 3 x 2 + 4 x 3 = 5 3 x 1 + 4 x 2 + x 3 = 3 6 x 1 + x 2 + 3 x 3 = 4 \left\{\begin{array}{c} 2x_1+3x_2+4x_3=5\\ 3x_1+4x_2+x_3=3\\ 6x_1+x_2+3x_3=4\end{array}\right. 2x1+3x2+4x3=53x1+4x2+x3=36x1+x2+3x3=4

方程组为例
首先先将系数矩阵以及右端向量表示出来:

A=[2 3 4;3 4 1;6 1 3];
b=[5 3 4]';

注意,向量 b 需要转置一下

先来求解 x 1 x_1 x1

A1=[b,A(:,2:3)];
x1 =det(A1)/det(A)

这样就可以运行出 x 1 x_1 x1的值了,用此方法再求解出 x 2 x_2 x2 x 3 x_3 x3的值

A2=[A(:,1),b,A(:,3)];
x2 =det(A2)/det(A)
A3=[A(:,1:2),b];
x3 =det(A3)/det(A)

以上便是用克拉默法则求解出所需要求解的非齐次线性方程组了。

注意:因为有些非齐次线性方程组是不适合用克拉默法则求解,所以可以建一个 function 进行判断

function judge(A,b)
%采用函数 judge(A,b)来判断一个非齐次线性方程组能否使用克拉默法则进行求解

if nargin==0||nargin==1  %判断参数个数,只有当参数个数大于等于2时才可以运用,这里的参数是指A和b这两个,而不是指x1,x2这种
    disp('您输入的参数个数不足!')  
    return 
end

[rs,cs]=size(A)  %求系数矩阵A的维度的长度,其中rs是行的长度,cs是列的长度
if rs~=cs
    disp('系数矩阵不是方阵,不能用克拉默法则求解!')
    return  %出错,返回,后续代码不执行
end

D=det(A); %为系数矩阵行列式的值
if D==0
    disp('系数矩阵的行列式值为零!')
    return
end
%以上便是对任一个非齐次线性方程组用克拉默法则求解的判断

end

你可能感兴趣的:(matlab)