数值分析上机实习报告
姓名:XX
学号:XX
专业:XX
联系电话:XX
序言
本次实习采用MATLAB程序计算。
MATLAB将数值分析、矩阵运算、图形图像处理、信号处理和仿真等诸多强大的功能集成在较易使用的交互环境中,功能强、效率高。
MATLAB采用人们习惯的数学描述方法,不需要传统的编程语言进行前后处理。
基于上述优点,本次实习采用MATLAB进行运算。
目录
一、实习目的
二、实习内容
用Jacobi迭代法的MATLAB程序
用Gauss-seidel迭代法的MATLAB程序
三、实习总结
实习目的
本次实习目的是提高学生的动手能力和综合实践能力,掌握好电脑的应用上机实习是学生已经学习数值分析课程后进行的,是理论与实践相结合的重要环节,提高学生综合素质具有重要意义。
实习内容
题目:(1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4]; b1=[-3,2,4]', b2=[100,-200,345]',
(2) A行分别为A1=[1,,],A2=[,1,],A3=[,,1];b1=[3,2,1]’, b2=[5,0,-10]’,
(3)A行分别为A1=[1,3],A2=[-7,1];b=[4,6]',
分析上题目,知(1)(2)(3)中的系数矩阵分别表示为A1,A2,A3。
分析知A1行对角占优,Jocobi迭代和Gauss-Seidel迭代均收敛。
A2的Jocobi迭代矩阵, ,故发散。如果用,,,。
A3的Jocobi,Gauss-Seidel迭代矩阵的谱半径为,故Gauss-Seidel迭代也发散。
进行MATLAB编写,过程如下:
用Jacobi迭代法的MATLAB程序
function [x,n]=Jacobi(A,b,x0,eps,varargin)
%求解线性方程组的迭代法,其中,
%A为方程组的系数矩阵
%b为方程组的右端项
%eps为精度要求,缺省值为1e-5
%varargin为最大迭代次数,缺省值为100
%x为方程解
%n为迭代次数
if nargin==3
eps=-6;
M=200;
elseif nargin<3
error
return
elseif nargin==5
M=vargin{1};
end
D=diag(diag(A));
L=tril(A,-1);
U=triu(A,1);
I=eye(length(A));
B=I-inv(D)*A;
f=inv(D)*b;
x=B*x0+f;
n=1;
while norm(x-x0)>=eps
x0=x;
x=B*x0+f;
n=n+1;
if (n>=M)
disp('Warning:迭代次数太多,可能不收敛!');
return;
end
end
(1)在MATLAB命令窗口输入
>>A=[6 2 -1;1 4 -2;-3 1 4];
>>b1=[-3,2,4]';
>>b2=[100,-200,345]';
>>xo=zeros(3,1);
>>[x1,n1]=Jacobi(A,b1,xo)
>>[x2,n2]=Jacobi(A,b2,xo)
回车得到
x1 =
-
n1 =
24
x2 =
-
n2 =
30
(2)在MATLAB命令窗口输入
>>A=[1 ; 1 ; 1];b1=[3 2 1]';b2=[5 0 -10]';
xo=zeros(3,1);
>>[x1,n1]=Jacobi(A,b1,xo)
>>[x2,n2]=Jacobi(A,b2,xo)
回车得到
Warning:迭代次数太多,可能不收敛!
x1 =
+040 *
-
-
-
n1 =
200
Warning:迭代次数太多,可能不收敛!
x2 =
+040 *
n2 =
200
(3)在MATLAB命令窗口输入
>>A=[1 3;-7 1];b=[4 6]';
>>xo=zeros(2,1);
>>[x,n]=Jacobi(A,b,xo)
回
数值分析 来自淘豆网m.daumloan.com转载请标明出处.