概述
用Matlab写脚本求解线性方程组,让大家拥有一个线性方程组计算器
有句话说的好:一个合格的程序员,不会写出“摧毁地球”的方法。他会写一个方法叫“摧毁行星”,然后把地球作为参数传进去。
所以我们来求解线性方程组也不能L仅仅满足把它求出来就行了,我们还要让用户即使不会编程也能轻松利用我们的程序求解线性方程组。
比如这样:
下面我们来详细看看怎么实现吧!
齐次线性方程组
接下来就看看我们的代码吧~
% 把系数矩阵给写了
A=[1 1 -1 -1;
2 2 0 1;
1 1 1 2]
% A=[1,1;2,3;3,4]
% A=[1 2 1 -1;3 6 -1 -3]
% 把系数矩阵的秩求出来
Rank_A=rank(A)
[m,n]=size(A)
if(Rank_A<n)
% 秩小于未知量的个数,方程组有无穷解
% 计算基础解系
disp("方程组的基础解系为:")
z=null(A,'r')
elseif(Rank_A==n)
disp("方程组只有零解")
z=repmat(0,n,1)
end
这是结果,还是很直观的呢
非齐次线性方程组
看看我们的代码吧
% 系数矩阵和增广矩阵
A=[1 2 3;
2 -1 -1;
1 -2 -2]
b=[2;1;-1];
Ab=[A,b]
[m,n]=size(A)
Rank_A=rank(A)
Rank_Ab=rank(Ab)
if(Rank_A==Rank_Ab)
if(Rank_A==n)
disp("方程组有唯一解")
x=Ab
elseif(Rank_A<n)
disp("方程组有无穷多解")
% 求基础解系
disp("基础解系为:")
z=null(A,'r')
% 求一个特解
disp("一个特解为:")
X=pinv(A)*b
end
else
disp("此方程组无解")
end
%演算一下下,如果为0,就是对的
AX_b=A*X-b
这个结果也很直观
接下来就要让不会变成的小白也拥有一个求解线性方程组的程序了~
上代码
clear;clc
flag=input("亲想算齐次的还是非齐次的呀( ̄︶ ̄)↗ (齐次扣'1',非齐次扣'2'),请输入:");
if(flag==1)
A=input("请亲输入系数矩阵:");
Rank_A=rank(A);
[m,n]=size(A);
if(Rank_A<n)
% 秩小于未知量的个数,方程组有无穷解
% 计算基础解系
disp("方程组的基础解系为:")
z=null(A,'r')
elseif(Rank_A==n)
disp("方程组只有零解")
z=repmat(0,n,1)
end
elseif(flag==2)
A=input("请亲输入系数矩阵:");
b=input("请亲输入常数项列向量:");
Ab=[A,b];
[m,n]=size(A);
Rank_A=rank(A);
Rank_Ab=rank(Ab);
if(Rank_A==Rank_Ab)
if(Rank_A==n)
disp("方程组有唯一解")
x=Ab
elseif(Rank_A<n)
disp("方程组有无穷多解")
% 求基础解系
disp("基础解系为:")
z=null(A,'r')
% 求一个特解
disp("一个特解为:")
X=pinv(A)*b
end
else
disp("此方程组无解")
end
else
disp("亲,你怎么输错了!╰(‵□′)╯")
end
谢谢大家的观看~
最后
以上就是自觉芝麻为你收集整理的用Matlab写脚本求解线性方程组,让大家拥有一个线性方程组计算器的全部内容,希望文章能够帮你解决用Matlab写脚本求解线性方程组,让大家拥有一个线性方程组计算器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复