- 26
- 0
- 约4.47千字
- 约 8页
- 2016-08-22 发布于河南
- 举报
牛顿迭代法实验
一、牛顿—迭代法迭代程序
1.M文件
function [p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1)
%Input - f is the object function input as a string f
% - df is the derivative of f input as a string df
% - 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)
% 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-feval(f,p0)/feval(df,p0);
err=abs(p1-p0);
relerr=2*err/(abs(p1)+delta);
p0=p1;
y=feval(f,p0);
if (errdelta)|(relerrdelta)|(abs(y)epsilon),break,end
end
应用牛顿-拉夫森迭代程序求函数的二重根p=1,这里p0=1.2。
法一:直接在命令窗口中输入函数
命令窗口
clear
f=inline(x^3-3*x+2)
f =
Inline function:
f(x) = x^3-3*x+2
df=inline(3*x^2-3)
df =
Inline function:
df(x) = 3*x^2-3
delta=1e-10;
epsilon=1e-10;
epsilon=1e-10;
max1=10;
p0=1.2;
[p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1);按回车键得
p0 =
1.0002
err =
2.0802e-004
k =
10
y =
1.2987e-007
法二:函数以M文件形式输入
M文件
1) function y=f(x)
y=x^3-3*x+2;
令存为f.m
2) function dy=df(x)
dy=3*x^2-3;
令存为df.m
命令窗口
p0=1.2;
max1=10;
delta=1e-10;
epsilon=1e-10;
[p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1)
[p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1)
p0 =
1.0002
err =
2.0802e-004
k =
10
y =
1.2987e-007
P69页3.(b)
clear
f=inline(x^2-91)
f =
Inline function:
f(x) = x^2-91
df=inline(2*x)
df =
Inline function:
df(x) = 2*x
[p0,err,k,y]=newton(f,df,10,1e-10,1e-10,100)
原创力文档

文档评论(0)