非线性方程的数值计算方法实验

合集下载

5-非线性方程组的数值解法及最优化方法

5-非线性方程组的数值解法及最优化方法
然后通过各种下降法或优化算法求出模函数的极小值点,此 极小值点即为非线性方程组的一组解。
非线性方程组的数值解法
不动点迭代法:根据非线性方程求根的迭代法,将方程组改 写为如下等价方程组
xi i x1, x2,, xn , i 1,2,, n
构造迭代公式
xik 1 i x1k , x2k ,, xnk , i 1,2,, n
非线性方程组的数值解法
若对任意A Cmn 都有一个实数 A 与之对应,且满足:
(1)非负性:当 A O 时, A 0 ;当A O 时,A 0;
(2)齐次性:对任何 C ,A A ;
(3)三角不等式:对任意 A, B C nn ,都有A B A B ;
(4)相容性:对任意A, B C nn ,都有 AB A B ,


18
(0.2325670051,0.0564515197)
19
(0.2325670051,0.0564515197)
max
1 i 2
xik
xik
1
0.2250 0.0546679688 0.0138638640 0.0032704648 0.0008430541 0.0001985303 0.0000519694 0.0000122370 0.0000032485 0.0000007649
10-9
非线性方程组的数值解法
练习题:用牛顿迭代法求解方程组
取 X 0 1.6,1.2T
xx1122
x22 x22
4 1
结果:1.5811,1.2247
非线性方程组的数值解法
应用经过海底一次反射到达水听器阵的特征声线传播时间, 来反演海底参数。假设水中和沉积层声速都是恒定的,海底 沉积层上界面水平,下界面倾斜。特征声线由水中声源出发 折射进入沉积层,经过沉积层的下界面反射后,再折射进入 水中,由水中水听器阵接收。特征声线的传播时间为声线在 水中和沉积层中的传播时间之和。 三维坐标关系如图所示:

数值计算实验报告

数值计算实验报告

数值计算实验报告数值计算实验报告引言:数值计算是一门研究利用计算机进行数值计算的学科,它在科学研究和工程实践中具有重要的应用价值。

本实验报告旨在通过对数值计算实验的探索和分析,展示数值计算在解决实际问题中的应用和效果。

一、实验目的本次实验的主要目的是研究数值计算在求解非线性方程和数值积分中的应用。

通过实验,我们将探索不同数值计算方法的优劣,并分析其适用范围和精度。

二、实验原理1. 非线性方程求解非线性方程是指未知数与其系数之间存在非线性关系的方程。

常见的求解方法有二分法、牛顿法和割线法等。

本实验将比较不同方法在求解非线性方程时的收敛速度和计算精度。

2. 数值积分数值积分是通过将一个函数在一定区间上进行离散化,然后进行求和来近似计算定积分的方法。

本实验将使用复合梯形公式和复合辛普森公式来计算定积分,并比较两种方法的精度和计算效率。

三、实验步骤1. 非线性方程求解实验首先,我们选择一个非线性方程作为实验对象,例如:f(x) = x^3 - 2x - 5。

然后,我们使用二分法、牛顿法和割线法分别求解该方程,并记录每种方法的迭代次数和解的精度。

2. 数值积分实验我们选取一个函数作为被积函数,例如:f(x) = sin(x)。

然后,我们使用复合梯形公式和复合辛普森公式对该函数在一定区间上进行积分,并记录每种方法的计算结果和误差。

四、实验结果与分析1. 非线性方程求解结果通过实验,我们得到了使用二分法、牛顿法和割线法求解非线性方程的结果。

比较三种方法的迭代次数和解的精度,我们可以发现牛顿法收敛速度较快,但对初始值的选取较为敏感;割线法在收敛速度和精度上相对稳定;而二分法则收敛速度较慢,但对初始值的选取要求较低。

2. 数值积分结果通过实验,我们得到了使用复合梯形公式和复合辛普森公式进行数值积分的结果。

比较两种方法的计算结果和误差,我们可以发现复合辛普森公式具有更高的精度,但计算效率相对较低;而复合梯形公式计算速度较快,但精度相对较低。

