西安石油大学计算方法实验1--非线性方程的迭代数值解法
- 格式:doc
- 大小:53.00 KB
- 文档页数:5
求解非线性方程的三种新的迭代法
迭代法是一种通过迭代逼近的方式来求解方程的方法。
它的基本思想是通过不断逼近
方程的解,使得逼近值与真实解的差距越来越小,最终得到方程的解。
下面介绍三种新的迭代法:牛顿迭代法,弦截法和切线法。
一、牛顿迭代法
牛顿迭代法是一种通过利用函数导数的信息来逼近方程解的方法。
它的迭代公式为:
x_(n+1) = x_n - f(x_n)/f'(x_n)
x_n表示第n次迭代得到的逼近解,f(x_n)表示在x_n处的函数值,f'(x_n)表示在x_n 处的导数值。
牛顿迭代法的优点是收敛速度快,通常是二阶收敛,但其缺点是需要计算函数的导数,如果导数计算困难或者导数为零的情况下,该方法可能不适用。
二、弦截法
三、切线法
切线法的优点和牛顿迭代法类似,但其缺点是需要计算函数的导数,且对于初始逼近
解的选择比较敏感。
牛顿迭代法、弦截法和切线法都是三种常用的非线性方程迭代法。
它们各自有着优点
和缺点,适用的领域和条件也不尽相同。
在实际问题中,需要根据具体情况选择合适的方
法来求解非线性方程。
求解非线性方程的三种新的迭代法迭代法是一种通过反复递推计算得到逼近解的方法,对于非线性方程求解而言,迭代法通过不断更新变量的值,使得方程逐渐趋近于真实解。
下面将介绍三种新的迭代法:逐次缩小区间法、割线法和弦截法。
第一种迭代法是逐次缩小区间法。
逐次缩小区间法是一种通过不断递推缩小变量的取值范围来求解非线性方程的方法。
算法步骤如下:1. 选取一个初始区间[a, b],使得f(a)和f(b)异号,即f(a)*f(b)<0。
2. 将区间[a, b]均分,得到区间的中点c=(a+b)/2。
3. 比较f(a)*f(c)和f(b)*f(c),如果f(a)*f(c)<0,则说明解在区间[a, c]内;如果f(b)*f(c)<0,则说明解在区间[c, b]内。
4. 重复步骤2和步骤3,直到得到精度要求的解。
逐次缩小区间法的优点是简单易懂,计算量较小;但缺点是需要事先给出一个初始区间,初始区间的选择对结果有影响,并且对于复杂的方程可能需要很多次均分才能逼近解。
第二种迭代法是割线法。
割线法是一种通过利用连续两个点的斜率来逼近解的方法。
算法步骤如下:1. 选取两个初始点x0和x1,计算出对应斜率f(x0)和f(x1)。
2. 利用斜率和已知点构造直线方程,得到直线和x轴的交点x2,并将x1更新为新的x0,x2更新为新的x1。
3. 重复步骤2,直到满足精度要求。
割线法的优点是不需要计算导数,因此适用于不易求导的情况;但缺点是可能出现迭代过程不收敛的情况,需要事先给出两个初始点,并且计算量相对较大。
弦截法与割线法相似,也是通过利用连续两个点的连线来逼近解的方法,但不同之处在于弦截法的直线是通过前两个点的连线来构造的。
弦截法的优缺点与割线法类似,不需要计算导数,但迭代过程可能不收敛。
三种新的迭代法均有各自的特点和适用范围,适合于不同类型的非线性方程。
在实际应用中,需要根据具体的方程和精度要求选择合适的迭代方法。
数学软件实验任务书实验一 非线性方程组的牛顿迭代法 1 实验原理对于非线性方程11221212(,,,)(,,,)(,,,)n n n n f x x x f x x x f f x x x ⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭ 在x (k )处按照多元函数的泰勒展开,并取线性项得到 ()()()()(1)()1111()()()()(1)()()122()()()()(1)()1(,,,)(,,,)()0(,,,)k k k k k k n n k k k k k k k n n n k k k k k k n n n nn f x x x x x f x x x x x f x f x x x x x +++⎛⎫⎛⎫- ⎪ ⎪- ⎪ ⎪'+= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭ 其中1111()n n n n f f x x f x f f x x ∂∂⎛⎫ ⎪∂∂ ⎪' ⎪= ⎪∂∂ ⎪ ⎪∂∂⎝⎭(1)()()()()()1111(1)()()()()()()1221(1)()()()()()1(,,,)(,,,)[()](,,,)k k k k k k n n k k k k k k k n n n k k k k k k n n n n n x x f x x x x x f x x x f x x x f x x x ++-+⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪'=- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭⎝⎭ 2 数据来源计算非线性方程组22220.50440x x y x y ⎧--+=⎨+-=⎩ 初值取11x y ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦3 实验步骤步骤一:编写牛顿迭代法的基本程序。
打开Editor 编辑器,输入以下语句:function [x,n,data]=new_ton(x0,tol)if nargin==1tol=1e-10;endx1=x0-f1(x0)/df1(x0);MATLAB 241 数值分析与应用n=1;%迭代过程while (norm(x1-x0)>tol)x0=x1;x1=x0-f1(x0)/df1(x0);n=n+1;%data 用来存放中间数据data(:,n)=x1;endx=x1;以文件名new_ton.m保存。
实验报告一、实验目的1.迭代函数对收敛性的影响。
2.初值的选择对收敛性的影响。
二、实验题目1.用简单迭代法求方程01)(3=--=x x x f 的根。
分别化方程为如下等价方程: 31+=x x ;13-=x x ;x x 11+=;213-+=x x x 取初值5.10=x ,精度为410-,最大迭代次数为500,观察其计算结果并加以分析。
2.①用牛顿法求方程01)(3=-+=x x x f 在0.5附近的根,分别取初值1000,100,2,1,5.0,5.0,1,2,100,10000-----=x观察并比较计算结果,并加以分析。
②用牛顿法求方程0)(3=-=x x x f 所有根。
三、实验原理简单迭代法程序,牛顿迭代法程序。
四、实验内容及结果fun=inline('x^3-x-1');dfun=inline('3*x^2-1');-1000,x1=manewton(fun,dfun,-1000,1e-4) -100,x2=manewton(fun,dfun,-100,1e-4)-2,x3=manewton(fun,dfun,-2,1e-4)-1,x4=manewton(fun,dfun,-1,1e-4)-0.5,x5=manewton(fun,dfun,-0.5,1e-4) 0.5,x6=manewton(fun,dfun,0.5,1e-4)1,x7=manewton(fun,dfun,1,1e-4)2,x8=manewton(fun,dfun,2,1e-4)100,x9=manewton(fun,dfun,100,1e-4) 1000,x10=manewton(fun,dfun,1000,1e-4)3)在MA TLAB的主程序窗口输出以下结果:ans =-1000k=21x1 =0.682327804075895ans =-100k=16x2 =0.682327803903413ans =-2k=6x3 =0.682327803828020ans =-1k=5x4 =0.682327803828020ans =-0.500000000000000k=4x5 =0.682327803903932ans =0.500000000000000k=3x6 =0.682327803828347五、实验结果分析(1)实验1中用简单迭代法求方程01)(3=--=x x x f 的根:取初始值5.10=x 的时候,等价方程2和4是不收敛的。
求解非线性方程的三种新的迭代法1. 引言1.1 介绍迭代法迭代法是一种重要的数值计算方法,广泛应用于非线性方程的求解、函数极值点的求解等问题中。
迭代法的基本思想是通过逐步逼近的方式,找到函数的根或者极值点。
这种方法在面对复杂的数学问题时具有很大的优势,可以通过简单的计算步骤逐渐接近最终解。
与解析解相比,迭代法更适用于无法通过代数运算求解的问题,或者求解过程较为繁琐的问题。
迭代法的实现通常需要选择一个初始值,并通过反复迭代计算来逼近真实解。
在每一步迭代中,都会根据当前的估计值计算新的估计值,直到满足一定的精度要求为止。
迭代法虽然不能保证每次都能得到精确解,但在实际应用中往往能够取得较好的结果。
迭代法是一种简单而有效的数值计算方法,尤其适用于非线性方程求解等复杂问题。
通过逐步逼近的方式,迭代法可以帮助我们解决那些传统方法难以处理的问题,为现代科学技术的发展提供重要支持。
1.2 非线性方程的求解意义非线性方程在数学和工程领域中广泛存在,其求解具有重要的理论和实际意义。
非线性方程的求解能够帮助解释和预测许多自然现象,包括流体动力学、电路分析、材料力学等领域中的问题。
非线性方程的求解也是许多科学研究和工程设计中必不可少的一环,例如在经济学、生物学、物理学等多个学科中都有非线性方程存在。
传统的解析方法难以解决非线性方程,因此迭代法成为求解非线性方程的重要工具。
迭代法是一种通过不断逼近解的方法,逐步逼近方程的解。
通过迭代法,可以在复杂的非线性方程中找到数值解,从而解决实际问题。
非线性方程的求解意义在于帮助我们更好地理解和掌握复杂系统的性质和行为。
通过求解非线性方程,我们可以揭示系统中隐藏的规律和关系,为科学研究和工程设计提供重要的参考和支持。
发展高效的迭代法求解非线性方程具有重要意义,可以推动科学技术的进步,促进社会的发展和进步。
2. 正文2.1 牛顿迭代法牛顿迭代法是一种非常经典的求解非线性方程的方法,其基本思想是通过不断逼近函数的零点来求解方程。
深圳大学实验报告
课程名称:计算方法
实验项目名称:非线性方程迭代解法
学院:计算机与软件学院
专业、班级:09 计算机科学与技术05班
}
ax[k]=x2;
//printf("用%d次牛顿迭代求得一个根,值为:\n",j);//迭代次数
//printf("用%d次牛顿简化迭代求得一个根,值为:\n",j);//牛顿简化//sprintf("用%d次弦割迭代求得一个根,值为:\n",j);//弦割
printf("用%d次下山迭代求得一个根,值为:\n",j);//下山
printf("ax%d=%.9lf\n",k+1,ax[k]);//输出根
k++;//记录根个数
}
getchar();
getchar();
}
3.3 模型的解(含运行结果截图)
图1:牛顿迭代
图1:简化牛顿迭代
图3:弦割法
图4:下山法
3.4 结果分析
用牛顿迭代解法的收敛速度最快,求解的时候分别只用4次和3。
非线性方程的数值解法摘要:数值计算方法,是一种研究解决数学问题的数值近似解方法,它的计算对象是那些在理论上有解而又无法用手工计算的数学问题。
在科学研究和工程技术中都要用到各种计算方法。
例如,在地质勘探、汽车制造、桥梁设计、天气预报和汉字设计中都有计算方法的踪影。
本文讨论了非线性方程的数值解法:非线性方程的二分法、迭代法原理、牛顿迭代法,迭代法的收敛性条件及适合非线性方程的插值法等等,基于C语言及MATLAB程序设计,通过实例验证了非线性方程数值解法的有效性。
关键字:迭代法收敛精度ε插值节点差商基函数Abstract:Computing technology of number value is used to solve the problems of approximate solution of number value in mathematics, its calculated target is that those who have solutions in theory but can‟t be calculated by hand.Some kinds of computing technologies are used in the scientific research and engineering technologies. For example, there are traces of the computing technology everywhere in geological exploration, car manufacturing, bridge design, weather forecast and Chinese character design.This thesis introduces the value number solution of the non-linear equation and lists the important point of contents and core calculating formula,Combining the calculating description that discusses some parts of calculating formula. This calculating method can concisely express the operations such as circulation and iteration, which shortens the distance from the method to the computer. The basic contents are composed by the convergence conditions, including the dichotomy of non-linear equation, the iterative method principle, the Newton method, the astringency of the iterative method and interpolation method etc., giving the solid example and procedure in which a calculator tool C language and mathematics software MATLAB are used.Keywords:Iterative Method, Astringency, Precious dimension εInterpolation, Primary Function目录摘要 (1)第1章绪论 (3)1.1 问题的提出和研究目的和意义 (3)1.2 国内外相关研究综述 (3)1.3 论文的结构与研究方法 (3)第2章非线性方程的数值解法 (4)2.1 二分法 (5)2.2迭代法 (6)2.3 迭代法的局部收敛性及收敛的阶 (7)2.4 牛顿迭代法 (7)2.5 牛顿法的改进 (8)2.6 插值 (11)第3章程序设计 (13)基于C语言:牛顿迭代法,弦截法,拉格朗日插值 (13)第4章程序设计仿真计算结果 (15)基于MATLAB:多元插值 (15)第5章尚待深入研究的问题 (17)第6章参考文献 (18)第7章致谢 (18)第1章 绪论1. 1 问题的提出和研究目的和意义非线性方程的问题在工程实践中有很多用途,研究其数值解法是当前一个研究方向,目前已有相当一部分算法在广泛使用于工程实践中。
求解非线性方程的三种新的迭代法
非线性方程是一种不满足线性关系的方程,它们的解不易通过代数方法直接求解。
需要通过迭代法来逼近非线性方程的解。
迭代法是一种通过不断逼近的方法,寻找非线性方程的近似解的方法。
在本文中,我们将介绍三种新的迭代法,这些方法可以更有效地求解非线性方程。
1. 牛顿迭代法
牛顿迭代法是求解非线性方程的一种经典方法,它通过不断迭代来逼近方程的解。
该方法的基本思想是从方程的一个初始值开始,通过一定的迭代公式不断逼近方程的解。
具体的迭代公式为:
\[x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\]
x_n表示第n次迭代的近似解,f(x)表示原非线性方程,f'(x)表示f(x)的导数。
牛顿迭代法的收敛速度非常快,但是需要计算方程的导数,对于复杂的非线性方程来说,计算导数较为困难。
2. 割线法
割线法的收敛速度较快,但是需要两个初始值,并且每次迭代都需要计算函数值,因此每次迭代的计算量较大。
3. 弦截法
\[x_{n+1} = x_n - \frac{f(x_n) \cdot (x_n - x_{n-1})}{f(x_n) - f(x_{n-1})} - \frac{f(x_n) \cdot (x_n - x_{n-1})^2}{f(x_n) - f(x_{n-1})}\]
弦截法通过引入截距值来加快收敛速度,虽然每次迭代的计算量较大,但是收敛速度也较快。
以上介绍了三种新的迭代法,它们可以更有效地求解非线性方程。
在实际应用中,可以根据具体问题的特点选取合适的迭代方法来求解非线性方程,从而得到更为准确和高效的解。
第三章 非线性方程许多科学理论与工程实际问题最终都转化为非线性方程或非线性方程组的求解。
除了少数简单的方程可以求出解析表达外,一般的方程不能得到解析表达,所以需要用近似的方法来求近似解。
解非线性方程常用到的方法是迭代法,本章将主要对迭代法进行讨论,一些特殊方法不在这里讨论。
§1 二分法设非线性方程为()0=x f (1.1)若()x f 在区间[]b a ,上连续,且()()0<b f a f ,由连续函数介值定理知道()0=x f 在()b a ,至少存在一个实根。
如果()x f 单调则只有唯一的实根。
二分法的原理就是将含根的区间每次缩小一倍,直到找到满足误差要求的近似解。
为简便起见,我们设()0)(,0><b f a f ,给定δ为很小的正数。
那么二分法的计算步骤如下: 1) 将区间[]b a ,分半,取中点2b a +,求⎟⎠⎞⎜⎝⎛+2b a f ,如δ<⎟⎠⎞⎜⎝⎛+2b a f ,则2b a +就是方程的解。
计算停止。
否则,将根据⎟⎠⎞⎜⎝⎛+2b a f 的符号确定新的区间:当02<⎟⎠⎞⎜⎝⎛+b a f 时,取21b a a +=,b b =1; 当02>⎟⎠⎞⎜⎝⎛+b a f 时,取a a =1,21b a b +=; 2) 用新区间[]11,b a 代替[]b a ,,重复上面的运算。
直到得到方程的解。
记第n 个有根区间为()n n b a ,,则 ()()()n n b a b a b a ,,,2211L ⊃⊃ ()()a b a b a b n n n n −==−=−−−212111L()()0n n f a f b ⋅<,()021→−=−a b a b nn n )(∞→n 当n 充分大时,就取2nn n b a x +=为方程精确根∗x 的近似值。
此时误差为 12+∗−≤−n n ab x x 二分法的优点是直观简单,可靠,对函数性质要求低。
《计算方法》
实验报告
二级学院: 计算机学院
专 业: 计算机科学与技术
指导教师: 爨莹
班级学号: 201107010122
姓 名: 张文江
实验一 非线性方程的迭代数值解法
实验目的:
① 通过编程和插值与拟合中的某种具体算法解决具体问题,更深一步
的体会计算方法这门课的重要性,同时加深对插值与拟合公式某种具体算法
的理解。
② 熟悉编程环境。
2、实验要求:
实现插值与拟合中的某种具体算法编写并执行
3、实验内容:
1)用牛顿法求解01553x的根,取初始值为10。
2) 用弦截法求解数学方程,()^310fxxx在[1,1.5]内的根。
4、题目:
1)用牛顿法求解01553x的根,取初始值为10。
2) 用弦截法求解数学方程,()^310fxxx在[1,1.5]内的根
5、原理:
编程实现牛顿法、弦截法求非线性方程的根。
(1)牛顿法
x1=(x0-f/f1);
(2)单点弦截法
x2=x0-f0*(xn-x0)/(fn-f0);
6、设计思想:
(1)牛顿法
首先找到初始值,将初始值带入到方程中,计算一次求导和二次求导的值,确
定x0和x1的值,然后利用循环x1=(x0-f/f1),条件为(x0-x1)>1e-6,循环一
次的x1的值给x0;直到找到符合的x1为止。
(2)单点弦截法
首先找到初始值,将初始值带入到方程中,计算一次求导和二次求导的值,确
定x0和x1的值,然后利用循环x2=x0-f0*(x1-x0)/(f1-f0);,条件为
(x0-x1)>1e-6, 循环一次的x2的值给x1;直到找到符合的x2为止。
7、对应程序:
(1)牛顿法:
#include
#include
float f(float a,float b,float c,float d,float x)
{
float f;
f=a*x*x*x+b*x*x+c*x+d;
return f;
}
float f1(float a,float b,float c,float x)
{
float f1;
f1=(x*3*a+2*b)*x+c;
return f1;
}
float root(float a,float b,float c,float d)
{
float x0,x1=6;
do
{
x0=x1;
x1=x0-f(a,b,c,d,x0)/f1(a,b,c,x0);
}while(fabs(x1-x0)>=1e-6);
return x0;
}
void main()
{
float a,b,c,d,x;
printf("input four float numbers:\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
x=root(a,b,c,d);
printf("%.1fX^3+%.1fX^2+%.1fX+%.1f=0 its root near x=1.5
is :%.3f\n",a,b,c,d,x);
}
(2)迭代法:
#include
#include
void main()
{
float f(float x);
float root(float x1, float x2);
float xpoint(float x1,float x2);
float x1,x2,f1,f2,x;
do
{
printf("input x1,x2:\n");
scanf("%f,%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}while(f1*f2>=0);
x=root(x1,x2);
printf("A root of equation is %.3f\n",x);
}
float root(float x1, float x2)
{
float xpoint(float x1,float x2);
float f(float x);
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0)
{
y1=y;
x1=x;
}else
x2=x;
}while(fabs(y)>=0.0001);
return (x);
}
float f(float x)
{
float y;
y=x*x*x-x-1;
return (y);
}
float xpoint(float x1,float x2)
{
float y;
y=(x1*f(x2)-x2*f(x1)) / (f(x2) - f(x1));
return (y) ;
}
8、实验结果:
(1)牛顿法结果:
X=5.372
(2)迭代法结果
X=1.325
9、图形
(1)
(2)
10、
实验体会:
通过编程,切身感到计算方法这门课绝不仅仅是数学,是图形的
观察和实际计算方法的应用,从而解决一些复杂的数值问题。