计算方法上机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. / 《计算方法》上机实验报告
班级:XXXXXX
小组成员:XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
任课教师:XXX
二〇一八年五月二十五日
前言
通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。
以下为本次上机实验报告,按照实验内容共分为六部分。
实验一:
一、实验名称及题目: Newton 迭代法
例2.7(P38):应用Newton 迭代法求在附近的数
值解,并使其满足.
二、解题思路:
设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交
点的横坐标)
(')
(0001x f x f x x -
=,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标)
(')
(1112x f x f x x -
=称2x 为'x 的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把)
(')
(1n n n n x f x f x x -
=+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。
三、Matlab 程序代码:
function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1;
f1=diff(f);%求导 y=subs(f,z,x0);
y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1;
while abs(x1-x0)>=tol x0=x1;
y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end
x=double(x1) K
四、运行结果:
实验二:
一、实验名称及题目:
Jacobi 迭代法
例3.7(P74):试利用Jacobi 迭代公式求解方程组
要求数值解
为方程组的精确解. 二、解题思路:
首先将方程组中的系数矩阵A 分解成三部分,即:U D L A ++=,D 为对角阵,L 为下三角矩阵,U 为上三角矩阵。
之后确定迭代格式,f X B X k k +=+)()1(*,( ⋅⋅⋅=2,1,0k , k 即迭代次数),B 称为迭代矩阵。
最后选取初始迭代向量)0(X ,开始逐次迭代。最后验证精度。(迭代阵:b D UX
D X
k k
1
)
(1)
1(--++-=。)
雅克比迭代法的优点明显,计算公式简单,每迭代一次只需计算
一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间较大。
三、Matlab程序代码:
function jacobi(A,b,x0,eps,x1)
D = diag(diag(A));%求A的对角矩阵
L = -tril(A,-1);%求A的下三角矩阵
U = -triu(A,1);%求A的上三角矩阵
B = D\(L+U);
f = D\b;
x = B*x0+f;
n = 1;%迭代次数
while norm(x-x1)>=eps
x = B*x+f;
n = n+1;
end
format long
n
x
jingdu=norm(x-x1)
四、运行结果:
实验三:
一、实验名称及题目:
Gauss-Seidel 迭代法
例 3.8(P75):试利用Gauss-Seidel 迭代公式求解方程组
,并使其数值解
为方程组的精确解. 二、解题思路:
Gauss-Seidel 迭代法与Jacobi 迭代法思路相近,首先将方程组中的系数矩阵A 分解成三部分,即:U D L A ++=,D 为对角阵,L 为下三角矩阵,U 为上三角矩阵。之后确定迭代格式,f X B X k k +=+)()1(*,( ⋅⋅⋅=2,1,0k , k 即迭代次数),B 称为迭代矩阵。最后选取初始迭代向量0X ,开始逐次迭代。最后验证精度。(迭代阵:
b L D UX
L D X
k k
1
)
(1)
1()()(--++++-=。)
Gauss-Seidel 迭代法与Jacobi 迭代法相比速度更快,但不全如此。有例子表明:Gauss-Seidel 迭代法收敛时,Jacobi 迭代法可能不收敛;而Jacobi 迭代法收敛时,Gauss-Seidel 迭代法也可能不收敛。 三、Matlab 程序代码:
function gauss_seidel(A,b,x0,eps,x1) D = diag(diag(A));%求A的对角矩阵L = -tril(A,-1);%求A的下三角矩阵
U = -triu(A,1);%求A的上三角矩阵B = (D-L)\U;
f = (D-L)\b;
x = B*x0+f;
n = 1;%迭代次数
while norm(x1-x)>=eps
x = B*x+f;
n = n+1;
end
format long
n
x
jingdu=norm(x1-x)
四、运行结果:
实验四:
一、实验名称及题目:
Lagrange 插值法