- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
消元法实验报告16
西京学院数学软件实验任务书
课程名称 数学软件实验 班级 *** 学号 *** 姓名 *** 实验课题 线性方程组直接三角分解法(Doolittle分解,Grout分解),平方根法(Cholesky分解,LDLT分解) 实验目的 熟悉线性方程组直接三角分解法(Doolittle分解,Grout分解),平方根法(Cholesky分解,LDLT分解) 实验要求 运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成 实验内容 线性方程组直接三角分解法(Doolittle分解,Grout分解)
线性方程组平方根法(Cholesky分解,LDLT分解) 成绩 教师
实验报告
实验名称:Doolittle分解,Grout分解,平方根法Cholesky分解,LDLT分解
实验目的:线性方程组直接三角分解法
实验要求:求线性方程组的解
试验流程:
输入所要求解的增广矩阵
用函数调用处理矩阵
输出方程组的解
实验工具:matlab软件
实验原理:用matlab软件先编译SolveDownTriangle和SolveUpTriangle程序其中两个程序都是对矩阵的处理;
Doolittle分解,Grout分解,平方根法Cholesky分解,LDLT分解都调用他们两个函数进行增广矩阵的处理
实验步骤:
程序一: %SolveUpTriangle
function x=SolveUpTriangle(A,b)
N=size(A);
n=N(1);
for i=n:-1:1
if(1n)
s=A(i,(i+1):n)*x((i+1):n,1);
eals
s=0;
end
x(i,1)=(b(i)-s)/A(i,i);
end
程序二:
%SolveDownTriangle
function x=SloveDownTriang(A,b)
N=size(A);
n=N(1);
for i=1:n
if(i1)
s=A(i,1:(i-1))*x(1:(i-1),1);
else
s=0;
end
x(i,1)=(b(i)-s)/A(i,i);
end
程序三:
% Grout分解
function [x,L,U]=Crout(A,b)
N=size(A);
n=N(1);
L=zeros(n,n);
U=eye(n,n);
L(1:n,1)=A(1:n,1)
U(1,1:n)=A(1,1:n)/L(1,1);
for k=2:n
L(i,k)=A(i,k)-L(i,1:(k-1))*U(1:(k-1),k);
end
for j=(k+1):n
U(k,j)=(A(k,j)-L(k,1:(k-1))*U(1:(k-1),j))/L(k,k);
end
end
y=SolveDownTriangle(L,b);
x=SolveUpTriangle(U,y);
程序四:
% Doolittle分解
function [x,L,U]=Doolittle(A,b)
N=size(A);
n=size(A);
L=eye(n,n);
U=zeros(n,n);
U(1,1:n)=A(1,1:n);
L(1:n,1)=A(1:n,1)/U(1,1);
for k=2:n
for i=k:n
U(k,i)=A(k,i)-L(k,1:(k-1))*U(1:(k-1),i);
end
for j=(k+1):n
L(j,k)=(A(j,k)-L(j,1:(k-1))*U(1:(k-1),k))/U(k,k);
end
end
y=SolveDownTriangle(L,b);
x=SolveUpTriangle(U,y);
程序五:
% Cholesky分解一
function [x,L]=SymPosl (A,b)
N=size(A);
n=N(1);
L(1,1)=sqrt(A(1,1));
L(2:n,1)=A(2:n,1)/L(1,1);
for k=2:n
L(k,k)=sqrt(A(k,k)-L(k,1:(k-1))*transpose(L(k,1:(k-1))))
for i=(k+1):n
L(i,k)=(A(i,k)-L(i,i:(k-1))*transpose(L(k,1:(k-1))))/L(k,k);
end
end
y=SolveDownTriangle(L,b);
x=SolveUpTriangle(transpose(L
文档评论(0)