MATLAB计算方法迭代法牛顿法二分法实验报告要点(20200629085932)

合集下载

MATLAB二分法和牛顿迭代法实验报告

MATLAB二分法和牛顿迭代法实验报告
(1)计算f(x)在有解区间[a, b]端点处的值。
(2)计算 在区间中点处的值 。
(3)判断若 ,则 即是根,否则检验:
①若 与 异号,则知道解位于区间 ,
②若 与 同号,则知道解位于区间, ,
反复执行步骤2、3,便可得到一系列有根区间:
(4)当 ,则 即为根的近似值。
Newton迭代法原理:设已知方程 的近似根 ,则在 附近 可用一阶泰勒多项式 近似代替.因此,方程 可近似地表示为 .用 表示 的根,它与 的根差异不大.
3.在MATLAB命令行窗口求解方程f(x)
4.得出计算结果
设 ,由于 满足 解得
重复这一过程,得到迭代格式
实验所用软件及版本:MATLAB R2014a
主要内容(要点):
实验过程记录(含:基本步骤、主要程序清单及异常情况记录等):
二分法:
1.在MATLAB编辑器中建立一个实现二分法的M文件bisect.m
2.在MATLAB命令行窗口求解方程f(x)
3.得出计算结果
数学应用软件大型实验实验报告
实验序号:日期:年月日
班级
姓名
学号
实验
名称
二分法和Newton迭代法
问题背景描述:
分别编写一个用二分法和用Newton-Raphson法求连续函数的零点通用程。
实验目的:
用以求方程x^2-3*x+exp(X)=2的正根(要求精度ε=10^-6)。
实验原理与数学模型:
二分法原理:如果函数y=f(x)在闭区间[a,b]上连续,且已知函数在两端点的函数f(a)与f(b)取异号,即两端点函数值的乘积f(a)*f(b)<0,则函数y=f(x)在区间(a,b)内至少有一个零点,即至少存在一点c,使得f(x)=0的解。

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

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

完美WORD格式姓名实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,实验报告交院(系)办公室保存。

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

并比较方法的优劣。