数值分析实验报告——非线性方程求根

数值分析实验报告——非线性方程求根

数值分析实验报告——非线性方程求根一、实验目的:1.掌握求解非线性方程的常用方法;2.了解非线性方程求根问题的数值解法;3.熟悉使用数值分析软件进行非线性方程求根的实现。

二、实验原理:非线性方程指的是形如f(x)=0的方程,其中f(x)是一个非线性函数。

非线性方程求根的常用方法包括二分法、割线法和牛顿法等。

其中,二分法是通过不断缩小区间范围来逼近方程的解;割线法是通过使用割线来逼近方程的解;牛顿法则是通过使用切线来逼近方程的解。

对于给定的非线性方程,可以根据实际情况选择合适的方法进行求根。

三、实验内容:1.编写求解非线性方程的函数,包括二分法、割线法和牛顿法;2.使用编写的函数求解给定的非线性方程,比较各个方法的收敛速度和精确程度;3.根据实际情况分析和选择合适的方法进行求根。

四、实验步骤:1.针对给定的非线性方程,编写二分法的函数实现:(1)首先确定方程的解存在的区间;(2)根据方程的解存在的区间,使用二分法逐步缩小区间范围;(3)根据设定的精度要求,不断循环迭代,直至满足要求或达到迭代次数限制;2.针对给定的非线性方程,编写割线法的函数实现:(1)首先需要确定方程的解存在的初始点;(2)根据方程的解存在的初始点,根据割线的定义进行迭代;(3)设定迭代的精度要求和限制次数,结束迭代;3.针对给定的非线性方程,编写牛顿法的函数实现:(1)首先需要确定方程的解存在的初始点;(2)根据方程的解存在的初始点,根据牛顿法的定义进行迭代;(3)设定迭代的精度要求和限制次数,结束迭代;4.根据给定的非线性方程,分别使用二分法、割线法和牛顿法进行求解,并比较各个方法的收敛速度和精确程度;5.分析实际情况,选择合适的方法进行求解。

五、实验结果:4.通过比较,发现割线法和牛顿法的收敛速度较快,精确程度较高,因此选择割线法进行求解。

六、实验总结:通过本次实验,我掌握了求解非线性方程的常用方法,并使用数值分析软件实现了二分法、割线法和牛顿法。

实验一非线性方程组求解实验报告

实验一非线性方程组求解实验报告

计算方法实验报告专业班级:姓名:学号:实验成绩:1.【实验题目】非线性方程组求解2.【实验目的】(1).掌握二分法、迭代法、牛顿迭代法求方程近似根的基本思想与原理。

(2).掌握常用迭代算法的程序实现。

3.【实验内容】迭代法是求解非线性方程的基本方法,其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。

考虑一个简单的代数方程,针对该方程,可以构造多种迭代法,如:取初始值,取,分别用以上迭代格式作实验,记录各算法的迭代过程4. 【实验要求】(1)取定某个初始值,按方案1~3对非线性方程求根,它们的收敛性如何?重复选取不同的初始值,反复实验。

请读者自行设计一种比较形象的记录方式(如利用Matlab的图形功能),分析三种迭代法的收敛性与初值选取的关系。

(2)对三个迭代格式的某一种,分别取不同的初始值进行迭代,结果如何?试分析迭代法对不同的初值是否有差异?(3)对代数方程,分别用方案1 用二分法求解;方案2 用牛顿法求解;5. 【算法描述】二分法算法步骤1)计算有根区间的端点a,b及预先给定的精度e。

2)计算中点(a+b)/2。

3)若f(x)f(a)<0,则x b,转向4);否则,x a,转向4).⇒⇒4)若b-a<e,则输出满足精度的根x,结束;否则转向2)。

牛顿法迭代法的计算步骤x01)给出初始近根及精度e。

2)计算。

x x x x f f 1000)(')(⇒-3)若|-|<e ,则转向4);否则转向2)。

x 1x 0x x 01⇒4)输出满足精度的根,结束。

