计算方法上机实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 插值法

相关文档
最新文档