- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;endendy=x(i);i程序中调用的n_f.m和n_df.m文件如下:function y=n_df(a,n,x)%方程一阶导数的函数y=0.0;for i=1:ny=y+a(i)*(n+1-i)*x^(n-i);endfunction y=n_df(a,n,x)y=0.0;for i=1:ny=y+a(i)*(n+1-i)*x?(n-i);end5.程序附注(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+000i=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)