x 16. 【源程序(带注释)】二分法#include<stdio.h>#include<math.h>#include<conio.h>#include<windows.h>float f(float x){float a;a=x*x*x-x-1;return a;} /*求函数值,如果求其它函数,只需改成其它函数即可*/ main(){float a,b,e,x; /* a,b 分别表示有根区间的左、右端点, e 是精度要求,x 区间中点值*/system("CLS");//清屏printf("对代数方程x^3-x-1=0,分别用\n 方案1 用二分法求解\n");printf(" \n please input data a =");scanf("%f",&a);printf(" \n please input data b=");scanf("%f",&b);if(f(a)*f(b)<0){while(f(x)!=0){x=(a+b)/2;if(f(x)*f(a)<0){b=x;if(fabs(b-a)<0.000001)break;elsecontinue;}else{a=x;if(fabs(b-a)<0.000001)break;else continue;}}printf("\n");x=(b+a)/2;printf("the root of f(x)=0 is x=%f\n",x);}elseprintf("\ not root! afresh input\n"); /*表示[a,b] 区间无根,重新选择有根区间*/getch();return(x);}牛顿法#include<stdio.h>#include<math.h>#include<conio.h>#include<windows.h>#define maxrept 1000 /*最大迭代次数*/float f(float x) {float a;a=x*x*x-x-1;return a; /*函数f(x) */}float df(float x) {return(1+exp(-x)); /* 函数f(x)的导数) (x f ′*/ }float iterate(float x) {float x1;x1=x-f(x)/df(x); /* 牛顿迭代函数iterate(x)=x-f(x) / ) (x f ′*/return(x1);}main() {float x0,x1,d;int k=0;//clrscr();system("CLS");printf("对代数方程x^3-x-1=0,分别用\n方案2 用牛顿法求解\n");printf("\n please input x0="); /* 输入迭代初值x0 */scanf("%f",&x0);printf("\n k xk\n");printf("\ %d %f\n",k,x0);do {k++;x1=iterate(x0);printf(" %d %f\n",k,x1);d=fabs(x1-x0);x0=x1;}while((d>=0.000001)&(k<maxrept));if(k<maxrept)printf("the root of f(x)=0 is x=%f, k=%d\n",x1,k);elseprintf("\n the iteration is failed!\n");getch();}7.【实验结果与分析总结(含运行结果截图)】。

数值分析实验报告——非线性方程求根

数值分析实验报告——非线性方程求根

数值分析实验报告——非线性方程求根二分法一、题目用二分法求方程=的所有根x.13要求每个根的误差小于-x+0.001..21二、方法二分法三、程序1、Jiangerfen.M的程序function[c,yc]=jiangerfen(f,a,b,tol1,tol2)if nargin<4 tol1=1e-3;tol2=1e-3;end%nargin<4表示若赋的值个数小于4,则tol1和tol2取默认值。

ya=feval('f',a);%令x=a代入到方程f中,ya即f(a)。

yb=feval('f',b);if ya*yb>0,disp('(a,b)不是有根区间');return,endmax=1+round((log(b -a)-log(tol2))/log(2));%round函数是将数据取整,使数据等于其最接近的整数。

for k=1:maxc=(a+b)/2;yc=feval('f',c);if((b-a)/2<tol2)|(abs(yc)<tol1),break,endif yb*yc<0a=c;ya=yc;elseb=c;yb=yc;endendk,c=(a+b)/2,yc=feval('f',c)2、f.M的程序function y=f(x);y=x^3-2*x-1;四、结果>> format compact>> fplot('[x^3-2*x-1,0]',[-1.5,2]);>> jiangerfen('f',-1.5,-0.8);k =8c =-0.9996yc =3.9017e-004>> jiangerfen('f',-0.8,-0.3);k =8c =-0.6184yc =2.7772e-004>> jiangerfen('f',1.3,2);k =10c =1.6179yc =-9.5348e-004>> jiangerfen('f',2,3);(a,b)不是有根区间方程f(x)=x^3-2*x-1的所有根为-0.9996,-0.6184 ,1.6179 。

科学计算与数学建模实验报告牛顿法求解非线性方程

科学计算与数学建模实验报告牛顿法求解非线性方程

