数学
一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有MATLAB源程序.比如:x+y+z=1;x+2y+3z=4;5x+6y+7z=8;9x+10y+11z=12;的方程组的解.如果这个方程的秩为4,那么结果怎样,MATLAB程序怎样写,

2019-05-07

一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有MATLAB源程序.
比如:
x+y+z=1;
x+2y+3z=4;
5x+6y+7z=8;
9x+10y+11z=12;
的方程组的解.
如果这个方程的秩为4,
那么结果怎样,
MATLAB程序怎样写,
优质解答
les.m文件:
function [x,res]=les(A,b)
% [x,res]=les(A,b)
% 解线性方程组,A为未知数系数矩阵,b为常数项列向量.
% 返回值,若解不唯一,返回基础解系,若无解,返回残差最小的一组特例.
% res为残差.
b=b(:); % 化成列向量
n=min(size(A,1),length(b)); % 求方程个数
A=A(1:n,:); b=b(1:n); % 去掉多余行
B=[A,b]; % 构成增广矩阵
ra=rank(A);
rb=rank(B); % 求秩
if ra==rb & ra==n % rank(A)=rank(B)=n %有唯一解
x=A\b;
res=norm(b-A*x)/norm(b); % 若res
les.m文件:
function [x,res]=les(A,b)
% [x,res]=les(A,b)
% 解线性方程组,A为未知数系数矩阵,b为常数项列向量.
% 返回值,若解不唯一,返回基础解系,若无解,返回残差最小的一组特例.
% res为残差.
b=b(:); % 化成列向量
n=min(size(A,1),length(b)); % 求方程个数
A=A(1:n,:); b=b(1:n); % 去掉多余行
B=[A,b]; % 构成增广矩阵
ra=rank(A);
rb=rank(B); % 求秩
if ra==rb & ra==n % rank(A)=rank(B)=n %有唯一解
x=A\b;
res=norm(b-A*x)/norm(b); % 若res
相关问答