二、 实验原理 (1)、二分法对方程0)(=x f 在[a ,b]内求根。

将所给区间二分,在分点2a b x -=判断是否0)(=x f ;若是,则有根2a b x -=。

否则,继续判断是否0)()(<∙x f a f ,若是,则令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 代入上式。

迭代公式为:=+1k x -0x )(')(k k x f x f 。

三、 实验设备:MATLAB 7.0软件四、 结果预测(1)11x =0.09033 (2)5x =0.09052 (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-⨯。

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

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

MAAB计算方法迭代法牛顿法二分法实验报告实验目的:比较MAAB计算方法中迭代法、牛顿法和二分法的优缺点,探究它们在求解方程中的应用效果。

实验原理:1、迭代法:将方程转化为x=f(x)的形式,通过不断迭代逼近方程的根。

2、牛顿法:利用函数在特定点的切线逼近根的位置,通过不断迭代找到方程的根。

3、二分法:利用函数值在区间两端的异号性质,通过不断二分缩小区间,最终逼近方程的根。

实验步骤:1、选择一元方程进行求解,并根据方程选择不同的计算方法。

2、在迭代法中,根据给定的初始值和迭代公式,进行迭代计算,直到满足预设的迭代精度要求。

3、在牛顿法中,选择初始点,并根据切线方程进行迭代计算,直到满足预设的迭代精度要求。

4、在二分法中,选择区间,并根据函数值的异号性质进行二分,直到满足预设的迭代精度要求。

5、根据计算结果,比较三种方法的求解效果,包括迭代次数、计算时间、求解精度等指标。

实验结果与分析:通过对多个方程进行测试,得到了以下实验结果:1、迭代法的优点是简单易懂,适用范围广,但当迭代公式不收敛时会导致计算结果不准确。

2、牛顿法的优点是收敛速度较快,但需要计算函数的一阶导数和二阶导数,对于复杂函数较难求解。

3、二分法的优点是收敛性较好,不需要导数信息,但收敛速度较慢。

4、对于线性方程和非线性方程的求解,牛顿法和迭代法通常比二分法更快速收敛。

5、对于多重根的方程,二分法没有明显优势,而牛顿法和迭代法能更好地逼近根的位置。

6、在不同的方程和初值选择下,三种方法的迭代次数和求解精度略有差异。

7、在时间效率方面,二分法在收敛速度较慢的同时,迭代次数较少,牛顿法在收敛速度较快的同时,迭代次数较多,而迭代法对于不同方程有较好的平衡。

结论:1、对于不同类型的方程求解,可以根据具体情况选择合适的计算方法。

2、迭代法、牛顿法和二分法各有优缺点,没有绝对的最优方法,需要权衡各种因素选择最适合的方法。

3、在实际应用中,可以根据方程的特点和精度要求综合考虑不同方法的优劣势,以获得较好的求解效果。

用Matlab编写二分法和Newton迭代法求解非线性函数

用Matlab编写二分法和Newton迭代法求解非线性函数

⽤Matlab编写⼆分法和Newton迭代法求解⾮线性函数1、⼆分法原理:若f的值在C[a, b]中,且f (a) · f (b) < 0,则f在 (a, b) 上必有⼀根。

实现算法流程:2、Newton迭代法迭代公式:⼏何意义:3、求解问题⽤Newton法和⼆分法求的解。

4、代码实现1 clear;close;clc2 a=0;b=1;%根区间3 e=10^(-6);%根的容许误差4 [X , N]=dichotomy(e,a,b);%⼆分法5 p0=0.5;%初始值6 N=15;%迭代次数7 [X1]=Newdon(p0,e,N);%Newton迭代法89 function [X , N]=dichotomy(deta,a,b)10 % 函数dichotomy:⼆分法11 %输⼊值:12 %fun:⽅程函数13 %deta:根的容许误差14 %有根区间:[a,b]15 %输出值16 %X:求解到的⽅程的根17 %N:总的迭代次数18 N=1+fix(log2((b-a)/deta));%由公式7.2求得,取整数|X_N-X*|<=(b-a)/2^N<deta,求N19 n=1;20 f1=myfunction(a);21 f2=myfunction(b);22if (f1*f2>0)23 disp('根不在输⼊的区间⾥,请重新输⼊区间');24else25while n <= N26 x=(a+b)/2;27if myfunction(a)*myfunction(x)>028 a=x;29else30 b=x;31 end32 n=n+1;33 end34 X=x;35 fprintf('第%d次⼆分法求出的⽅程的根:\n',N);36 fprintf('X=\n');37 disp(X);38 end39 end4041 function [P]=Newdon(p0,TOL,N)42 %求⽅程组的解43 %输⼊参数44 %初始值:p045 %误差容限:TOL46 %最⼤迭代次数:N47 %输出参数:48 %⽅程近似解:p49 %或失败信息“Method failed”50 format long;51 n=1;%初始迭代次数52 syms x;53while n<=N54if abs(subs(diff(myfunction(x)),x,p0))<TOL55 P=p0;56break;57else58if subs(diff(myfunction(x),2),x,p0)==059 disp('Method failed');60break;61else62 p=p0-myfunction(p0)/subs(diff(myfunction(x)),x,p0);63 p=eval(p);%将exp的值转为⼩数值64if(abs(p-p0)<TOL)65 P=p;66break;67else68 p0=p;69 end70 end71 end72 n=n+1;73 end74 % P=vpa(P,10);%将分数转为⼩数并保留8位⼩数75 fprintf('第%d次NeWton迭代法求出的⽅程的根:\n',N);76 fprintf('P=\n');77 disp(P);78 end7980 function f=myfunction(x)81 f=x*exp(x)-1;82 end5、求解结果。

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

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

MATLAB计算方法迭代法牛顿法二分法实验报告实验报告一、引言计算方法是数学的一门重要应用学科,它研究如何用计算机来解决数学问题。

其中,迭代法、牛顿法和二分法是计算方法中常用的数值计算方法。

本实验通过使用MATLAB软件,对这三种方法进行实验研究,比较它们的收敛速度、计算精度等指标,以及它们在不同类型的问题中的适用性。

二、实验方法1.迭代法迭代法是通过不断逼近解的过程来求得方程的根。

在本实验中,我们选择一个一元方程f(x)=0来测试迭代法的效果。

首先,我们对给定的初始近似解x0进行计算,得到新的近似解x1,然后再以x1为初始近似解进行计算,得到新的近似解x2,以此类推。

直到两次计算得到的近似解之间的差值小于规定的误差阈值为止。

本实验将通过对复杂方程的迭代计算来评估迭代法的性能。

2.牛顿法牛顿法通过使用函数的一阶导数来逼近方程的根。

具体而言,对于给定的初始近似解x0,通过将f(x)在x0处展开成泰勒级数,并保留其中一阶导数的项,得到一个近似线性方程。

然后,通过求解这个近似线性方程的解x1,再以x1为初始近似解进行计算,得到新的近似解x2,以此类推,直到两次计算得到的近似解之间的差值小于规定的误差阈值为止。

本实验将通过对不同类型的方程进行牛顿法的求解,评估它的性能。

3.二分法二分法是通过将给定区间不断二分并判断根是否在区间内来求方程的根。

具体而言,对于给定的初始区间[a,b],首先计算区间[a,b]的中点c,并判断f(c)与0的大小关系。

如果f(c)大于0,说明解在区间[a,c]内,将新的区间定义为[a,c],再进行下一轮的计算。

如果f(c)小于0,说明解在区间[c,b]内,将新的区间定义为[c,b],再进行下一轮的计算。

直到新的区间的长度小于规定的误差阈值为止。

本实验将通过对复杂方程的二分计算来评估二分法的性能。

三、实验结果通过对一系列测试函数的计算,我们得到了迭代法、牛顿法和二分法的计算结果,并进行了比较。

二分法,牛顿迭代法,matlab

二分法,牛顿迭代法,matlab

二分法、牛頓迭代法求方程近似解在一些科學計算中常需要較為精確的數值解,本實驗基於matlab 給出常用的兩種解法。

本實驗是以解決一個方程解的問題說明兩種方法的精髓的。

具體之求解方程e^(-x)+x^2-2*x=0,精度e<10^-5;;程序文本文檔如下%%%%%%二分法求近似解cleardisp('二分法求方程的近似解')format longsyms xf=inline('exp(-x)+x^2-2*x');%原函數%通過[x,y]=fminbnd(f,x1,x2)求出極小值點和極小值,進而確定%區間端點,從而確定解區間矩陣CX=[];C=[0 1.16;1.16 2] ; %C(:,1)為解區間的左端點,C(:,2)為解區間右端點ss=length(C); %統計矩陣C的行數,即為方程解的個數for i=1:ssa=C(i,1);b=C(i,2);%f(a)>=0,f(b)<=0e1=b-a;%解一的精度e0=10^-5;%精度ya=f(a);while e1>=e0x0=1/2*(a+b);y0=f(x0);if y0*ya<=0b=x0;elsea=x0;ya=y0;ende1=b-a;endA=[a,b,e1];%解的區間和精度X=[X;A];%解與精度構成的矩陣endX%%%%%%%牛頓迭代法disp('牛頓迭代法解方程的近似解')clear %清空先前變量syms x %定義變量y=exp(-x)+x^2-2*x;%原函數f=inline(y);f1=diff(y); %一階導函數g=inline(f1);format long %由於數值的默認精度為小數點后四位,故需要定義長形X=[];C=[0 1.16;1.16 2] ; %C(:,1)為解區間的左端點,C(:,2)為解區間右端點ss=length(C); %統計矩陣C的行數,即為方程解的個數for i=1:ssa=C(i,1);b=C(i,2);%f(a)>=0,f(b)<=0e0=10^-5; %要求精度i=1; %迭代次數x0=(a+b)/2;A=[i,x0]; %迭代次數,根值的初始方程t=x0-f(x0)/g(x0); %%%%迭代函數while abs(t-x0)>=e0 %%迭代循環i=i+1;x0=t;A=[A;i,x0];t=x0-f(x0)/g(x0);endA ;B=A(i,:);%迭代次數及根值矩陣X=[X;B];endX運行結果如下如若使用matal內置函數fzero,得到如下結果由兩者求得的結果知,使用函數fzero求得的結果精度不夠。

实验1:二分法和迭代法

实验1:二分法和迭代法

Ex=(k+1)( 1-0.99995^k)+ 0.99995^k=k(1-0.99995^k)+1 设 f(k)=Ex/k=1-0.99995^k+1/k 当 f(k)最小时,总共所需的化验次数最少,即 f ’(k*)=0 时,k*所需化验次数最少 f ’(k)=(-0.99995^k)*(ln0.99995)-1/(k^2) f’(100)= -5.0248e-05 f’(200)= 2.4504e-05 利用二分法,程序如下: f=@(k)(-0.99995^k)*(log(0.99995))-1/(k^2); a=100;b=200; tol=1e-12;maxit=100; my_bisection(f,a,b,tol,maxit) 结果为 1.419222563505173e+02 即 k=141 或 142 时,f(k)最小 代入得 f(141)= 0.014117580646837
四、实验结果: (1) 取有根区间为 [3, 4], 利用二分法求得的根为: 3.262983107765649 取迭代初值为 3, 利用迭代法求得的根为: 3.262983107764216(2来自 二分法和迭代法的迭代图像为:
(3) 结论: … …
任课教师:鲍亮
2017 年 3 月 19 日
(2) 迭代法的程序:
function Vx=my_iteration(phi,x0,tol,maxit) Vx=zeros(1,maxit);k=2;Vx(1)=x0; while abs(phi(x0)-x0)>tol&&k<=maxit+1 x0=phi(x0); Vx(k)=x0; k=k+1; if k>3 if abs(Vx(k-1)-Vx(k-2))>abs(Vx(k-2)-Vx(k-3)) '不收敛' break else end else end end Vx=Vx(1:k-1);

计算方法matlab实验指导

计算方法matlab实验指导

计算方法上机实验指导一、非线性方程求解(一)问题的指出 二分法 1.方法概要假定()f x 在[,]a b 上连续,()()0f a f b <且()f x 在(,)a b 内仅有一实根*x 取区间中点c ,若()0f c =,则c 恰为其根,否则,根据()()0f a f c <是否成立,可判断出根所属的新的有根子区间(,)a c 或(,)c b ,为节省内存,仍称其为(,)a b 。

运算重复进行,直到满足精度要求为止,即*||c x b a ε-<-<。

式中,a b 为新的有根子区间的端点。

2.计算框图Nowton 迭代法 1.方法概要0x 为初始猜测,则由递推关系1()()k k k k f x x x f x +=-' 产生逼近解*x 的迭代序列{}k x ,这个递推公式就是Newton 法。

当0x 距*x 较近时,{}k x 很快收敛于*x 。

但当0x 选择不当时,会导致{}k x 发散。

故我们事先规定迭代的最多次数。

若超过这个次数,还不收敛,则停止迭代另选初值。

2.计算框图(二)目的掌握二分法与牛顿法的基本原理及应用 (三)要求1.用二分法计算方程2sin 02x x -=在(1,2)内的根的近似值 2.用二分法计算方程310x x --=在(1,1.5)内的根的近似值5(0.510)ε-=⨯。

3.用牛顿法求下列非线性方程的近似根。

① 10x xe -= 00.5x = ② 310x x --= 01x =③ 2(1)(21)0x x --= 00.45x = 00.65x = 4.用改进的牛顿法12()()k k k k f x x x f x +=-'计算方程20(1)(21)00.55x x x --==的近似根,并与要求3.中的③的结果进行比较。

二、Gauuss 列主元消去法(一)问题的提出由地一般线性方程组在使用Gauss 消去法求解时,从求解过程中可以清楚地看到,若(1)0k kk a -=,必须施以行交换的手续,才能使消去过程继续下去。

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 ;若是,则有根2ab x -=。

否则,继续判断是否0)()(<•x f a f ,若是,则令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 代入上式。

迭代公式为:=+1k 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 的近似根。

MATLAB数值分析实验四(雅各比、高斯赛德尔迭代,以及二分法和牛顿迭代解非线性方程)

MATLAB数值分析实验四(雅各比、高斯赛德尔迭代,以及二分法和牛顿迭代解非线性方程)

佛山科学技术学院实 验 报 告课程名称 数值分析实验项目 迭代法专业班级 机械工程 姓 名 余红杰 学 号 2111505010指导教师 陈剑 成 绩 日 期 月 日一. 实验目的1、 在计算机上用Jacobi 迭代法和Gauss-Seidel 迭代法求线性方程组 。

2、 在计算机上用二分法和Newton 迭代法求非线性方程 的根。

二. 实验要求1、按照题目要求完成实验内容;2、写出相应的Matlab 程序;3、给出实验结果(可以用表格展示实验结果);4、分析和讨论实验结果并提出可能的优化实验。

5、写出实验报告。

三. 实验步骤1、用Matlab 编写Jacobi 迭代法和Gauss-Seidel 迭代法求线性方程组Ax b =的程序。

2、用Matlab 编写二分法和Newton 法求非线性方程()0f x =的根程序。

3、设⎪⎪⎪⎭⎫ ⎝⎛--=212120203A ,T b )1,3,1(=,对于线性方程组b Ax =,考虑如下问题: (1)分别写出Jacobi 迭代矩阵和Gauss-Seidel 迭代矩阵(2)用Jacobi 迭代法和Gauss-Seidel 迭代法解该方程时,是否收敛?谁收敛的更快?(3)用实验步骤1编好的两种迭代法程序进行实验,通过数值结果验证(2)的结论。

4、用调试好的二分法和Newton 迭代法程序解决如下问题求020sin 35=-+-x x e x 的根,其中控制精度810-=eps ,最大迭代次数50=M 。

四. 实验结果1.%Jacob.mfunction [x,B] = Jacob(A,b,n)%Jacobi迭代求解方程组Ax=b,系数矩阵A,迭代次数n%求解的准备工作,构建各迭代系数阵等:m = length(A);D = diag(diag(A));L = -tril(A,-1);U = -triu(A, 1);J = D^(-1)*(L+U);B = J;f = D^(-1)*b;%初始化x即启动值:x = zeros(m,1);%根据x(k+1)=Jx(k)+f进行矩阵运算:for i=1:nx = J*x + f;end%GauSeid.mfunction [x,G] = GauSeid(A,b,n)%Gauss-Seidel迭代求解方程组Ax=b,系数矩阵A,迭代次数n %求解的准备工作,构建各迭代系数阵等:m = length(A);D = diag(diag(A));L = -tril(A,-1);U = -triu(A, 1);G = inv(D-L)*U;f = inv(D-L)*b;%初始化矩阵:%根据x(k+1)=Gx(k)+f进行矩阵运算:x = zeros(m,1);for i = 1:nx = G*x + f;end2.%Dichotomy.mfunction x=Dichotomy(x1,x2,p,n)%利用二分法求根,区间[x1,x2]%p为精度a = x1;b = x2;%进行n次二分:%第一个条件判断根在a,b区间内%第二个条件判断是否中间点就是根,是则迭代终止;%第三个条件判断二分后根在中点左侧还是右侧;%第四个条件判断精度是否达标,用区间长度代替for i=1:nif f(a)*f(b)<0x0 = (a+b)/2;p0 = (b-a)/(2^i);if f(x0)==0x = x0;elseif f(a)*f(x0)<0b = x0;else a= x0;endendendif p0>pcontinue;elsex = x0;break;endend%NewIterat.mfunction x=NewIterat(x0,p,n)%利用牛顿迭代法求根;%x0为启动点,估计的靠近根的值,p为精度,n为迭代次数;syms x1;%设置一个自变量x1,方便后面的求导:f1 = diff(f(x1));%进行n次迭代,精度达标会提前终止;%第一个判断是根据控制条件来确定真实误差是选绝对还是相对误差;%第二个判断是确定精度是否满足要求for i=1:nx1 = x0;x = x0-f(x0)/eval(f1);if x<1RealDiv = abs(x-x0);else RealDiv = abs(x-x0)/abs(x); endif RealDiv>px0 = x;else break;endend3.run43.mclc,clear;A = [3 0 -2;0 2 1;-2 1 2];b = [1;3;1];n1 = 50;n2 =100;%输入A,b矩阵,设置迭代次数为50次;%调用迭代函数,返回迭代矩阵;[x,B] = Jacob(A,b,n1);xj50 = x;f1 = max(abs(eig(B)))%显示谱半径,确定收敛性;[x,B] = GauSeid(A,b,n1);xg50 = x;f2 = max(abs(eig(B)))%谱半径;xj100 = Jacob(A,b,n2);xg100 = GauSeid(A,b,n2); Jacobi= [xj50,xj100]%对比迭代50次和100次的结果GauSei= [xg50,xg100]%很容易看出准确解为[1;1;1]4.f.mfunction y = f(x)%所有f(x)=0中f(x)函数;y = exp(5*x)-sin(x)+x^3-20; 下页是具体解时的程序:%run44.mclc,clear;%很容易看出在[0,1]间有解;x = Dichotomy(0,1,10^(-8),50)x = NewIterat(0,10^(-8),50)五. 讨论分析4.3实验中的迭代矩阵在上个部分,分别为J 和G ;对于收敛性,看下图中的f1,f2,也就是迭代矩阵的谱半径,都是小于1的,但是可以看出后者的谱半径更小,就是说它的收敛速度更快;最终求x 的值,每种迭代方法分别迭代50次(第一列)和100次(第二列); 实际值为[1;1;1]可以看出用高斯赛德尔迭代更精确,速度更快。

计算方法matlab实验报告

计算方法matlab实验报告

计算方法matlab实验报告计算方法MATLAB实验报告引言:计算方法是一门研究如何用计算机来解决数学问题的学科。

在计算方法的学习过程中,MATLAB作为一种强大的数值计算软件,被广泛应用于科学计算、工程计算、数据分析等领域。

本实验报告将介绍在计算方法课程中使用MATLAB 进行的实验内容和实验结果。

一、二分法求方程根在数值计算中,求解非线性方程是一个常见的问题。

二分法是一种简单而有效的求解非线性方程根的方法。

在MATLAB中,可以通过编写函数和使用循环结构来实现二分法求解方程根。

实验步骤:1. 编写函数f(x),表示待求解的非线性方程。

2. 设定初始区间[a, b],满足f(a) * f(b) < 0。

3. 利用二分法迭代求解方程根,直到满足精度要求或迭代次数达到预设值。

实验结果:通过在MATLAB中编写相应的函数和脚本,我们成功求解了多个非线性方程的根。

例如,对于方程f(x) = x^3 - 2x - 5,我们通过二分法迭代了5次,得到了方程的一个根x ≈ 2.0946。

二、高斯消元法解线性方程组线性方程组的求解是计算方法中的重要内容之一。

高斯消元法是一种常用的求解线性方程组的方法,它通过矩阵变换将线性方程组化为上三角矩阵,从而简化求解过程。

在MATLAB中,可以利用矩阵运算和循环结构来实现高斯消元法。

实验步骤:1. 构建线性方程组的系数矩阵A和常数向量b。

2. 利用高斯消元法将系数矩阵A化为上三角矩阵U,并相应地对常数向量b进行变换。

3. 利用回代法求解上三角矩阵U,得到线性方程组的解向量x。

实验结果:通过在MATLAB中编写相应的函数和脚本,我们成功求解了多个线性方程组。

例如,对于线性方程组:2x + 3y - z = 13x - 2y + 2z = -3-x + y + 3z = 7经过高斯消元法的计算,我们得到了方程组的解x = 1,y = -2,z = 3。

三、数值积分方法数值积分是计算方法中的重要内容之一,它用于计算函数在给定区间上的定积分。

用MATLAB计算椭圆周长及牛顿迭代的MATLAB实现

用MATLAB计算椭圆周长及牛顿迭代的MATLAB实现

一、 实验方案:用二分法和牛顿迭代法(包括弦截法)编程求方程02sin 2=-x x 的实根,要求误差不超过410-。

输出迭代次数,初始值和根的近似值;构造不同的迭代函数,用迭代法求解,并进行比较。

编写M 文件绘制该函数图形,源程序如下:function y=EX0111x=-1:0.1:2;y=sin(x)-(x.^2)/2;plot(x,y,'r')hold onplot(x,zeros(size(x)))hold offgrid运行后可以看出,函数的根在区间[1,1.5]。

所以,分析题意,编写二分法源程序如下:function y=EX0110syms x y ;y=sin(x)-(x.^2)/2;a=1;b=1.5;delta=0.0001;ya=subs(y,a);yb=subs(y,b);N=1+round((log(b-a)-log(delta))/log(2));for k=1:Ndx=yb*(b-a)/(yb-ya+eps);c=b-dx;ab=b-a;yc=subs(y,c);if yc==0,break ;elseif ya*yc<0b=c;yb=yc;elsea=c;ya=yc;enddd=min(abs(ab),abs(yc));if dd<delta,break ,endendddkc=b-dx运用牛顿迭代法编程,源程序如下:function y=fun(x)y=sin(x)-(x.^2)/2;和该函数导数:function y=dfun(x)y=cos(x)-x;以及牛顿迭代法:function [xk,k]=newtoneq(x0,n,derta)k=1;xk(1)=x0;t=x0-fun(x0)./dfun(x0);while abs(t-x0)>=dertax0=t;k=k+1;xk(k)=t;t=x0-fun(x0)./dfun(x0);if (k-1)>n error('n is full'),endend构造新的迭代函数为k k x x sin 21⨯=+,编辑源程序如下:function y=iter()syms x y ;y=sqrt(2*sin(x));x0=1;max=20;derta=0.0001;t=[x0];x=subs(y,x0);k=0;while abs(x-x0)>=dertat=[t,x];x0=x;x=subs(y,x0);k=k+1;if k>maxdisp('迭代次数超过最大次数。

二分法和牛顿迭代法求解方程的比较

二分法和牛顿迭代法求解方程的比较

二分法和牛顿迭代法求解方程的比较200822401018 徐小良一、问题叙述求解12 -3x +2COS X =0的解;通过编写 matlab程序分别用分析二分法和牛顿迭代法求解方程,通过两种方法的比较,分析二者求解方程的快慢程度。

二、问题分析由matlab画图命令,容易得到此方程解的范围为(2,4);两种迭代方法,在使用相同的误差(0.00001 )的情况下,得出 matlab迭代次数,通过次数的比较得出二者求解速度快慢比较。

三、实验程序及注释(1)、二分法程序:clear;f=inlin e('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>er0x0=.5*(a+b); y0=f(x0);if ya*y0<0b=x0;elsea=x0;ya=y0;enddis p([a,b]);er=b-a;k=k+1%求解区间;%误差分析;%二分法求解程序;%显示各个区间值和求解次数;enddis %显示最后一个区间值;(2)、牛顿迭代法程序:clear;f=inlin e('12-3*x+2*cos(x)'); %清除所有内存数据;%数据显示格式设为长型;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;%求解区间;、%牛顿迭代法求解程序;四、实验数据结果及分析五、实验结论通过表1可知,在二分法下,程序迭代了 17次后和第18次的结果一致,即程序迭代了 17次达到要求的试验误差;通过表 2可知,在牛顿迭代法下,程序迭代了 4次后和第5次的结果一致,即程序迭代了 4次达到要求的试验误差;二者比较明显可以看出牛顿迭代法的求解效率要远远优于二分法。

牛顿迭代法的实验报告

牛顿迭代法的实验报告

牛顿迭代法的实验报告牛顿迭代法是一种寻找函数零点的方法,它通过通过使用函数的导数来逼近实际零点。

在本实验中,我们使用了牛顿迭代法来求解一元高次方程的根。

实验目的:通过使用牛顿迭代法来求解一元高次方程的根,掌握牛顿迭代法的原理与应用。

实验器材与条件:- 电脑- MATLAB 软件实验原理:设函数 f(x) 在零点 x0 处有一阶导数f’(x0)不等于0,则 f(x)在点 x0 的切线方程为y = f’(x0) (x - x0) + f(x0)。

切线与 x 轴的交点为x1,有:f’(x0)(x1 - x0) + f(x0) = 0由于我们的目标是解方程 f(x) = 0,所以我们需要将上式改写成其中 x1 为由切线得到的下一个逼近值。

通过不断逼近 x1 直到误差满足一定要求,我们就可以以一个很高的精确度求解出方程的根。

实验步骤:本实验的目标是求解方程 x^3 - 2x -2 = 0 的根。

第一步,我们先定义该方程及其导数函数:syms x;f = x^3 - 2*x - 2;df = diff(f);其中 diff() 函数是 MATLAB 默认的求导函数。

第二步,我们设定初始值 x0,设定逼近误差 limit,然后进行牛顿迭代,直到误差小于 limit:x0 = 1;limit = 1e-6;diff_value = inf;while abs(diff_value) > limitx1 = x0 - subs(f, x0) / subs(df, x0);diff_value = subs(f, x1);x0 = x1;endx0通过运行上面的代码,我们可以得到方程的一个根,为 1.7693。

实验结果与分析:本实验顺利完成,我们使用牛顿迭代法成功求出了 x^3 - 2x - 2 = 0 的根,为 1.7693。

此结果与理论值非常接近,表明我们使用牛顿迭代法正确地找到了方程的根。

数值分析上机实验报告

数值分析上机实验报告

一、实验目的通过本次上机实验,掌握数值分析中常用的算法,如二分法、牛顿法、不动点迭代法、弦截法等,并能够运用这些算法解决实际问题。

同时,提高编程能力,加深对数值分析理论知识的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:MATLAB3. 实验工具:MATLAB数值分析工具箱三、实验内容1. 二分法求方程根二分法是一种常用的求方程根的方法,适用于连续函数。

其基本思想是:从区间[a, b]中选取中点c,判断f(c)的符号,若f(c)与f(a)同号,则新的区间为[a, c],否则为[c, b]。

重复此过程,直至满足精度要求。

2. 牛顿法求方程根牛顿法是一种迭代法,适用于可导函数。

其基本思想是:利用函数在某点的导数值,求出函数在该点的切线方程,切线与x轴的交点即为方程的近似根。

3. 不动点迭代法求方程根不动点迭代法是一种迭代法,适用于具有不动点的函数。

其基本思想是:从初始值x0开始,不断迭代函数g(x)的值,直至满足精度要求。

4. 弦截法求方程根弦截法是一种线性近似方法,适用于可导函数。

其基本思想是:利用两点间的直线近似代替曲线,求出直线与x轴的交点作为方程的近似根。

四、实验步骤1. 二分法求方程根(1)编写二分法函数:function [root, error] = bisection(a, b, tol)(2)输入初始区间[a, b]和精度要求tol(3)调用函数计算根:[root, error] = bisection(a, b, tol)2. 牛顿法求方程根(1)编写牛顿法函数:function [root, error] = newton(f, df, x0, tol)(2)输入函数f、导数df、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = newton(f, df, x0, tol)3. 不动点迭代法求方程根(1)编写不动点迭代法函数:function [root, error] = fixed_point(g, x0, tol)(2)输入函数g、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = fixed_point(g, x0, tol)4. 弦截法求方程根(1)编写弦截法函数:function [root, error] = secant(f, x0, x1, tol)(2)输入函数f、初始值x0和x1,以及精度要求tol(3)调用函数计算根:[root, error] = secant(f, x0, x1, tol)五、实验结果与分析1. 二分法求方程根以方程f(x) = x^2 - 2 = 0为例,输入初始区间[a, b]为[1, 3],精度要求tol 为1e-6。

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

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

MATLAB计算方法迭代法牛顿法二分法实验报告实验目的:本实验旨在通过MATLAB编程实现迭代法、牛顿法和二分法,并通过实例验证其准确性和收敛速度。

实验原理:迭代法是一种通过不断迭代逼近根的方法,其基本原理是选择一个初始值,然后通过迭代公式不断逼近根的值,直到满足给定的精度要求。

牛顿法是一种通过不断迭代求函数的零点的方法,其基本原理是通过当前点的切线与x轴的交点来逼近根的值,直到满足给定的精度要求。

二分法是一种通过不断将区间一分为二来逼近根的方法,其基本原理是通过判断根是否落在区间的两个端点之间,然后将区间一分为二,直到满足给定的精度要求。

实验步骤:1.编写迭代法的MATLAB代码,实现对给定函数的根的逼近。

2.编写牛顿法的MATLAB代码,实现对给定函数的根的逼近。

3.编写二分法的MATLAB代码,实现对给定函数的根的逼近。

4.针对不同的函数,分别使用迭代法、牛顿法和二分法进行根的逼近,并记录每种方法的迭代次数和逼近结果。

5.对比三种方法的迭代次数和逼近结果,分析其准确性和收敛速度。

实验结果:以求解方程x^3-2x-5=0为例,使用迭代法、牛顿法和二分法进行根的逼近。

迭代法:迭代公式:x(n+1)=(2x(n)+5)^(1/3)初始值:x(0)=2迭代次数:6逼近结果:2.0946牛顿法:初始值:x(0)=2迭代次数:4逼近结果:2.0946二分法:初始区间:[1,3]迭代次数:11逼近结果:2.0946实验结论:通过对比三种方法的迭代次数和逼近结果可以发现,迭代法和牛顿法的收敛速度都要快于二分法,并且迭代法和牛顿法的逼近结果也更为接近真实根。

这是因为迭代法和牛顿法都是通过不断逼近根的值来求解,而二分法则是通过将区间一分为二来逼近根的值,所以迭代法和牛顿法的收敛速度更快。

总结:本实验通过MATLAB编程实现了迭代法、牛顿法和二分法,并通过实例验证了它们的准确性和收敛速度。

实验结果表明,迭代法和牛顿法在求解根的过程中具有更快的收敛速度和更接近真实根的逼近结果,而二分法的收敛速度较慢。

二分法,不动点迭代法,艾特肯加速迭代法,牛顿切线法的matlab程序及举例

二分法,不动点迭代法,艾特肯加速迭代法,牛顿切线法的matlab程序及举例

§2.1.1 二分法的MATLAB主程序function [k,x,wuca,yx]=erfen(a,b,abtol)a(1)=a; b(1)=b;ya=fun(a(1)); yb=fun(b(1)); %程序中调用的fun.m 为函数if ya* yb>0,disp('注意:ya*yb>0,请重新调整区间端点a和b.'), returnendmax1=-1+ceil((log(b-a)- log(abtol))/ log(2)); % ceil是向∞+方向取整for k=1: max1+1a;ya=fun(a); b;yb=fun(b);x=(a+b)/2;yx=fun(x); wuca=abs(b-a)/2; k=k-1;[k,a,b,x,wuca,ya,yb,yx]if yx==0a=x; b=x;elseif yb*yx>0b=x;yb=yx;elsea=x; ya=yx;endif b-a< abtol , return, endendk=max1; x; wuca; yx=fun(x);§2.1.2 不动点迭代法的MATLAB主程序function[k,piancha,xdpiancha,xk,yk]=diedai2(x0,tol,ddm ax)x(1)=x0;for i=1: ddmaxx(i+1)=fun(x(i));piancha=abs(x(i+1)-x(i));xdpiancha=piancha/( abs(x(i+1))+eps);i=i+1;xk=x(i);yk=fun(x(i)); [(i-1) piancha xdpiancha xk yk]if (piancha<tol)|(xdpiancha< tol)k=i-1; xk=x(i);return;endendif i>ddmaxdisp('迭代次数超过给定的最大值ddmax')k=i-1; xk=x(i);yk=fun(x(i));[(i-1) piancha xdpiancha xk yk];return;endP=[(i-1),piancha,xdpiancha,xk,yk]'; §2.1.3 艾特肯加速迭代法的MATLAB主程序function [k,xk,yk,p]= Aitken (x0,tol, ddmax) x(1)=x0;for i=1: ddmaxx1(i+1)=fun(x(i));x2(i+1)=fun(x1(i+1));x(i+1)=x2(i+1)-(x2(i+1)-x1(i+1))^2/(x2(i+1)-2*x1(i+1)+ x(i));piancha=abs(x(i+1)-x(i));xdpiancha=piancha/( abs(x(i+1))+eps);i=i+1; xk=x(i);yk=fun(x(i));if(piancha<tol)|(xdpiancha<tol)k=i-1; xk=x(i);yk=fun(x(i));m=[0,1:i-1];p=[m',x1',x2',x'];return;endendif i>ddmaxdisp('迭代次数超过给定的最大值ddmax')k=i-1; xk=x(i); yk=fun(x(i));m=[0,1:i-1]; p=[m',x1',x2',x'];return;endm=[0,1:i-1]; p=[m',x1',x2',x'];§2.1.4 牛顿切线法的MATLAB主程序function[k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ft ol,gxmax)x(1)=x0;for i=1: gxmaxx(i+1)=x(i)-fun(x(i))/(dfun(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha=piancha/( abs(x(i+1))+eps); i=i+1;xk=x(i);yk=fun(x(i)); [(i-1) xk yk piancha xdpiancha]if(abs(yk)<ftol)&((piancha<tol)|(xdpiancha< tol))k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]return;endendif i>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。

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

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

姓名 实验报告成绩评语:指导教师(签名) 年 月 日 说明:指导教师评分后,实验报告交院(系)办公室保存。

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

并比较方法的优劣。

二、 实验原理(1)、二分法对方程0)(=x f 在[a ,b]内求根。

将所给区间二分,在分点2a b x -=判断是否0)(=x f ;若是,则有根2ab x -=。

否则,继续判断是否0)()(<•x f a f ,若是,则令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 代入上式。

迭代公式为:=+1k x -0x )(')(k k x f x f 。

三、 实验设备:MATLAB 7.0软件四、 结果预测 (1)11x =0.09033 (2)5x =0.09052 (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-⨯。

牛顿迭代法与二分法1

牛顿迭代法与二分法1

用二分法和牛顿迭代法编程一. 实验课题用二分法和牛顿迭代法编程求方程sinx-x²/2=0的实根,要求误差不超过0.00001。

输出迭代次数,初始值和根的近似值;再构造不同的迭代函数,用迭代法求解,并进行比较。

二. 实验步骤(一) 用matlab作函数y=sinx-x²/2的图,步骤如下:先作一个名为fun1.m的 M文件function y1=fun1(x)y1=sinx-x²/2;接着使用下列命令在区间[-0.5,2]上作该函数的图象,并估计y1=0时x的根的大致区间。

x=-0.5:0.01:2;plot (x,fun1(x),‘b’)hold onplot(x,zeros(size(x)))hold offgrid由图象的结果观察可知:上述方程在(1,1.5)上有一实根。

(二)用二分法求方程的近似根由|b-a|/(2^(n+1))≤ε可以得到n≥13,故预定最大计算次数为15次。

作一个名为fun2.m的M文件,步骤如下:function X=fun2(a,b)n=15; ε=0.01; k=1; X=(a+b)/12;while fabs(a-b)≥εif fun1(X)==0;breakendif fun1(a)*fun1(X)<0; b=X;else a=X;endk=k+1;if k>n,k, error(‘fail’)else X=(a+b)/2;endend[‘Iterative times=’,int2str(k)]在命令窗口输入命令:r=fun2(1,1.5)运行后得到结果为:ans=Iterative times=13 r=1.4408(三)用牛顿迭代法求方程的近似根具体步骤如下:1. 选择迭代函数φ(x)=x-f(x)/f’(x)。

2.选定初始值x0与x1,并算出相应的f(x0)与f(x1),并保证迭代算出的x1比x0更接近所求的根。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名 _______________ 实验报告成绩 __________________________ 评语:指导教师(签名)说明:指导教师评分后,实验报告交院(系)办公室保存实验一方程求根一、实验目的用各种方法求任意实函数方程f(X)=0在自变量区间[a,b]上,或某一点附近的实根。

并比较方法的优劣。

二、实验原理(1)、二分法b - a—----- 对方程f(x)=0在[a,b]内求根。

将所给区间二分,在分点2判b - a断是否f(x)=0;若是,则有根-2。

否则,继续判断是否f(a)・f(x) :::°, 若是,则令b二x,否则令a=x。

否则令a = x。

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

(2)、迭代法将方程f(x)=0等价变换为x = ® ( x )形式,并建立相应的迭代公式X k 1 5 ( x ) o(3)、牛顿法若已知方程的一个近似根X。

,则函数在点X。

附近可用一阶泰勒多项式5(口^(冷厂f'(X0)(x-X0)来近似,因此方程f(x)=0可近似表示为 f (人)f(x0厂f'(X0)(x-X) =0设fgF,则x=X0- f'(X0)。

取X作为原方程新的近f (X k)似根X1,然后将X1作为x0代入上式。

迭代公式为:X ki=X0- f'(xk)。

三、实验设备:MATLAB 7.0软件四、结果预测(1) 心=0.09033 (2) x5=0.09052 (3) x2=0,09052五、实验内容(1)、在区间[0,1]上用二分法求方程e x+10x — 2 = 0的近似根,要求误差不超过°5 10'。

f (X k)(2)、取初值x°=0,用迭代公式f'(X k),求方程e X+10x-2 = 0的近似根。

要求误差不超过°5 10。

(3)、取初值X o=0,用牛顿迭代法求方程e x+10x-2=0的近似根。

要求误差不超0.5 10"。

过六、实验步骤与实验程序(1)二分法第一步:在MATLAB 7.0软件,建立一个实现二分法的MATLAB函数文件agui_bisect.m 女口下:fun cti on x=agui_bisect(fname,a,b,e)%fname为函数名,a,b为区间端点,e为精度fa=feval(fname,a); % 把a端点代入函数,求fafb=feval(fname,b); % 把b端点代入函数,求fbif fa*fb>0 error(' 两端函数值为同号');end%如果fa*fb>0,则输出两端函数值为同号k=0x=(a+b)/2while(b-a)>(2*e) % 循环条件的限制fx二feval(fname,x);% 把x代入代入函数,求fxif fa*fx<0% 如果fa与fx同号,则把x赋给b,把fx赋给fbb=x;fb=fx;else%如果fa与fx异号,则把x赋给a,把fx赋给faa=x;fa=fx;endk=k+1%计算二分了多少次x=(a+b)/2 %当满足了一定精度后,跳出循环,每次二分,都得新的区间断点a和b,则近似解为x=(a+b)/2end第二步:在MATLAB^令窗口求解方程f(x)=e A x+10x-2=0 ,即输入如下>>fu n=inlin e('exp(x)+10*x-2')>> x=agui_bisect(fu 门,0,1,0.5*10八-3)第三步:得到计算结果,且计算结果为k =Command Windowfun =Inline function: fun(x) = exp(x)+10*x-2» x=agui_bisect (fun, 0,1,0.5*10*3)x =0.062500000000000.09375000000000Command Window2x =0.125000000000000.500000000000000.25000000000000x =0. D9082031250000k =10m 二0.090332031250000. 08984375000000 (2) 迭代法x =0. 09033203125000第一步:第一步:在MATLAB.0软件,建立一个实现迭代法的 函数文件 agui_main.m 女口下:fun cti on x=agui_ma in( fname,xO,e)%fname 为函数名dfname 的函数fname 的导数,x0为迭代初值 %点为精度,N 为最大迭代次数(默认为100) N=100;x=x0; %把x0赋给x ,再算x+2*e 赋给x0 x0=x+2*e; k=0;Command Window X =0. 09179S875000G00.078125000000000. 08593750000000 MATLABwhile abs(xO-x)>e&k<N %循环条件的控制:x0-x的绝对值大于某一精度,和迭代次数小于Nk=k+1 %显示迭代的第几次x0=x;x=(2-exp(x0))/10 % 迭代公式disp(x)% 显示xendif k==N warning(' 已达到最大迭代次数');end % 如果K=N则输出已达到最大迭代次数第二步:在MATLAB^令窗口求解方程f(x)=e A x+10x-2=0 ,即输入如下>>fu n=inlin e('exp(x)+10*x-2')>> x=agui_ma in(fun, 0,1,0.5*10八-3)第三步:得出计算结果,且计算结果为以下是结果的屏幕截图Command WindowCommand Window0.09051261067437第一步:第一步:在 MATLAB 7.0软件,建立一个实现牛顿迭代法的MATLAB!数文件二agui_newton.m 如下: fun cti on x=agui_ newt on( fname,dfname,xO,e)fun =0.08948290819244Inline function: fm(x) = exp (x)+10*x-2» x=agui_main(funj 0,0. b* W3)0.090639135859580.100000000000000. 0894S29QS19244(3) 牛顿迭代法0.09051261667437»%fname为函数名dfname的函数fname的导数,x0为迭代初值%点为精度,N为最大迭代次数(默认为100)N=100;x=x0; %把x0赋给x,再算x+2*e赋给x0x0=x+2*e;k=0;while abs(x0-x)>e&k<N %循环条件的控制:x0-x的绝对值大于某一精度,和迭代次数小于Nk=k+1 %显示迭代的第几次x0=x;x=x0-feval(fname,x0)/feval(dfname,x0);% 牛顿迭代公式disp(x)% 显示xendif k==N warning(' 已达到最大迭代次数');end % 如果K=N则输出已达到最大迭代次数第二步:在MATLAB^令窗口求解方程f(x)=e A x+10x-2=0 ,即输入如下>>fu n=inlin e('exp(x)+10*x-2')>> dfun=i nlin e('exp(x)+10')>> x=agui_newto n(fun ,dfu 门,0,0.5*10八-3)第三步:得出结果,且结果为以下是结果的屏幕截图Command Window Command Wihdow>> fun=inline (' esp (x ) + 1 ) fun =Inline function;fun(x) - exp(x)+10*x-2>> dfun= inline C exp (K)十10J ) dfun = Iniinc function:dfun(© = exp (x)+10>> agui^nevton(fuiij dfun,氐0.k =fun(x) = exp (x) + 10*x-2>> dfun=inline(,exp(x)+107)dfun =Inline funct ian:dfun (K) = exp G E)+10>> x=agui_nevt on (fun, dfurij 0, 0, 5*10^-^ k = 10.0909090909090910.09090009090909 k =20,090525103583^320.09052510858339£:0,09052510358339七、实验结果(1)心=0.09033 (2) x5=o.o9O52 (3)x2=0,09052八、实验分析与结论由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=11次,迭代法要迭代k=5次,牛顿法要迭代k=2次才能达到精度为0.5 10 -的要求,而且方程e「10x_2=0 的精确解经计算,为0.0905250,计算量从大到小依次是:二分法,迭代法, 牛顿法。

由此可知,牛顿法和迭代法的精确度要优越于二分法。

而这三种方法中,牛顿法不仅计算量少,而且精确度高。

从而可知牛顿迭代法收敛速度明显加快。

可是迭代法是局部收敛的,其收敛性与初值x0有关。

二分法收敛虽然是速度最慢,但也有自己的优势,可常用于求精度不高的近似根。

迭代法是逐次逼近的方法,原理简单,但存在收敛性和收敛速度的问题。

对与不同的题目,可以从三种方法的优缺点考虑用哪一种方法比较好。

相关文档
最新文档