您的位置:首页 > 编程语言 > MATLAB

用matlab求解线性代数方程

2020-04-01 19:01 1426 查看

用matlab求解线性代数方程

% 功能:线性代数方程求解:AX=B
% 解的判定矩阵:C=[A B]
% 求解方法分三种情况讨论:
% 唯一解:A为非奇异方阵,x=inv(A)*B
% 无穷解:rank(A)=rank©<n
% 基础解系:x1=null(A)
% 特解:x=pinv(A)*B
% 无解:矛盾方程的最小二乘解法

function x=linear_solver(A,B)
C=[A B];
[m,n]=size(A);
d=[rank(A) rank(C)];
if d(1)==d(2)
if d(1)<n
b=['此方程有无穷多解,其中x1为通解,x2为特解'];
sprintf('%s',b)
syms a1 a2;
x1=null(sym(A));
x2=sym(pinv(A))*B;
x=a1*x1(:,1)+a2*x1(:,2)+x2
end
if d(1)==n
b=['此方程有唯一解'];
x=inv(A)*B
end
else
b=['此方程无正常解,求得最小二乘解如下'];
x=pinv(A)*B
end
示例:
A=[1 2 3 4;2 2 1 1;2 4 6 8;4 4 2 2];
B=[1;3;2;6];
ans =
'此方程有无穷多解,其中x1为通解,x2为特解'
x =
2*a1 + 3*a2 + 125/131
96/131 - (7*a2)/2 - (5*a1)/2
a1 - 10/131
a2 - 39/131
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Z_Z_X_1 发布了5 篇原创文章 · 获赞 0 · 访问量 180 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: