一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有MATLAB源程序.比如:x+y+z=1;x+2y+3z=4;5x+6y+7z=8;9x+10y+11z=12;的方程组的解.如果这个方程的秩为4,那么结果怎样,MATLAB程序怎样写
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/23 21:37:40
一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有MATLAB源程序.比如:x+y+z=1;x+2y+3z=4;5x+6y+7z=8;9x+10y+11z=12;的方程组的解.如果这个方程的秩为4,那么结果怎样,MATLAB程序怎样写
一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有MATLAB源程序.
比如:
x+y+z=1;
x+2y+3z=4;
5x+6y+7z=8;
9x+10y+11z=12;
的方程组的解.
如果这个方程的秩为4,
那么结果怎样,
MATLAB程序怎样写,
一个三元一次方程的解法,其中方程数大于三,并说明残差的计算,最好有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
方程组对应的增广矩阵
A=
1,1,1,1
1,2,3,4
5,6,7,8
9,10,11,12
经过初等行变换可以化为
A1=
1,0,-1,-2
0,1,2,3
0,0,0,0
0,0,0,0
rank(A1)=2
令z=k
则x=k-2, y=3-2k ...
全部展开
方程组对应的增广矩阵
A=
1,1,1,1
1,2,3,4
5,6,7,8
9,10,11,12
经过初等行变换可以化为
A1=
1,0,-1,-2
0,1,2,3
0,0,0,0
0,0,0,0
rank(A1)=2
令z=k
则x=k-2, y=3-2k
所以方程组的解为
x=k-2
y=3-2k
z=k
其中k为任意实数
残差不是统计学中的么...和三元一次方程是啥关系?
秩为4时无界.
Matlab的话, 更方便, 前三个组成方程组直接用克莱姆法则, 然后结果代入第四个验算. 因为秩为4, 所以代入以后等式不成立, 方程组无解
收起
好ibl