%MtriangleDecomposition
%带列主元法的三角分解
%input输入矩阵,包括系数和参数
%inputC 用于分解LU矩阵的合成矩阵
%oringinData保留的初始矩阵
%output 输出答案,对应X的各个值
%Toutput:修正顺序后的答案,对应输入数据的X顺序
%rememberdet:行列变化中介值
%remember:行列变化记录矩阵
%xnum,ynum 输入矩阵的尺寸
%Lneed 消元中,主式需要乘的变量
%keepnum 保留小数位数
%contrastFrom(各个多项式的误差)
%deltanum:矩阵中变化的最大值
%Ldet:分解出来的下矩阵
%Udet:分解出来的上矩阵
%%注意,元素中不能有为零的数
clear all%启用模块化后需要注释该句
input=[0,2,0,1,0;
2,2,3,2,-2;
4,-3,0,1,-7;
6,1,-6,-5,6];%输入矩阵
oringinData=input;
error1='the condition are not meet for using this algorithm' ;
%format short%设置精度 short为精确到小数点后3位 数值型 roundn(A,3)保留3位小数
keepnum=-20;%设置保留n位小数,记得加负号表示小数位
[ynum,xnum]=size(input);%获取输入矩阵大小
Ldet=zeros(ynum);
Udet=zeros(ynum);%创建LU的背景矩阵
inputC=input;
[Ldet,Udet]=lu(input);
%开始解方程组
%回代
for i=1:ynum%这里计算出结果
output(ynum+1-i,1)=roundn(Udet(ynum+1-i,xnum),keepnum)/roundn(Udet(ynum+1-i,xnum-i),keepnum)%output为输出结果
for j=i+1:ynum
%回代结果到多项式中,将其他值消除
if i<ynum
Udet(ynum+1-j,xnum)=roundn(Udet(ynum+1-j,xnum),keepnum)-roundn(Udet(ynum+1-j,xnum-i)*output(ynum+1-i,1),keepnum);
Udet(ynum+1-j,xnum-i)=0;
end
end
end
06-03
2334
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交