作业帮 > 数学 > 作业

一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有MATLAB源程序.

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/21 14:13:40
一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有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