计算方法实验一

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算方法实验一

1.迭代函数对收敛性的影响

实验目的:初步了解非线性方程的简单迭代法及其收敛性,体会迭代函数对收敛性的影响,知道当迭代函数满足什么条件时,迭代法收敛。

实验内容:用简单迭代法求方程 012)(3=--=x x x f 的根。

方案一: 化012)(3=--=x x x f 为等价方程 )(213x x x φ==

∆+= 方案二: 化012)(3=--=x x x f 为等价方程 )(123

x x x φ==∆-=

实验要求:

(1)分别对方案一、方案二取初值00=x ,迭代10次,观察其计算值,并加以分析。

(2)用MATLAB 内部函数solve 直接求出方程的所有根,并与(1)的结果进行比较。

2. 初值的选取对迭代法的影响

实验目的:通过具体的数值实验,体会选取不同的初值对同一迭代法的影响。 实验内容:用牛顿迭代法求方程 013

=--x x 在x =1.5附近的根。

实验要求:

(1)对牛顿迭代公式: 131231----=+k k k k k x x x x x ,编写程序进行实验,分别取00=x ,5.10=x 迭代10次,观察比较其计算值,并分析原因。

(2)用MATLAB 内部函数solve 直接求出方程的所有根,并与(1)的结果进行比较。

1. 收敛性与收敛速度的比较

实验目的:通过用不同迭代法解同一非线性方程,比较各种方法的收敛性与收敛速度。 实验内容:求解非线性方程 0232=-+-x e x x 的根,准确到10

6-。

实验要求:

(1) 用你自己设计的一种线性收敛的迭代法求方程的根,然后用斯蒂芬森加速迭代计算。输出迭代初值、各次迭代值及迭代次数。

(2)用牛顿迭代法求方程的根,输出迭代初值、各次迭代值及迭代次数,并与(1)的结果比较。

(3)用MATLAB内部函数solve直接求出方程的所有根,并与(1)、(2)的结果进行比较。

相关MATLAB函数提示:

参考程序

function [p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1)

%Input - f is the object function

% - df is the derivative of f

% - p0 is the initial approximation to a zero of f

% - delta is the tolerance for p0

% - epsilon is the tolerance for the function values y

% - max1 is the maximum number of iterations

%Output - p0 is the Newton-Raphson approximation to the zero

% - err is the error estimate for p0

% - k is the number of iterations

% - y is the function value f(p0)

%If f and df are defined as M-file functions use the @ notation

% call [p0,err,k,y]=newton(@f,@df,p0,delta,epsilon,max1).

%If f and df are defined as anonymous functions use the

% call [p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1).

% NUMERICAL METHODS: Matlab Programs

% (c) 2004 by John H. Mathews and Kurtis D. Fink

% Complementary Software to accompany the textbook:

% NUMERICAL METHODS: Using Matlab, Fourth Edition

% ISBN: 0-13-065248-2

% Prentice-Hall Pub. Inc.

% One Lake Street

% Upper Saddle River, NJ 07458

for k=1:max1

p1=p0-f(p0)/df(p0);

err=abs(p1-p0);

relerr=2*err/(abs(p1)+delta);

p0=p1;

y=f(p0);

if (err

相关文档
最新文档