科学计算与数学建模实验报告牛顿法求解非线性方程一、引言非线性方程是数学中的一个重要研究内容,其求解方法有很多,其中之一就是牛顿法。

牛顿法是一种迭代方法,通过不断逼近函数的零点来求解非线性方程。

在本实验中,我们将使用牛顿法来求解给定的非线性方程,并验证其有效性。

二、实验方法1.确定问题:给定非线性方程f(x)=0,需要求解方程的根。

2.初始化:选择一个初始解x_0,并给定停止准则,如迭代次数、函数误差等。

3.迭代计算:a)计算函数f(x)在x_i处的导数f'(x_i)。

b)利用牛顿迭代公式进行迭代计算:x_{i+1}=x_i-f(x_i)/f'(x_i)。

c)检查迭代终止条件,若满足条件则停止迭代,否则返回步骤a)继续迭代。

4.输出结果:输出迭代过程中的迭代次数和解x。

三、实验结果我们选择一个较为简单的非线性方程f(x)=x^2-2来进行牛顿法求解。

初始解选取为x_0=1,停止准则为函数误差小于等于0.0001根据上述计算方法,我们进行迭代计算,并记录迭代次数和解x的变化情况。

具体结果如下表所示:迭代次数解x-----------------11.521.416731.414241.4142(收敛)从表中可以看出,当迭代4次时,解x已经收敛于1.4142,符合停止准则,因此我们可以认为此时已经找到了方程的根。

四、实验讨论通过上述实验可以发现,牛顿法是一种有效的求解非线性方程的方法。

它利用了函数在特定点处的导数的信息来逼近函数的零点,从而实现了迭代计算。

同时,牛顿法的收敛速度比较快,迭代次数较少,可以在较短的时间内找到方程的根。

然而,牛顿法也存在一些不足之处。

首先,它对初始解的选择较为敏感,不同的初始解可能导致迭代结果的差异。

其次,牛顿法可能出现发散现象,即迭代过程无法收敛到方程的根。

因此,对于一些复杂的非线性方程,我们需要选择合适的方法来求解。

五、总结通过本次实验,我们了解了牛顿法求解非线性方程的基本过程,并验证了其有效性。

非线性方程实验报告

非线性方程实验报告

2009年——2010年第一学期合肥学院数理系实验报告课程名称:数值分析实验项目:数值积分实验类别:验证性专业班级:08数学与应用数学(2)姓名:卢王菲学号:0807022048 实验地点:7#604实验时间:2009—11-26指导教师:孙梅兰成绩:一.实验目的:理解并掌握二分法、不动点迭代、牛顿切线法及弦截法解非线性方程求根的原理,掌握相应的算法原理,通过计算机解决实验问题二.实验内容:1.求方程01)(3=--=x x x f 在5.1=x 附近的根(精度81021-⨯=),取01x =2. 求方程x x e -=在0.5x =附近的根(精度81021-⨯=),取01x =三 实验方案:利用二分法、不动点迭代、牛顿切线法及弦截法解非线性方程的根,通过计算机解决实验问题。

四. 实验步骤或程序:1. >> f=inline('x^3-x-1');a=1;b=2;dlt=0.5e-5;k=1;while abs(b-a)>dltc=(a+b)/2;if f(c)==0break;elseif f(c)*f(b)<0a=c;else b=c;endfprintf('k=%d,x=%.5f\n',k,c);k=k+1;endk=1,x=1.50000k=2,x=1.25000k=3,x=1.37500k=4,x=1.31250k=5,x=1.34375k=7,x=1.32031k=8,x=1.32422k=9,x=1.32617k=10,x=1.32520k=11,x=1.32471k=12,x=1.32495k=13,x=1.32483k=14,x=1.32477k=15,x=1.32474k=16,x=1.32472k=17,x=1.32471k=18,x=1.324722.>> eps=0.5*10^(-8);dx=1;x0=1;k=0; >> while(dx>eps)k=k+1;x=exp(-x0);dx=abs(x-x0)/(1+abs(x));x0=x;end>> kxk =33x =0.5671五.程序运行结果:1.k=1,x=1.50000k=2,x=1.25000k=3,x=1.37500k=4,x=1.31250k=5,x=1.34375k=6,x=1.32813k=7,x=1.32031k=8,x=1.32422k=9,x=1.32617k=11,x=1.32471k=12,x=1.32495k=13,x=1.32483k=14,x=1.32477k=15,x=1.32474k=16,x=1.32472k=17,x=1.32471k=18,x=1.324722. k =33x =0.5671六.实验总结:通过本次实验本人收获很多。

