牛顿迭代法实验.docVIP

  • 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)

1亿VIP精品文档

相关文档