牛顿切线法及二分法.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
牛顿切线法及二分法

牛顿迭代法?matlab程序 1.功能 本程序采用牛顿法,求实系数高次代数方程 f(x)=a0xn+a1xn-1+…+an-1x+an=0 (an≠0)    (1) 的在初始值x0附近的一个根。 2.使用说明 (1)函数语句 Y=NEWTON_1(A,N,X0,NN,EPS1) 调用M文件newton_1.m。 (2)参数说明 A???? n+1元素的一维实数组,输入参数,按升幂存放方程系数。 N  整变量,输入参数,方程阶数。 X0????实变量,输入参数,初始迭代值。 NN 整变量,输入参数,允许的最大迭代次数。 EPS1 实变量,输入参数,控制根的精度。 3.方法简介 解非线性议程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数 f(x)=f(x0)+(x-x0)fˊ(x0)+(x-x0)2 +… 取其线性部分,作为非线性方程f(x)=0的近似方程,则有 f(x0)+fˊ(x0)(x-x0)=0 设fˊ(x0)≠0则其解为 x1=x0-f(x0)/fˊ(x0) 再把f(x)在x1附近展开成泰勒级数,也取其线性部分作f(x)=0的近似方程。若f(x1)≠0,则得 x2=x1-f(x1)/fˊ(x1) 这样,得到牛顿法的一个迭代序列 xn+1=xn-f(xn)/fˊ(xn) 4.newton_1.m程序 function y=newton_1(a,n,x0,nn,eps1) x(1)=x0; b=1; i=1; while(abs(b)eps1*x(i)) i=i+1; x(i)=x(i-1)-n_f(a,n,x(i-1))/n_df(a,n,x(i-1)); b=x(i)-x(i-1); if(inn)error(ˊnn is fullˊ); return; end end y=x(i); i 程序中调用的n_f.m和n_df.m文件如下: function y=n_df(a,n,x)%方程一阶导数的函数 y=0.0; for i=1:n y=y+a(i)*(n+1-i)*x^(n-i); end function y=n_df(a,n,x) y=0.0; for i=1:n y=y+a(i)*(n+1-i)*x?(n-i); end 5.程序附注 (1)程序中调用n_f.m和n_df.m文件。n_f.m是待求根的实数代数方程的函数,n_df.m是方程一阶导数的函数。由使用者自己编写。 (2)牛顿迭代法的收敛速度:如果f(x)在零点附近存在连续的二阶微商,ξ是f(x)的一个重零点,且初始值x0充分接近于ξ,那么牛顿迭代是收敛的,其收敛速度是二阶的,即平方收敛速度。 6.例题 用牛顿法求下面方程的根 f(x)=x3+2x2+10x-20 7.运行结果 a=[1,2,10,-20] ; n=3; x0=1; nn=1000; eps1=1e-8; y=newton_1(a,n,x0,nn,eps1) y= 1.368808107821373e+000 i= 6 百度知道给的结果function test clear clc %实验方程:3*x.^2+x+2*exp(x)=0 %原函数f =@(x)3*x.^2+x-2*exp(x); %导函数 df=@(x)6*x+1-2*exp(x); %原函数在[-1 0]上的图像(有根范围) fplot(f,[-1 0]) hold on %牛顿切线法 [x1,n1]=fnewton(f,df,-0.5); disp(sprintf(牛顿切线法\n在%f附近的根:%f\n迭代次数:%d,-0.5,x1,n1)) %二分法[x2,n2]=f2fen(f,-1,0); disp(sprintf(二分法\n在[%f,%f]上的根:%f\n迭代次数:%d,-1,0,x2,n2)) plot(x1,f(x1),xr,x2,f(x2),+g) %-------------牛顿切线法--------------- function [x,n]=fnewton(f,df,x0) x=x0;%初值 delta=1; n=0;%迭代次数,下同 while abs(delta)1e-6 delta=f(x)/df(x); x=x-delta; n=n+1; end end %--------------二分法-------------- function [x,n]=f2fen(f,a,b) xab=[a;b];%两个端点值 ab=sign(f(xab)

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档