数值分析实验报告纸非线性方程的数值解法及其并行算法

数值分析实验报告纸非线性方程的数值解法及其并行算法

>>二 :牛顿切线
[k,piancha,xdpiancha,xk,yk]=diedai2(1.5,0.0001,100) ans = 1.0000 ans = 2.0000 ans = 3.0000 ans = 4.0000 ans = 5.0000 ans = 6.0000 ans = 7.0000 ans = 0.8306 1.2408 0.6694 1.5361
i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk] end if (piancha >1)&(xdpiancha>0.5)&(k>3) disp('请用户注意:此迭代序列发散,请重新输入新的迭 代公式') return; end if (piancha < 0.001)&(xdpiancha< 0.0000005)&(k>3) disp('祝贺您!此迭代序列收敛,且收敛速度较快') return; end p=[(i-1) piancha xdpiancha xk]'; 建立并保存下面的M文件fun.m function y=fun(x) y=2*x^3-x^2-5; >>[k,piancha,xdpiancha,xk,yk]=diedai2(1.5,0.0001,30) 牛顿切线法的 MATLAB 主程序 现提供名为 newtonqx.m 的 M 文件: function [k,xk,yk,piancha,xdpiancha]=newtonqx(x0,tol,ftol,gxma x) x(1)=x0; for i=1: gxmax x(i+1)=x(i)-fnq(x(i))/(dfnq(x(i))+eps); piancha=abs(x(i+1)-x(i)); xdpiancha= piancha/( abs(x(i+1))+eps); i=i+1; xk=x(i);yk=fnq(x(i)); [(i-1) xk yk piancha
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

非线性方程的数值计算方法实验
《数值方法》实验报告
1
【摘要】在利用数学工具研究社会现象和自然现象,或解决工程技术等问题
?0的求解问题,时,很多问题都可以归结为非线性方程f(x)无论在理论研究方
面还是在实际应用中,求解非线性方程都占了非常重要的地位。

综合当前各类非线性
方程的数值解法,通过比较分析,二分法,迭代法,牛顿―拉夫森方法,迭代法的收敛阶
和加速收敛方法,以上的算法应用对某个具体实际问题选择相应的数值解法。

关键词非线性方程;二分法;迭代法;牛顿-拉夫森法;割线法等。

一、实验目的
通过本实验的学习,应掌握非线性方程的数值解法的基本思想和原理,深刻认识现实
中非线性方程数值的意义;明确代数精度的概念;掌握二分法、不动点迭代法、牛顿迭代法、割线法等常用的解非线性方程的方法;培养编程与上机调试能力。

二、实验原理
二分法:单变量函数方程: f(x)=0
其中,f(x)在闭区间[a,b]上连续、单调,且f(a)*f(b)<0,则有函数的介值定理可知,方程f(x)=0在(a,b)区间内有且只有一个解x*,二分法是通过函数在区间端点的符
号来确定x*所在区域,将有根区间缩小到充分小,从而可以求出满足给定精度的根x*的
近似值。

下面研究二分法的几何意义:
设a1=1, b1=b, 区间?a1,b1?,中点x1=
a1?b1及f?x1?,若f?x1?=0,则x*=x1,2若 f(a1)*f(x1)<0,令a2=a1,b2=x1,则
根x*? [a2,b2]中,这样就得到长度缩小一半的有根区间[a2,b2],若 f(b1)*f(x1)<0,令
a2=x1,b2=b1,则根x*? [a2,b2]中,这样就得到长度缩小一半的有根区间[a2,b2],即
f(a2)f(b2)<0,此时b2-a2=
b1?a1,对有根区间[a2,b2]重复上述步骤,即分半求中点,判断中2电处符号,则可
得长度有缩小一半的有根区间[a2,b2],
《数值方法》实验报告
2
如图所示:
重复上述过程,第n步就得到根x*的近似序列?xn?及包含x*的区间套,如下:(1)[a1,b1]?[a2,b2]?....[an,bn]?... (2)f(an)f(bn)?0,x*?[an,bn] (3)an-
bn=1=…=2(an?1?bn?1)(4) xn?b?a 2n?1an?bnb?a,且|x*-xn|?n?1 (n=1,2,3…..) 22
显然limxn,且xn以等比数列的收敛速度收敛于x*,因此用二分法求f(x)=0的实根x*可以达到任意指定精度。

