当前位置:首页 > 计算方法实验指导书
end
%开始计算, 先赋初值
index=1; det=1; x=zeros(n,1); for k=1:n-1 %选主元 a_max=0 for i=k:n
if abs(A(i,k))>a_max a_max=abs(A(i,k)); r=i; end end
if a_max< 1e-10 index=0; return; end %交换两行 if r>k for j=k:n
z=A(k,j);A(k,j)=A(r,j);A(r,j)=z; end %消元过程 for i=k+11:H
m=A(i,k)/A(k,L); for i=k十1:n m=A(i,k)/A(k,k); for j=k+1:n
A(i,j)=A(i,j)-m*A(k,j); end
b(i)=b(i)-m*b(k); end
det=det*A(k,k);
8
end
det=det*A(n,n); % 回代过程
if abs(A(n,n))<1e-10 index=0;return; end
for k=n:-1:1 for j=k+1:n
b(k)=b(k)-A(k,j)*x(j) end
x(k)=b(k)/A(k,k) end
练习题1:用列主元法求解线性方程组
?123??x1??1??456??x???1? ???2?????780????x3????1??注意:在Matlab函数中,求解线性方程组的命令非常简单。只需使用矩阵除法。如X=A\\b,或利用矩阵的逆X=inv(A)*b。而求行列式的函数为det(A).请同学自行比较计算结果。 练习题2:编写Matlab程序,求列矩阵的LU分解。
?123??456? ????780??
三、实验要求
要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。
上机过程中由指导老师检查结果后方可做其他内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。
9
实验四 线性方程组的迭代解法
一、 实验目的
(1) 学会用Jacobi迭代法、Gauss- Seidel迭代法和超松弛迭代法求线性方程组解 (2) 学会对各种迭代法作收敛性分析,研究求方程组解的最优迭代方法. (3) 按照题目要求完成实验内容,写出相应的Matlab程序,给出实验结果.(4) 对实验结果进行分析讨论. (5) 写出相应的实验报告.
二、实验内容
1.熟悉Jacobi迭代法,并编写Matlab程序 matlab程序
按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m) function[x,k,index]=Jacobi(A,b,ep,it_max) % 求解线性方程组的Jacobi迭代法,其中, % A为方程组的系数矩阵; % b为方程组的右端项;
% ep为精度要求,缺省值1e-5;
% it_max为最大选代次数,缺省值100; % x为方程组的解; % k为迭代次数;
% index为指标变量 index=1表示迭代收敛到指定要求, % , index=0表示迭代失败. if nargin<4 it_max=100;end if nargin<3 ep=1e-5;end n=length(A);k=0;
x=zeros(n,1);y=x;index=1; while l
for i=1:n y(i)=b(i)
for j=1:n if j = i
y(i)=y(i)-A(i,j)*x(j); end
10
end
if abs(A(i,i))<1e-10|k== it_max index=0; return; end
y(i)=y(i)/A(i,i); end
if norm(y-x,inf) e=y;k=k+1; end 2. 熟悉Gauss-Seidel迭代法,并编写Matlab程序 3.练习 练习题1. 用Jacobi迭代法求方程组 ?430??x1??24??33?1??x???30? ???2?????0?14????x3?????24??的解。 练习题2. 用Gauss-Seidel迭代法求解上题的线性方程组,取x(0)?(0,0,0)T,??10?5。 三、实验要求 要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。上机过程中由指导老师检查结果后方可做其他内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。 11
共分享92篇相关文档