1.功能 本程序采用牛顿法,求实系数高次代数方程 f(x)=a0xn+a1xn-1+…+an-1x+an=0 (an≠0) (1) 的在初始值x0附近的一个根。 2.使用说明 (1)函数语句 Y=NEWTON_1(A,N,X0,NN,E PS1)调用M文件newton_1.m。 (2)参数说明 An+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(i>nn)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-207.运行结果 >>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 |
牛顿迭代法matlab程序_short 牛顿迭代法c语言程序
更多阅读
使用Visual C++6.0编写简单C语言程序入门教程 visual c 编写c语言
使用Visual C++6.0编写简单C语言程序入门教程——简介本教程适用于C语言初学者,使用VC++6.0编写简单的程序。Visual C++6.0作为学习C语言的编程工具在合适不过了,工具比较简洁,容易上手。下面我将一步步带领大家一步步操作,教会大家如何
单片机C语言程序设计实训100例——基于PIC+Proteus仿真 pic单片机c语言教程
书名:单片机C语言程序设计实训100例——基于PIC+Proteus仿真作者:彭伟定价:88出版日期:2011-12内容简介:本书基础设计类案例涵盖PIC单片机最基本的端口编程、定时/计数器应用、中断程序设计、A/D转换、
C语言程序设计第三版谭浩强课后习题答案
1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“”);printf(“Very
Floyd最短路算法的MATLAB程序 遗传算法matlab程序
Floyd最短路算法的MATLAB程序%floyd.m%采用floyd算法计算图a中每对顶点最短路%d是矩离矩阵%r是路由矩阵function[d,r]=floyd(a)n=size(a,1);d=a;fori=1:n
强烈推荐--单片机C语言程序设计师试题 南通单片机c语言
强烈推荐--单片机C语言程序设计师试题:转帖供大家学习 填空题1、设X=5AH,Y=36H,则X与Y“或”运算为__7EH_______,X与Y的“异或”运算为___6CH_____。2、若机器的字长