MATL新编计算方法迭代法牛顿法二分法实验报告

MATL新编计算方法迭代法牛顿法二分法实验报告
MATL新编计算方法迭代法牛顿法二分法实验报告

M A T L新编计算方法迭代法

牛顿法二分法实验报告 Prepared on 22 November 2020

姓名 实验报告成绩

评语:

指导教师(签名)

年 月 日

说明:指导教师评分后,实验报告交院(系)办公室保存。

实验一 方程求根

一、 实验目的

用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。

二、 实验原理

(1)、二分法

对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点

2a b x -=判断是否0)(=x f ;若是,则有根2a

b x -=。否则,继续判断是否0)()(

若是,则令x b =,否则令x a =。否则令x a =。重复此过程直至求出方程0)(=x f 在[a,b]中的近似根为止。

(2)、迭代法

将方程0)(=x f 等价变换为x =ψ(x )形式,并建立相应的迭代公式

=+1k x ψ(x )。

(3)、牛顿法

若已知方程 的一个近似根0x ,则函数在点0x 附近可用一阶泰勒多项

式))((')()(0001x x x f x f x p -+=来近似,因此方程0)(=x f 可近似表示为

+)(0x f 0))(('0=-x x x f 设0)('0≠x f ,则=x -0x )(')

(00x f x f 。取x 作为原方程新的近似根1x ,然后将1x 作为0x 代入上式。迭代公式为:=+1

k x -0x )(')(k k x f x f 。

三、 实验设备:MATLAB 软件

四、 结果预测 (1)11x = (2)5x = (3)2x =0,09052

五、 实验内容

(1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不

超过3105.0-?。

(2)、取初值00=x ,用迭代公式

=+1k x -0x )(')(k k x f x f ,求方程0210=-+x e x 的近似根。要求误差不超过3105.0-?。

(3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误

差不超过3105.0-?。

六、 实验步骤与实验程序

(1) 二分法

第一步:在MATLAB 软件,建立一个实现二分法的MATLAB 函数文件如下:

function x=agui_bisect(fname,a,b,e)

%fname 为函数名,a,b 为区间端点,e 为精度

fa=feval(fname,a); %把a 端点代入函数,求fa

fb=feval(fname,b); %把b 端点代入函数,求fb

if fa*fb>0 error('两端函数值为同号');

end

%如果fa*fb>0,则输出两端函数值为同号

k=0

x=(a+b)/2

while(b-a)>(2*e) %循环条件的限制

fx=feval(fname,x);%把x代入代入函数,求fx

if fa*fx<0%如果fa与fx同号,则把x赋给b,把fx赋给fb

b=x;

fb=fx;

else

%如果fa与fx异号,则把x赋给a,把fx赋给fa

a=x;

fa=fx;

end

k=k+1

%计算二分了多少次

x=(a+b)/2 %当满足了一定精度后,跳出循环,每次二分,都得新的区间断点a和b,则近似解为x=(a+b)/2

end

第二步:在MATLAB命令窗口求解方程f(x)=e^x+10x-2=0,即输入如下>>fun=inline('exp(x)+10*x-2')

>> x=agui_bisect(fun,0,1,*10^-3)

第三步:得到计算结果,且计算结果为

(2)迭代法

第一步:第一步:在MATLAB 软件,建立一个实现迭代法的MATLAB函数文件如下:

function x=agui_main(fname,x0,e)

%fname为函数名dfname的函数fname的导数, x0为迭代初值

%e为精度,N为最大迭代次数(默认为100)

N=100;

x=x0; %把x0赋给x,再算x+2*e赋给x0

x0=x+2*e;

k=0;

while abs(x0-x)>e&k

k=k+1 %显示迭代的第几次

x0=x;

x=(2-exp(x0))/10 %迭代公式

disp(x)%显示x

end

if k==N warning('已达到最大迭代次数');end %如果K=N则输出已达到最大迭代次数

第二步:在MATLAB命令窗口求解方程f(x)=e^x+10x-2=0,即输入如下>>fun=inline('exp(x)+10*x-2')

>> x=agui_main(fun,0,1,*10^-3)

第三步:得出计算结果,且计算结果为

以下是结果的屏幕截图

(3)牛顿迭代法

第一步:第一步:在MATLAB 软件,建立一个实现牛顿迭代法的MATLAB 函数文件=如下:

function x=agui_newton(fname,dfname,x0,e)

%fname为函数名dfname的函数fname的导数, x0为迭代初值

%e为精度,N为最大迭代次数(默认为100)

N=100;

x=x0; %把x0赋给x,再算x+2*e赋给x0

x0=x+2*e;

k=0;

while abs(x0-x)>e&k

k=k+1 %显示迭代的第几次

x0=x;

x=x0-feval(fname,x0)/feval(dfname,x0);%牛顿迭代公式

disp(x)%显示x

end

if k==N warning('已达到最大迭代次数');end %如果K=N则输出已达到最大迭代次数

第二步:在MATLAB命令窗口求解方程f(x)=e^x+10x-2=0,即输入如下>>fun=inline('exp(x)+10*x-2')

>> dfun=inline('exp(x)+10')

>> x=agui_newton(fun,dfun,0,*10^-3)

第三步:得出结果,且结果为

以下是结果的屏幕截图

七、实验结果

(1)11x= (2)5x= (3)2x=0,09052

八、实验分析与结论

由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=11次,迭代法要迭代k=5次,牛顿

法要迭代k=2次才能达到精度为3105.0-?的要求,而且方程0210=-+x e x 的

精确解经计算,为, 计算量从大到小依次是:二分法,迭代法,牛顿法。由此可知,牛顿法和迭代法的精确度要优越于二分法。而这三种方法中,牛顿法不仅计算量少,而且精确度高。从而可知牛顿迭代法收敛速度明显加快。可是迭代法是局部收敛的,其收敛性与初值x0有关。二分法收敛虽然是速度最慢,但也有自己的优势,可常用于求精度不高的近似根。迭代法是逐次逼近的方法,原理简单,但存在收敛性和收敛速度的问题。对与不同的题目,可以从三种方法的优缺点考虑用哪一种方法比较好。

数值计算方法比较

有限差分方法(FDM:Finite Difference Method)是计算机数值模拟最早采用的方法,至今仍被广泛运用。该方法将求解域划分为差分网格,用有限个网格节点代替连续的求解域。有限差分法以Taylor级数展开等方法,把控制方程中的导数用网格节点上的函数值的差商代替进行离散,从而建立以网格节点上的值为未知数的代数方程组。有限差分法主要集中在依赖于时间的问题(双曲型和抛物型方程)。有限差分法方面的经典文献有Richtmeyer & Morton的《Difference Methods for Initial-Value Problems》;R. LeVeque《Finite Difference Method for Differential Equations》;《Numerical Methods for C onservation Laws》。 注:差分格式: (1)从格式的精度来划分,有一阶格式、二阶格式和高阶格式。 (2)从差分的空间形式来考虑,可分为中心格式和逆风格式。 (3)考虑时间因子的影响,差分格式还可以分为显格式、隐格式、显隐交替格式等。 目前常见的差分格式,主要是上述几种形式的组合,不同的组合构成不同的差分格式。差分方法主要适用于有结构网格,网格的步长一般根据实际地形的情况和柯朗稳定条件来决定。 构造差分的方法: 构造差分的方法有多种形式,目前主要采用的是泰勒级数展开方法。其基本的差分表达式主要有三种形式:一阶向前差分、一阶向后差分、一阶中心差分和二阶中心差分等,其中前两种格式为一阶计算精度,后两种格式为二阶计算精度。通过对时间和空间这几种不同差分格式的组合,可以组合成不同的差分计算格式。 有限差分法的不足:由于采用的是直交网格,因此较难适应区域形状的任意性,而且区分不出场函数在区域中的轻重缓急之差异,缺乏统一有效的处理自然边值条件和内边值条件的方法,难以构造高精度(指收敛阶)差分格式,除非允许差分方程联系更多的节点(这又进一步增加处理边值条件韵困难)。另外它还有编制不出通用程序的困难。 有限差分法的优点:该方法是一种直接将微分问题变为代数问题的近似数值解法,数学概念 直观,表达简单,精度可选而且在一个时间步内,对于一个给定点来说其相关的空间点只是 与该相邻的几点,而不是全部的空间点。是发展较早且比较成熟的数值方法 广义差分法(有限体积法)(GDM:Generalized Difference Method):1953年,Mac—Neal 利用积分插值法(也称积分均衡法)建立了三角网格上的差分格 式,这就是以后通称的不规划网格上的差分法.这种方法的几何误差小,特别是给出了处理自然边值条件(及内边值条件)的有效方法,堪称差分法的一大进步。1978年,李荣华利用有限元空间和对偶单元上特征函数的推广——局部Taylor展式的公项,将积分插值法改写成广义Galerkin法形式,从而将不规则网格差分法推广为广义差分法.其基本思路是,将计算区域划分为一系列不重复的控制体积,并使每个网格点周围有

大学物理仿真实验报告牛顿环法测曲率半径

大学物理仿真实验报告-牛顿环法测曲率半径

————————————————————————————————作者: ————————————————————————————————日期:

大学物理仿真实验报告 实验名称 牛顿环法测曲率半径 班级: 姓名: 学号: 日期:

牛顿环法测曲率半径 实验目的 1.学会用牛顿环测定透镜曲率半径。 2.正确使用读书显微镜,学习用逐差法处理数据。 实验原理 如下图所示,在平板玻璃面DCF上放一个曲率半径很大的平凸透镜ACB,C点为接触点,这样在ACB和DCF之间,形成一层厚度不均匀的空气薄膜,单色光从上方垂直入射到透镜上,透过透镜,近似垂直地入射于空气膜。分别从膜的上下表面反射的两条光线来自同一条入射光线,它们满足相干条件并在膜的上表面相遇而产生干涉,干涉后的强度由相遇的两条光线的光程差决定,由图可见,二者的光程差等于膜厚度e的两倍。此外,当光在空气膜的上表面反射时,是从光密媒质射向光疏媒质,反射光不发生相位突变,而在下表面反射时,则会发生相位突变,即在反射点处,反射光的相位与入射光的相位之间相差π,与之对应的光程差为λ/2 ,所以相干的两条光线还具有λ/2的附加光程差,总的光程差为 (1) 当?满足条件(2) 时,发生相长干涉,出现第K级亮纹,而当 (k = 0,1,2…) (3) 时,发生相消干涉,出现第k级暗纹。因为同一级条纹对应着相同的膜厚,所以干涉条纹是一组等厚度线。可以想见,干涉条纹是一组以C点为中心的同心圆,这就是所谓的牛顿环。 如图所示,设第k级条纹的半径为,对应的膜厚度为,则

(4) 在实验中,R的大小为几米到十几米,而的数量级为毫米,所以R>> ek,ek 2相对于2Re 是一个小量,可以忽略,所以上式可以简化为 k (5) 如果rk是第k级暗条纹的半径,由式(1)和(3)可得 (6) 代入式(5)得透镜曲率半径的计算公式 (7) 对给定的装置,R为常数,暗纹半径 (8) 和级数k的平方根成正比,即随着k的增大,条纹越来越细。 同理,如果r k是第k级明纹,则由式(1)和(2)得 (9) 代入式(5),可以算出 (10)

牛顿迭代法

牛顿迭代法 李保洋 数学科学学院信息与计算科学学号:060424067 指导老师:苏孟龙 摘要:牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,即牛顿迭代法.迭代法是一种不断用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“牛顿迭代法”属于近似迭代法,本文主要讨论的是牛顿迭代法,方法本身的发现和演变和修正过程,避免二阶导数计算的Newton迭代法的一个改进,并与中国古代的算法,即盈不足术,与牛顿迭代算法的比较. 关键词:Newton迭代算法;近似求解;收敛阶;数值试验;中国古代数学; 九章算术;Duffing方程;非线性方程;收敛速度;渐进性 0 引言: 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“二分法”和“牛顿迭代法”属于近似迭代法. 迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值.具体使用迭代法求根时应注意以下两种可能发生的情况: (1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制. (2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败. 所以利用迭代算法解决问题,需要做好以下三个方面的工作: 1、确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2、建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 3、对迭代过程进行控制,在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地重复执行下去.迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定.对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件. 1牛顿迭代法:

MAAB计算方法迭代法牛顿法二分法实验报告

姓名 实验报告成绩 评语: 指导教师(签名) 年 月 日 说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点 2a b x -=判断是否0)(=x f ;若是,则有根2a b x -=。否则,继续判断是否0)()(

+)(0x f 0))(('0=-x x x f 设0)('0≠x f ,则=x -0x )(') (00x f x f 。取x 作为原方程新的近似根1x ,然后将1x 作为0x 代入上式。迭代公式为:=+1 k x -0x )(')(k k x f x f 。 三、 实验设备:MATLAB 软件 四、 结果预测 (1)11x = (2)5x = (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不超 过3105.0-?。 (2)、取初值00=x ,用迭代公式=+1 k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的近似根。要求误差不超过3105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误差 不超过3105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 软件,建立一个实现二分法的MATLAB 函数文件如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end

等厚干涉牛顿环实验报告材料97459

等厚干涉——牛顿环 等厚干涉是薄膜干涉的一种。薄膜层的上下表面有一很小的倾角是,从光源发出的光经上下表面反射后在上表面附近相遇时产生干涉,并且厚度相同的地方形成同一干涉条纹,这种干涉就叫等厚干涉。其中牛顿环是等厚干涉的一个最典型的例子,最早为牛顿所发现,但由于他主张微粒子学说而并未能对他做出正确的解释。光的等厚干涉原理在生产实践中育有广泛的应用,它可用于检测透镜的曲率,测量光波波长,精确地测量微笑长度、厚度和角度,检验物体表面的光洁度、平整度等。 一.实验目的 (1)用牛顿环观察和分析等厚干涉现象; (2)学习利用干涉现象测量透镜的曲率半径; 二.实验仪器 读数显微镜钠光灯牛顿环仪

三. 实验原理 牛顿环装置是由一块曲率半径较大的平凸面放在一块光学玻璃平板(平镜)上构成的,如图。平凸透镜的凸面与玻璃平板之间的空气层厚度从中心到边缘逐渐增加,若以平行单光垂直照射到牛顿环上,则经空气层上、下表面反射的两光束存在光程差,他们在平凸透镜的凸面相遇后,将发生干涉。从透镜上看到的干涉花样是以玻璃接触点为中心的一系列明暗相间的圆环,称为牛顿环。同一干涉环上各处的空气层厚度是相同的,因此他属于等厚干涉。 图2 图3 由图2可见,若设透镜的曲率半径为R ,与接触点O 相距为r 处空气层的厚度为d ,其几何关系式为 2222222)(r d Rd R r d R R ++-=+-= 由于r R >>,可以略去d 2得

R r d 22 = (1) 光线应是垂直入射的,计算光程差时还要考虑光波在平玻璃上反射会有半波损失,,从而带来2λ的附加程差,所以总光程差为 2 2λ + =?d (2) 所以暗环的条件是 2 ) 12(λ +=?k (3) 其中 3,2,1,0=k 为干涉暗条纹的级数。综合(1)(2)(3)式可得第可k 级暗环的半径为 λkR r k =2 (4) 由式(4)可知,如果单色光源的波长λ已知,测出第m 级的暗环半径r m,,即可得出平图透镜的曲率半径R ;反之,如果R 已知,测出r m 后,就可计算出入射单色光波的波长λ。但是用此测量关系式往往误差很大,原因在于凸面和平面不可能是理想的点接触;接触压力会引起局部形变,使接触处成为一个圆形平面,干涉环中心为一暗斑。或者空气间隙层有了灰尘,附加了光程差,干涉环中心为一亮(或暗)斑,均无法确定环的几何中心。实际测量时,我们可以通过测量距中心较远的两个暗环半径r m 和r n 的平方差来计算曲率半径R 。因为 λMR r m =2 λnR r n =2 两式相减可得 λ)(22n m R r r n m -=-

数值分析报告-二分法和牛顿法方程求根

《数值分析》实验报告一 姓名: 周举 学号: PB09001046

实验一 一、实验名称 方程求根 二、实验目的与要求: 通过对二分法和牛顿法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点; 比较二者的计算速度和计算精度。 三、实验内容: 通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点 。 (一)二分法 算法:给定区间[a,b],并设f (a )与f (b )符号相反,取δ为根的容许误差,ε为值的容许误差。 (1)令c=(a+b)/2 (2)如果(c-a)< δ或)(c f <ε,则输出c ,结束;否则执行(3) (3)如果f(a)f(c)<0,则令)()(,c f b f c b ←←;否则,则令 )()(,c f a f c a ←←,重复(1),(2),(3)。 (二)牛顿迭代法:给定初值0x ,ε为根的容许误差,η为)(x f 的容 许误差,N 为迭代次数的容许值。 (1)如果)(x f <η或迭代次数大于N ,则算法结束;否则执行(2)。

(2)计算)('/)(0001x f x f x x -= (3)若 < 或 < ,则输出 ,程序结束;否则执行(4)。 (4)令 = ,转向(1)。 四、实验题目与程序设计 1、二分法 3.1.1、用二分法求方程 a. f(x)= x x tan 1--在区间[0,π/2]上的根, c. f(x)=6cos 22-++-x e x x 在区间[1,3]上的根。 源程序: 3.1.1.a #include #include void main() { float a,b;double c,y,z; printf("plese input two number a and b:\n"); scanf("%f%f",&a,&b); c=(a+b)/2; y=1/c-tan(c); printf("a=%f,b=%f,b-a=%f,c=%f,f(c)=%f\n",a,b,b-a,c,y); while(fabs(b-a)>0.00001|| fabs(y)>0.00001) { z=1/a-tan(a); if(z*y<0) b=c; else a=c; c=(a+b)/2; y=1/c-tan(c); printf("a=%f,b=%f,b-a=%f,c=%f,f(c)=%f\n",a,b,b-a,c,y); } } x x 01-ε)(1x f ηx 1x 0x 1

数值分析插值算法源程序

#include #include float f(float x) //计算ex的值 { return (exp(x)); } float g(float x) //计算根号x的值 { return (pow(x,0.5)); } void linerity () //线性插值 { float px,x; float x0,x1; printf("请输入x0,x1的值\n"); scanf("%f,%f",&x0,&x1); printf("请输入x的值: "); scanf("%f",&x); px=(x-x1)/(x0-x1)*f(x0)+(x-x0)/(x1-x0)*f(x1); printf("f(%f)=%f \n",x,px); } void second () //二次插值 { float x0,x1,x2,x,px; x0=0; x1=0.5; x2=2; printf("请输入x的值:"); scanf("%f",&x); px=((x-x1)*(x-x2))/((x0-x1)*(x0-x2))*f(x0)+((x-x0)*(x-x2))/((x1-x0)*(x1-x2))*f(x1)+((x-x0)* (x-x1))/((x2-x0)*(x2-x1))*f(x2);

printf("f(%f)=%f\n",x,px); } void Hermite () //Hermite插值 { int i,k,n=2; int flag1=0; printf("Hermite插值多项式H5(x)="); for(i=0;i<=n;i++) { int flag=0; flag1++; if(flag1==1) { printf("y%d[1-2(x-x%d)*(",i,i); } else { printf("+y%d[1-2(x-x%d)*(",i,i); } for(k=0;k<=n;k++) { if(k!=i) { flag++; if(flag==1) { printf("(1/x%d-x%d)",i,k); } else { printf("+(1/x%d-x%d)",i,k);

等厚干涉牛顿环实验报告

等厚干涉牛顿环实验报告 Prepared on 22 November 2020

等厚干涉——牛顿环等厚干涉是薄膜干涉的一种。薄膜层的上下表面有一很小的倾角是,从光源发出的光经上下表面反射后在上表面附近相遇时产生干涉,并且厚度相同的地方形成同一干涉条纹,这种干涉就叫等厚干涉。其中牛顿环是等厚干涉的一个最典型的例子,最早为牛顿所发现,但由于他主张微粒子学说而并未能对他做出正确的解释。光的等厚干涉原理在生产实践中育有广泛的应用,它可用于检测透镜的曲率,测量光波波长,精确地测量微笑长度、厚度和角度,检验物体表面的光洁度、平整度等。 一. 实验目的 (1)用牛顿环观察和分析等厚干涉现象; (2)学习利用干涉现象测量透镜的曲率半径; 二. 实验仪器 读数显微镜钠光灯牛顿环仪 三. 实验原理 牛顿环装置是由一块曲率半径较大的平凸面放在一块光 学玻璃平板(平镜)上构成的,如图。平凸透镜的凸面与玻 璃平板之间的空气层厚度从中心到边缘逐渐增加,若以平行单光垂直照射到牛顿环上,则经空气层上、下表面反射的两光束存在光程差,他们在平

凸透镜的凸面相遇后,将发生干涉。从透镜上看到的干涉花样是以玻璃接触点为中心的一系列明暗相间的圆环,称为牛顿环。同一干涉环上各处的空气层厚度是相同的,因此他属于等厚干涉。 图2 图3 由图2可见,若设透镜的曲率半径为R ,与接触点O 相距为r 处空气层的厚度为d ,其几何关系式为 由于r R >>,可以略去d 2得 R r d 22 = (1) 光线应是垂直入射的,计算光程差时还要考虑光波在平玻璃上反射会有半波损失,,从而带来2λ的附加程差,所以总光程差为 2 2λ + =?d (2) 所以暗环的条件是 2 ) 12(λ +=?k (3) 其中 3,2,1, 0=k 为干涉暗条纹的级数。综合(1)(2)(3)式可得第可k 级暗环的半径为 λkR r k =2 (4) 由式(4)可知,如果单色光源的波长λ已知,测出第m 级的暗环半径r m,,即可得出平图透镜的曲率半径R ;反之,如果R 已知,测出r m 后,就可计算出入射单色光波的波长λ。但是用此测量关系式往往误差很大,原因在于凸面和平面不可能是理想的点接触;接触压力会引起局部形变,使接触处成为一个圆形平面,干涉环中心为一暗斑。或者空气间隙层有了灰尘,附加了光程差,干涉环中心为一亮(或暗)斑,均无法确定环的几何

数值方法C++代码大全上(包括二分法迭代法牛顿法等等)

1.二分法 #include #include #include //调用fabs函数。 double f(double x) //定义函数F(x)。 { return 2*x*x*x-x-1; } void main() { double a,b,w,x; cout<<"请输入方程根的区间[a,b]及误差w:"; cin>>a>>b>>w; x=(a+b)/2; while(fabs(f(x))>w&&fabs(a-b)>w){ //用while循环控制中值折算的条件。if(f(x)*f(b)<0) a=x; //进行二分,缩小求值范围。else if(f(a)*f(x)<0) b=x; x=(a+b)/2; } cout< #include #include #include using namespace std; typedef double (*pFun)(double x); double getIterativeValue(double x) {

return pow((x+1)/2,(double)1.0/3); } double Solve(pFun f,double x,double e,int n) { double res; while(n--) { res = f(x); if(fabs(res - x) < e) { outPrint("第%d次次迭代以后返回值为:%0.7lf \n",10-n,res); break; } else x = res; outPrint("第%d次迭代以后x值为:%0.7lf\n ",10-n,x); } return res; } int main() { cout << setprecision(7); double x,e; cout << "输入初值和精度:" << endl; cin >> x >> e; cout << Solve(getIterativeValue,x,e,10) << endl; system("pause"); return 0; } 3.牛顿法 #include #include #include #include using namespace std;

牛顿环实验报告

北京师范大学珠海分校大学物理实验报告 实验名称:牛顿环实验测量 学院工程技术学院 专业测控技术与仪器 学号 1218060075 姓名钟建洲 同组实验者 1218060067余浪威 1218010100杨孟雄 2013 年 1 月 17日

实验名称 牛顿环实验测量 一、实验目的 1.观察牛顿环干涉现象条纹特征; 2.学习用光的干涉做微小长度的测量; 3.利用牛顿环干涉测量平凸透镜的曲率半径; 4.通过实验掌握移测显微镜的使用方法 二、实验原理 在一块平面玻璃上安放上一焦距很大的平凸透镜,使其凸面与平面相接触,在接触点 o 附近就形成一层空 气膜。当用一平行的准单色光垂直照射时,在空气膜上表面反射的光束和下表面反射的光束在膜上表面相遇相干,形成以 o 为圆心的明暗相间的环状干涉图样,称为牛顿环。如果已知入射光波长,并测得第 k 级 暗环的半径 r k ,则可求得透镜的曲率半径 R 。但 实际测量时,由于透镜和平面玻璃接触时,接触点有压力产生形变或有微尘产生附加光程差,使得干涉条纹的圆心和环级确定困难。第m 环与第n 环 用直径 D m 、 D n 。 () λ n m n D m D R +-= 42 2此为计算 R 用的公式,它与附加厚度、

圆心位置、绝对级次无关,克服了由这些因素带来的系统误差,并且D m 、 D n 可以是弦长。 三、实验内容与步骤 用牛顿环测量透镜曲率半径 (1).按图布置好实验器材,使用单色扩展光源,将牛顿环装置放在读数显微镜工作台毛玻璃中央,并使显微镜筒正对牛顿环装置中心。 (2).调节读数显微镜。 1.调节目镜,使分划板上的十字刻度线清晰可见,并转动目镜,使十字刻度线的横线与显微镜筒的移动方向平行。 2.调节45度反射镜,使显微镜视觉中亮度最大,这时基本上满足入射光垂直于待测量透镜的要求。 1.转动手轮A,使显微镜平移到标尺中部,并调节调焦手轮B,使物镜接近牛顿环装置表面。 2.对显微镜调焦。缓慢地转动调焦手轮B,使显微镜筒由下而上移动进行调焦,直到从目镜中清楚地看到牛顿环干涉条纹且无视差为止;然后移动牛顿环装置,使目镜中十字刻度线交点与牛顿环中心重合 (1).观察条纹的特征。 观察各级条纹的粗细是否一致,其间距有无差异,并做出解释。观察牛顿环中心是亮斑还是暗斑? (2).测量暗环的直径 转动读数显微镜的读数鼓轮,同时在目镜中观察,使十字刻度线由牛顿环中心缓慢地向一侧移动到43环;然后再回到第42环。自42环起,单方向移动十字刻度,每移3环读数一——直到测量完成另一侧的第42环。并将所测量的第42环到第15环各直径的左右两边的读数记录在表格内。 四、数据处理与结果 1.求透镜的曲率半径。 测出第15环到第42环暗环的直径,取m-n=15,用逐差法求出暗环的直径平方 差的平均值,按算出透镜的曲率半径的平均值R。 R1=(d422-d272)/[4(42-27]λ= 895.85 mm R2=(d392-d242)/[4(39-24]λ= 896.97 mm R3=(d362-d212)/(4(36-21)λ= 887.94mm R4=(d332-d182)/(4(33-18)λ= 893.30mm

求一个整数开根号--二分法和牛顿迭代法(求根)

求一个整数开根号--二分法和牛顿迭代法(求根) 问题叙述 求解1232cos 0x x -+=的解;通过编写matlab 程序分别用分析二分法和牛顿迭代法求解方程,通过两种方法的比较,分析二者求解方程的快慢程度。 一、问题分析 由matlab 画图命令,容易得到此方程解的范围为(2,4);两种迭代方法,在使用相同的误差(0.00001)的情况下,得出matlab 迭代次数,通过次数的比较得出二者求解速度快慢比较。 二、实验程序及注释 (1)、二分法程序: clear; %清除所有内存数据; f=inline('12-3*x+2*cos(x)'); format long %数据显示格式设为长型; a=2;b=4; %求解区间; er=b-a;ya=f(a);k=0;er0=0.00001; %误差分析; while er>er0 x0=.5*(a+b); y0=f(x0); if ya*y0<0 b=x0; %二分法求解程序; else a=x0; ya=y0; end disp([a,b]);er=b-a;k=k+1 %显示各个区间值和求解次数; end disp([a,b]); %显示最后一个区间值; (2)、牛顿迭代法程序: clear; %清除所有内存数据; f=inline('12-3*x+2*cos(x)'); format long %数据显示格式设为长型; b=3;a=4;k=0; %求解区间; y0=f(b);y=f(a); while abs(b-a)>0.00001 t=a-y*(a-b)/(y-y0); b=a;y0=y; %牛顿迭代法求解程序; a=t;y=f(a); k=k+1; disp([b,a]);k %显示各个区间值和求解次数; end disp([b,a]); %显示最后一个区间值;

大学物理仿真实验报告 牛顿环

大学物理仿真实验报告 实验名称:牛顿环法测曲率半径实验日期: 专业班级: 姓名:学号: 教师签字:________________ 一、实验目的 1.学会用牛顿环测定透镜曲率半径。 2.正确使用读书显微镜,学习用逐差法处理数据。 二、实验仪器 牛顿环仪,读数显微镜,钠光灯,入射光调节架。 三、实验原理 如图所示,在平板玻璃面DCF上放一个曲率半径很大的平 凸透镜ACB,C点为接触点,这样在ACB和DCF之间,形 成一层厚度不均匀的空气薄膜,单色光从上方垂直入射到 透镜上,透过透镜,近似垂直地入射于空气膜。分别从膜 的上下表面反射的两条光线来自同一条入射光线,它们满 足相干条件并在膜的上表面相遇而产生干涉,干涉后的强 度由相遇的两条光线的光程差决定,由图可见,二者的光 程差等于膜厚度e的两倍,即 此外,当光在空气膜的上表面反射时,是从光密媒质射向光疏媒质,反射光不发生相位突变,而在下表面反射时,则会发生相位突变,即在反射点处,反射光的相位与入射光的相位之间相差π,与之对应的光程差为λ/2 ,所以相干的两条光线还具有λ/2的附加光程差,总的光程差为(1) 当?满足条件(2)时,发生相长干涉,出现第K级亮纹,而当 (k = 0,1,2…)(3)时,发生相消干涉,出现第k级暗纹。因为

同一级条纹对应着相同的膜厚,所以干涉条纹是一组等厚度线。可以想见,干涉条纹是一组以C点为中心的同心圆,这就是所谓的牛顿环。 如图所示,设第k级条纹的半径为,对应的膜厚度为,则 (4) 在实验中,R的大小为几米到十几米,而的数量级为毫米,所以R >> e k,e k2相对于2Re k是一个小量,可以忽略,所以上式可以简化为 (5) 如果r k是第k级暗条纹的半径,由式(1)和(3)可得 (6) 代入式(5)得透镜曲率半径的计算公式 (7) 对给定的装置,R为常数,暗纹半径 (8) 和级数k的平方根成正比,即随着k的增大,条纹越来越细。 同理,如果r k是第k级明纹,则由式(1)和(2)得 (9) 代入式(5),可以算出(10)

数值分析——二分法和牛顿法

二分法和牛顿法的比较 二分法的基本思想是对有根区间[a,b]逐次分半,首先计算区间[a,b]的中间点x0,然后分析可能出现的三种情况:如果f(x0)f(a)<0,则f(x)在区间[a,x0]内有零点;如果f(x0)f(b)<0,则f(x)在区间[x0,b]内有零点;如果f(x0)=0,则x0是f(x)在区间[a,b]内所求零点。但是二分法的缺点是收敛速度慢且不能求复根。牛顿迭代法的基本思想是将方程f(x)=0中函数f(x)线性化,以线性方程的解逼近非线性方程的解其迭代函数为) (') ()(x f x f x x -=?。牛顿迭代法的缺点是可能发生被零除错误,且可能出现死循环。 用二分法和牛顿法分别计算多项式02432 3 =-+-x x x 的解。该多项式的解为1、1+i 和1-i ,使用二分法计算时,区间为(-1,2),使用牛顿法计算时取初始值为0。误差都为0.0001。 编程如下 二分法(erfen.m): syms x ; fun=x^3-3*x^2+4*x-2; a=-1; b=2; d=0.0001; f=inline(fun); e=b-a; k=0; while e>d c=(a+b)/2; if f(a)*f(c)<0 b=c; elseif f(a)*f(c)>0 a=c; else a=c;b=c; end e=e/2; k=k+1; end k x=(a+b)/2 牛顿法(newton.m): function [k,x,wuca] = newton() k=1; x0=0; tol=0.0001; yx1=fun(x0); yx2=fun1(x0); x1=x0-yx1/yx2; while abs(x1-x0)>tol x0=x1; yx1=fun(x0); yx2=fun1(x0); k=k+1; x1=x1-yx1/yx2; end k x=x1 wuca=abs(x1-x0)/2 end function y1=fun(x) y1=x^3-3*x^2+4*x-2; end function y2=fun1(x) y2=3*x^2-6*x+4; end 分析结果得知,在相同的误差精度下,二分法需要计算15次,而牛顿法只需计算5次,得知牛顿法比二分法优越。

数值分析常用的插值方法

数值分析报告 班级: 专业: 流水号: 学号: 姓名:

常用的插值方法 序言 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上n+1个互不相同点x0,x1……x n处的值是f(x0),……f(x n),要求估算f(x)在[a,b〕中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0, C1,……C n的函数类Φ(C0,C1,……C n)中求出满足条件P(x i)=f(x i)(i=0,1,……n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x0,x1,……xn 称为插值结(节)点,Φ(C0,C1,……C n)称为插值函数类,上面等式称为插值条件,Φ(C0,……C n)中满足上式的函数称为插值函数,R(x)=f(x)-P(x)称为插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。 一.拉格朗日插值 1.问题提出: 已知函数()y f x =在n+1个点01,,,n x x x L 上的函数值01,,,n y y y L ,求任意一点 x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法: 构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则 用()n P x '作为函数值()f x '的近似值。 设()2012n n n P x a a x a x a x =++++L ,构造()n P x 即是确定n+1个多项式的系数 012,,,,n a a a a L 。 3.构造()n P x 的依据: 当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数 ()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组: 20102000 20112111 2012n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y ?++++=?++++=?? ? ?++++=?L L L L L 其系数矩阵的行列式D 为范德萌行列式: ()20 0021110 2111n n i j n i j n n n n x x x x x x D x x x x x ≥>≥= = -∏L L M M M M L

二分法和牛顿法求解非线性方程(C语言)

(1)二分法求解非线性方程: #include #include #define f(x)((x*x-1)*x-1) void main() {float a,b,x,eps; int k=0; printf("intput eps\n");/*容许误差*/ scanf("%f",&eps); printf("a,b=\n"); for(;;) {scanf("%f,%f",&a,&b); if(f(a)*f(b)>=0)/*判断是否符合二分法使用的条件*/ printf("二分法不可使用,请重新输入:\n"); else break; } do {x=(a+b)/2; k++; if(f(a)*f(x)<0)/*如果f(a)*f(x)<0,则根在区间的左半部分*/ b=x; else if(f(a)*f(x)>0)/*否则根在区间的右半部分*/ a=x; else break; }while(fabs(b-a)>eps);/*判断是否达到精度要求,若没有达到,继续循环*/ x=(a+b)/2;/*取最后的小区间中点作为根的近似值*/ printf("\n The root is x=%f,k=%d\n",x,k); } 运行结果: intput eps 0.00001 a,b= 2,-5 The root is x=1.324721,k=20 Press any key to continue 总结:本题关键在于两个端点的取值和误差的判断,此程序较容易。二分法收敛速度较快,但缺点是只能求解单根。 (2)牛顿法求解非线性方程: #include #include float f(float x)/*定义函数f(x)*/ {return((-3*x+4)*x-5)*x+6;} float f1(float x)/*定义函数f(x)的导数*/

牛顿环等厚干涉标准实验报告

实验报告 学生姓名:学号:指导教师: 实验地点:实验时间: 一、实验室名称: 二、实验项目名称:牛顿环测曲面半径和劈尖干涉 三、实验学时: 四、实验原理: 1、等厚干涉 如图1所示,在C点产生干涉,光线11`和22`的光程差为△=2d+λ/2 式中λ/2是因为光由光疏媒质入射到光密媒质上反射时,有一相位 突变引起的附加光程差。 当光程差△=2d+λ/2=(2k+1)λ 即d=k λ/2时产生暗条纹; 当光程差△=2d+λ/2=2kλ/2, 即d=(k-1/2)λ/2时产生明条纹 图1 因此,在空气薄膜厚度相同处产生同一级的干涉条纹,叫等厚干涉条纹。 2、用牛顿环测透镜的曲率半径 将一个曲率半径较大的平凸透镜的凸面置于一块光学平板玻璃上则

可组成牛顿环装置。如图2所示。 这两束反射光在AOB 表面上的某一点E 相遇,从而产生E 点的干涉。由于AOB 表面是球面,所产生的条纹是明暗相间 的圆环,所以称为牛顿环,如图3所示。 将两块光学平玻璃重叠在一起,在一端插入一薄纸片,则在两玻璃板间形成一空气劈尖,如图4所示。K 级干涉暗条纹对应的薄膜厚度为d=k λ/2 k=0时,d=0, 即在两玻璃板接触处为零级暗条纹;若在薄纸处呈现k=N 级条纹,则薄纸片厚度为 d ’=N λ/2 若劈尖总长为L,再测出相邻两条纹之间的距离为△x,则暗条纹总数为N=L/△x , 即 d ’=L λ/2 △x 。 五、实验目的: 深入理解光的等厚干涉及其应用,学会使用移测显微镜。 六、实验内容: 1、用牛顿环测透镜的曲率半径 2、用劈尖干涉法测薄纸片的厚度 七、实验器材(设备、元器件): 牛顿环装置,移测显微镜,两块光学平玻璃板,薄纸片,钠光灯及电 图2 L d

二分法 牛顿迭代法

2014级硕士研究生数值分析上机实习 (第一次) 姓名:乔永亮 学号:14S030125 学院:船舶与海洋工程学院 实习题目:分别用二分法和Newton 迭代法求方程02010223=-++x x x 的根. 实习目的:掌握两种解法,体会两种解法的收敛速度. 实习要求:用C 程序语言编程上机进行计算,精确到8位有效数字. 报告内容: 1. 确定实根的个数以及所在区间. 解:对函数3 2 ()21020f x x x x =++-求导,得2 ()34100f x x x '=++=。 易知()0f x '>恒成立,所以函数(x)f 没有极值,只有一个实根。又可以知道(1)0f <,(2)0f >方程在区间(1,2)有一个实根,且为奇数重根,可以二分法和Newton 求解 2. 将最后两次计算结果填入下表(保留8位数字): 3. 实习过程中遇到哪些问题?如何解决?有何心得体会? 在编程的过程中由于对基本计算原理的理解有一定不足,同时对编程语言的不熟悉,导致在编程过程中错误百出,耗费了大量时间。但是通过课本以及网络对所需知识的不断学习,通过尝试不同的方法,最终还是得到了几种不同的思路与方法。通过这次编程,深深的感受到自己的不足,同时也明白了数学与计算机编程的紧密结合,不努力提高自己在当今社会就要被淘汰。

4. 两种解法的计算程序(此页写不下时可以加页): 二分法(Fortran 语言) program Analysis1 real::a,b,c,m real::fa,fc a=1. b=2. m=0.0001 !-------------------- do while(abs(b-a)>=m) c=(a+b)/2 fa=a**3+2.*a*a+10.*a-20 fc=c**3+2.*c*c+10.*c-20 if(fa*fc<0) then b=c else a=c end if write(*,"(f10.7)")c end do pause end program Anslysis1 牛顿迭代法(Fortran语言) program Analysis2 implicit none !定义变量---------------------------------------------------------------external f,df real m,x0,x1,f,df integer i !初始化变量-------------------------------------------------------------m=0.0001 x0=1.5 !牛顿迭代法-------------------------------------------------------------do while(abs(f(x0))>=m) x1=x0-f(x0)/df(x0) x0=x1 i=i+1 write(*,"(i4,f10.7)")i,x0 end do

牛顿环测量曲率半径实验报告

实验名称:牛顿环测量曲率半径实验 1.实验目的: 1 观察等厚干涉现象,理解等厚干涉的原理和特点 2 学习用牛顿环测定透镜曲率半径 3 正确使用读数显微镜,学习用逐差法处理数据 2.实验仪器: 读数显微镜,钠光灯,牛顿环,入射光调节架 3.实验原理 图1 如图所示,在平板玻璃面DCF上放一个曲率半径很大的平凸透镜ACB,C点为接触点,这样在ACB和DCF之间,形成一层厚度不均匀的空气薄膜,单色光从上方垂直入射到透镜上,透过透镜,近似垂直地入射于空气膜。分别从膜的上下表面反射的两条光线来自同一条入射光线,它们满足相干条件并在膜的上表面相遇而产生干涉,干涉后的强度由相遇的两条光线的光程差决定,由图可见,二者的光 程差等于膜厚度e的两倍,即

此外,当光在空气膜的上表面反射时,是从光密媒质射向光疏媒质,反射光不发生相位突变,而在下表面反射时,则会发生相位突变,即在反射点处,反射光的相位与入射光的相位之间相差π,与之对应的光程差为λ/2 ,所以相干的两条光线还具有λ/2的附加光程差,总的光程差为 (1) 当?满足条件 (2) 时,发生相长干涉,出现第K级亮纹,而当 (3) 时,发生相消干涉,出现第k级暗纹。因为同一级条纹对应着相同的膜厚,所以干涉条纹是一组等厚度线。可以想见,干涉条纹是一组以C点为中心的同心圆,这就是所谓的牛顿环。 如图所示,设第k级条纹的半径为,对应的膜厚度为,则 (4) 在实验中,R的大小为几米到十几米,而的数量级为毫米,所以R >> e k, e k 2相对于2Re k 是一个小量,可以忽略,所以上式可以简化为 (5) 如果r k是第k级暗条纹的半径,由式(1)和(3)可得 (6)代入式(5)得透镜曲率半径的计算公式

相关文档
最新文档