(二)迭代法:对给定的方程给定初值
,由此来构造迭代序列
,有
,则
就是方程
,将它转达换成等价形式:。

,如果迭代法收敛,即
的根。

在计算中当
小于给定的精度控制量时,取为方程的根。

《数值方法》实验报告
3
(三)牛顿迭代法:设方程f(x)=0在其根x*的某个领域U(x*,?)内有一阶连续导数,且f’(x*) ≠0。

求f(x)=0的根x*,首先要将f(x)=0转化为等价形式x??(x),并使? (x)满足不动点迭代的一般理论。

于是我们令? (x)=x+h(x)f(x),可由? ‘(x1)=0来确定h(x)的结构,根
据?’(x)=1+h’(x*)f(x*)+h(x*)f’(x1)=1+h(x*)f’(x*)=0可得
h(x*)=-1/f’(x*) ,由于f’(x) ≠0,且f’(x) 连续,因此当h(x)=-1/f’(x) 时,h’(x1)=0,即令? (x)=x-f(x)/f‘(x),从而有迭代格式 xk?1 = xk?f(xk) (k=0,1,2,…..) f'(xk)由于x1, x2, x3…….都在U领域里,从而当B
比较小时,可用f’(x0)可近似代替f’(xk),xk?1= xk-
(四)割线法:设xk,xk?1为方程f(x)=0的两个近似根。

用差商得:f(xk)-
f(xk?1)/
f(xk)
,此方法称为牛顿迭代法。

f(x0)
xk- xk?1,代替牛顿迭代公式中的导数f’(xk),于是得到如下的迭代公式:
xk?1=xk-f(xk)(xk?xk?1)。

f(xk)?f(xk?1)
下面研究割线法的几何意义:
经过点(xk,f(xk))及点(xk?1,f(xk?1))两点作割线,其点斜式方程为: Y=f (xk)-
f(xk)?f(xk?1)f(xk)(x?xk),其零点为X=xk- (xk?xk?1)xk?xk?1f(xk)?f(xk?1)把X
用xk?1表示即得到迭代格式,需要两个初值此割线与 X 轴交点的横坐标就是新的近似
值xk?1,如图所示。

《数值方法》实验报告
4
三、实验内容
(一)、实验描述
1.P40.1:参照程序
2.1求解出单调收敛的不动点。

2.P49.1:已知初值,时间和末值,求解汇率。

4.P69.1:已知运动方程求解运动时间和距离。

(二)、实验题目
1.使用程序
2.1求解下面每个函数的不动点(尽肯能多)近似值,答案精确到
小数点后12位。

同时,构造每个函数的图和直线y=x来显示所有不动点。

(d)g(x)?xx?cos(x)
2.如果在240个月内每月付款300美元,求解满足全部现金A为500000美元的
汇率I的近似值(精确到小数点后10位)。

4.设投射方的运动程为
y?f(t)?9600(1?e?t/15)?480tx?r(t)?2400(1?e?t/15)
(a)求当撞击地面时经过的时间,精确到小数点后10位。

《数值方法》实验报告
5
(b)求水平飞行行程,精确到小数点后10位。

四、实验结果及分析
1. P40.1(d):算法:
(1)输入函数g,p0,tol,max1,令k=2。

(2)判断k>max1是否成立,如成立输出结果,如不成立,执行(3)。

(3)令p(k)=g(p(k-1)),err=|p(k)-p(k-1)|。

感谢您的阅读,祝您生活愉快。

相关文档
最新文档