计算方法 课内实验 解线性方程组的直接方法和迭代法.doc
文本预览下载声明
《计算方法》课内实验报告
学生姓名: 张学阳 1009300132 及 学 号: 学 院: 理学院 班 级: 数学101 课程名称: 计算方法 实验题目: 解线性方程组的直接方法和迭代法 指导教师
姓名及职称: 宋云飞 讲 师 朱秀丽 讲 师 尚宝欣 讲 师
2012年12月10日
目 录
一、实验题目 1
二、实验目的 1
三、实验内容 1
四、实验结果 2
五、实验体会或遇到问题 8
一、实验题目
解线性方程组的直接方法和迭代法
二、实验目的
1.2.3.1..
输出中系数分解法的矩阵及,解向量及;列主元法的行交换次序,解向量及;比较两种方法所得的结果.
2.的及为
则解.用Matlab内部函数求及的所有特征值和若令
,
求解,输出向量和,从理论结果和实际计算两方面分析线性方程组解的相对误差及的相对误差的关系。
3.,其中系数矩阵为希尔伯特矩阵:
,
假设,若取,分别用雅可比迭代法及SOR迭代法求解,比较计算结果。
四、实验结果
1.文件程序:
function hl=zhjLU(A,b)
[n n] =size(A); RA=rank(A);
if RA~=n
disp(请注意:因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下), RA,hl=det(A);
return
end
if RA==n
for p=1:n
h(p)=det(A(1:p, 1:p));
end
hl=h(1:n);
for i=1:n
if h(1,i)==0
disp(请注意:因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:), hl;RA
return
end
end
if h(1,i)~=0
disp(请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:)
for j=1:n
U(1,j)=A(1,j);
end
for k=:n
for i=2:n
for j=2:n
L(1,1)=1;L(i,i)=1;
if ij
L(1,1)=1;L(2,1)=A(2,1)/U(1,1); L(i,1)=A(i,1)/U(1,1);
L(i,k)=(A(i,k)- L(i,1:k-1)*U(1:k-1,k))/U(k,k);
else
U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);
end
end
end
end
hl;RA,U,L
end
end
文件程序:
function [RA,RB,n,X]=liezhu(A,b)
B=[A b]; n=length(b); RA=rank(A);
RB=rank(B);zhica=RB-RA;
if zhica0,
disp(请注意:因为RA~=RB,所以此方程组无解.)
return
end
if RA==RB
if RA==n
disp(请注意:因为RA=RB=n,所以此方程组有唯一解.)
X=zeros(n,1); C=zeros(1,n+1);
for p= 1:n-1
[Y,j]=max(abs(B(p:n,p))); C=B(p,:);
B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;
for k=p+1:n
m= B(k,p)/ B(p,p);
B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);
end
end
b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
else
disp(请注意:因为RA=RBn,所以此方程组有无穷多解.)
end
end
窗口输入输出
A=[10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 1 0 2];
b=[8 5.9000001 5 1];
zhjLU(A,b)
请注意:因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:
RA =4
%U矩阵
U =
10.0000 -7.0000 0 1.0000
显示全部