牛顿迭代法求解非线性方程组的解
牛顿法及基于牛顿算法下的Steffensen加速法求解非线性方程组方法例题及答案

1. 非线性方程组求解1.分别用牛顿法,及基于牛顿算法下的Steffensen 加速法。
(1) 求ln(sin )x x +的根。
初值0x 分别取0.1,1,1.5,2,4进行计算。
(2) 求sin =0x 的根。
初值0x 分别取1,1.4,1.6,1.8,3进行计算。
分析其中遇到的现象与问题。
(1)牛顿法牛顿法实质上是一种线性化方法,其基本思想是将非线性方程()0f x =逐步归结为某种线性方程来求解。
将已知方程()0f x =在近似值k x 附近展开,有()()()()'0k k k f x f x f x f x x ≈+-=,构造迭代公式,则1k x +的计算公式为:()()1',0,1,,k k k k f x x x k f x +=-= (1-1)根据Taylor 级数的几何意义我们可以从几何上形象的看牛顿迭代法的求解()0f x =的过程,第一次迭代()()'1000/x x f x f x =-,其中()()'00/f x f x 的几何意义很明显,就是0x 到1x 的线段长度(这可以从直角三角形的知识得到)。
第二次迭代()()'2111/x x f x f x =-,其中()()'11/f x f x 的几何意义很明显,就是1x 到2x 的线段长度。
同理可以进行第三次迭代第四次迭代,可以明显的看出x 的取值在不断逼近真实解*x 。
如图1-1所示:图1-1○1求ln(sin )=0x x +的根时,迭代公式为()1ln(sin )sin 1cos k k x x x x x x x+++=++,0示。
计算结果见附录1表F.1-1所示。
初值取1.5,2,4进行计算时结果不收敛。
表 1-1 牛顿法计算结果○2求sin =0x 的根时,迭代公式为1cos k k x x x+=+,初值0x 分别取1、1.4、1.6、1.8、3计算时结果收敛,误差小于510-时,近似解如表1-2所示。
非线性方程组的求解方法及其应用

非线性方程组的求解方法及其应用非线性方程组是数学中一类非常重要的问题,其中每个方程都不是线性的。
与线性方程组不同,非线性方程组的求解通常需要借助于数值方法。
本文将讨论一些常见的非线性方程组求解方法,并介绍它们在实际应用中的一些应用。
1. 牛顿法牛顿法是一种非常常见的非线性方程组求解方法。
该方法基于牛顿迭代法原理,将非线性方程组转化为一系列的线性问题。
牛顿法的基本思想是:通过不断地使用一阶导数和二阶导数的信息来逼近方程组的解。
具体地说,在每一轮迭代中,求解一个方程组:$$F(x^{k})+J(x^{k})\Delta x^{k} =0$$其中$F(x)$表示非线性方程组,$x^k$表示第$k$轮迭代的解,$J(x^k)$表示$F(x)$在$x^k$处的雅可比矩阵,$\Delta x^k$表示下降方向,满足$\|\Delta x^k\|\rightarrow 0$。
值得注意的是,牛顿法在每轮迭代中都需要求解一次雅可比矩阵,这需要大量的计算资源。
因此,在实际应用中,牛顿法通常只适用于相对较小的方程组。
2. 信赖域方法相比于牛顿法,信赖域方法更具有通用性。
信赖域方法的基本思想是:在每轮迭代中,通过构造二次模型来逼近目标函数,并在一个信赖域内搜索下降方向。
具体地说,我们在每轮迭代中将非线性方程组$F(x)$在$x^k$处转化为二次模型:$$m_k(\Delta x)=F(x^k)+\nabla F(x^k)^\top \Deltax+\frac{1}{2}\Delta x^\top B_k\Delta x$$其中,$\nabla F(x^k)$是$F(x)$在$x^k$处的梯度,$B_k$是二阶导数信息。
在这里我们假设$B_k$为正定矩阵。
显然,我们希望在$m_k(\Delta x)$的取值范围内找到一个适当的$\Delta x$,使得$m_k(\Delta x)$最小。
因此,我们需要设定一个信赖域半径$\Delta_k$,并在$B_k$所定义的椭圆范围内查找最优的$\Delta x$。
非线性方程组(简单)

非线性方程组(简单)非线性方程组(简单)非线性方程组是指其中包含非线性方程的一组方程。
与线性方程组不同,非线性方程组的解不一定满足线性性质,因此求解非线性方程组需要采用特定的方法和策略。
1. 概述非线性方程组的一般形式如下:$$\begin{align*}f_1(x_1, x_2, \ldots, x_n) &= 0 \\f_2(x_1, x_2, \ldots, x_n) &= 0 \\&\ldots \\f_m(x_1, x_2, \ldots, x_n) &= 0 \\\end{align*}$$其中,$f_1, f_2, \ldots, f_m$ 是非线性函数,$x_1, x_2, \ldots,x_n$ 是方程组的未知数。
2. 求解方法求解非线性方程组的方法有多种,下面列举了常用的两种方法。
2.1. 牛顿迭代法牛顿迭代法是一种迭代求解非线性方程组的方法,其基本思想是利用导数来逐步逼近方程组的解。
该方法的迭代公式如下:$$x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}$$其中,$x_k$ 是第$k$次迭代的近似解,$f(x_k)$ 是方程组在$x_k$处的函数值,$f'(x_k)$ 是方程组在$x_k$处的导数值。
牛顿迭代法需要选择一个初始解$x_0$,然后通过迭代计算,逐步逼近方程组的解。
当迭代次数足够多时,求得的解可接近方程组的实际解。
2.2. 拉盖尔-加普列森方法拉盖尔-加普列森方法是一种逐次迭代的方法,适用于任意不适合牛顿迭代法的非线性方程组。
该方法的迭代公式如下:$$x_{k+1} = x_k - (J_k)^{-1} \cdot f(x_k)$$其中,$x_k$ 是第$k$次迭代的近似解,$f(x_k)$ 是方程组在$x_k$处的函数值,$J_k$ 是方程组在$x_k$处的雅可比矩阵。
拉盖尔-加普列森方法需要选择一个初始解$x_0$,然后通过迭代计算,逐步逼近方程组的解。
解非线性方程组的牛顿迭代法

为克服这两个缺点,通常可用下述方法.
(1) 简化牛顿法,也称平行弦法.
xk 1 xk Cf ( xk )
其迭代公式为 (4.7)
C 0,1 ,.
迭代函数 ( x) x Cf ( x).
若在根 x * 附近成立 ( x) 1 Cf ( x) 1 ,即取 0 Cf ( x) 2,则迭代法(4.7)局部收敛.
8
xk
C 2 C
q2
k
1 q
2k
.
对任意 x0 0,总有 q 1,故由上式推知,当 k 时 xk C ,即迭代过程恒收敛. 例8 解 求 115 .
表7 6 计算结果 k 0 1 2 3 4 xk 10 10.750000 10.723837 10.723805 10.723805
f ( x) , f ( x)
由于
( x)
f ( x) f ( x) . 2 [ f ( x)]
假定 x *是 f ( x) 的一个单根,即 f ( x*) 0, f ( x*) 0 , 则由上式知 ( x*) 0 ,于是依据定理4可以断定,牛顿法 在根 x *的邻近是平方收敛的.
准备 迭代
x0 ,计算 f 0 f ( x0 ), 选定初始近似值
步骤2
按公式
x1 x0 f 0 / f 0
迭代一次,得新的近似值 x1,计算 f1 f ( x1 ), f1 f ( x1 ). 步骤3 控制
x1 满足 1 如果
f1 2 ,则终 或
5
止迭代,以 x1作为所求的根;否则转步骤4. 允许误差,而
3
又因
( x*)
f ( x*) , f ( x*)
牛顿法解非线性方程组

一、求根方法原理把非线性函数f(x)=0在x0处展开成泰勒级数取其线性部分,作为非线性方程的近似方程,则有 , 设,则其解为,再把f(x)在x1处展开为泰勒级数,取其线性部分为的近似方程,若,则得,如此继续下去,得到牛顿法的迭代公式:,通过迭代,这个式子必然在的时候收敛。
整个过程如下图:牛顿法收敛很快,而且可求复根,缺点是对重根收敛较慢,要求函数的一阶导数存在。
二、求解步骤1. 选取一个接近函数零点的自变量 x 值作为起始点。
2. 使用如下的迭代公式更新近似解。
3. 如果得出的解满足误差要求,终止迭代,所得的值即视为方根根的近似解。
三、自定的非线性方程使用牛顿迭代法近似求解如下方程在[-1, 1]之间的根:四、源程序代码clear, close allclcf = @(x) cos(x) -x.^3;f_prime = @(x) -sin(x) -3*x.^2;error = 1; %初始化误差变量iter = 0; %初始化迭代次数变量max_iter = 5000; %定义最大允许迭代次数tol = 1e-8; %定义循环终止误差x0 = 0.5; %初始值while error > tol && iter <= max_iterx = x0 - f(x0)/f_prime(x0); %更新x的值error = abs((x-x0)/x0); %计算相对误差iter = iter +1; %更新迭代次数x0 = x; %计算出的x赋值给x0,继续迭代,直到达到误差条件。
end五、上机运行结果截图六、结论1.迭代法是求解非线性方程组的一种很好的方法,它可以反复校验根的近似值,直到得出符合精度的解。
从几何角度上来解释可以解释为两个函数的无限逼近2.我们为了加快迭代的速度,引入了牛顿法,牛顿法的收敛速度很快,但是其收敛性取决于牛顿法的取值。
3.。
matlab实现牛顿迭代法求解非线性方程组

matlab实现牛顿迭代法求解非线性方程组已知非线性方程组如下3*x1-cos(x2*x3)-1/2=0x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0exp(-x1*x2)+20*x3+(10*pi-3)/3=0求解要求精度达到0.00001 ————————————————————————————————首先建立函数fun储存方程组编程如下将fun.m保存到工作路径中:function f=fun(x);%定义非线性方程组如下%变量x1 x2 x3%函数f1 f2 f3syms x1 x2 x3f1=3*x1-cos(x2*x3)-1/2;f2=x1^2-81*(x2+0.1)^2+sin(x3)+1.06;f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;f=[f1 f2 f3]; ————————————————————————————————建立函数dfun用来求方程组的雅克比矩阵将dfun.m保存到工作路径中:function df=dfun(x);%用来求解方程组的雅克比矩阵储存在dfun中f=fun(x);df=[diff(f,'x1');diff(f,'x2');diff(f,'x3')];df=conj(df'); ————————————————————————————————编程牛顿法求解非线性方程组将newton.m保存到工作路径中:function x=newton(x0,eps,N);con=0;%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛for i=1:N;f=subs(fun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});df=subs(dfun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});x=x0-f/df;for j=1: length(x0);il(i,j)=x(j);endif norm(x-x0)<epscon=1;break;endx0=x;end%以下是将迭代过程写入txt文档文件名为iteration.txtfid=fopen('iteration.txt','w');fprintf(fid,'iteration');for j=1:length(x0)fprintf(fid,' x%d',j);endfor j=1:ifprintf(fid,'\n%6d ',j);for k=1:length(x0)fprintf(fid,' %10.6f',il(j,k));endendif con==1fprintf(fid,'\n计算结果收敛!');endif con==0fprintf(fid,'\n迭代步数过多可能不收敛!');endfclose(fid); ————————————————————————————————运行程序在matlab中输入以下内容newton([0.1 0.1 -0.1],0.00001,20) ————————————————————————————————输出结果——————————————————————————————————————————在iteration中查看迭代过程 iteration x1 x2 x3.mulStablePoint用不动点迭代法求非线性方程组的一个根function [r,n]=mulStablePoint(F,x0,eps)%非线性方程组:f%初始解:a%解的精度:eps%求得的一组解:r%迭代步数:nif nargin==2eps=1.0e-6;endx0 = transpose(x0);n=1;tol=1;while tol>epsr= subs(F,findsym(F),x0); %迭代公式tol=norm(r-x0); %注意矩阵的误差求法,norm为矩阵的欧几里德范数n=n+1;x0=r;if(n>100000) %迭代步数控制disp('迭代步数太多,可能不收敛!');return;endendx0=[0 0 0];[r,n,data]=budong(x0);disp('不动点计算结果为')x1=[1 1 1];x2=[2 2 2];[x,n,data]=new_ton(x0);disp(’初始值为0,牛顿法计算结果为:’)[x,n,data]=new_ton(x1);disp('初始值为1,牛顿法计算结果为:')[x,n,data]=new_ton(x2);disp ('初始值为2,牛顿法计算结果为:')budong.mfunction[r,n,data]=budong(x0, tol)if nargin=-1tol=1e-3:endx1=budong fun(x0);n=1;while(norm(x1-x0))tol)&(n500)x0=x1;x1=budong_fun(x0);n=n+1:data(:,n)=x1;endr=x1:new_ton.mfunction [x,n,data]=new_ton(x0, tol)if nargin=-1tol=1e-8;endx1=x0-budong_fun(x0)/df1(x0);n=1;while (norm(x1-x0))tol)x0=x1;x1=x0-budong_fun(x0)/df1(x0);n=n+1;data(:,n)=x1;endx=x1;budong_fun.mfunction f=budong_fun(x)f(1)=3* x(1)-cos(x(2)*x(3))-1/2;f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06; f(3)=exp(-x(1)*x(2))+20* x(3)+10* pi/3-1;f=[f(1)*f(2)*f(3)];df1.mfunction f=df1(x)f=[3sin(x(2)*x(3))*x(3) sin(x(2)*x(3))*x(2) 2* x(1)-162*(x(2)+0.1)cos(x(3))exp(-x(1)*x(2))*(-x(2))exp(-x(1)*x(2))*(-x(1))20]; 结果:不动点计算结果为r=1.0e+012*NaN -Inf 5.6541初始值为0,牛顿法计算结果为:x=0.5000 -0.0000 -0.5236初始值为1,牛顿法计算结果为:x=0.5000 0.0000 -0.5236初始值为2,牛顿法计算结果为:x=0.5000 0.0000 -0.5236。
解非线性方程组的牛顿法

考虑非线性方程组
f1(x1, x2, , xn ) 0,
f2(x1, x2, , xn ) 0,
fn (x1, x2, , xn ) 0. 利用向量记号写为
F (X ) O. 这里F (X )是定义在某区域D Rn上向量值函数. 若存在 X* D, 使得F (X*) O, 则称X*为非线性方程组的解.
.
逐次迭代得结果.
Step 5 Set x x y
Step 6 If y TOL then OUTPUT(x)
Step7 Set k k 1
STOP.
Step8 OUTPUT (‘Maximum number of iterations exceeded’) STOP.
为了说明上述算法,我们可以看看下面的例子。设
s1
145 272
,
145 272
T
.
x2 x1 s1 0.092,3.092 T .
显然,我们只经过两步计算,所得到的 x2就已经非常靠近 解 0,3T .
例1 用牛顿法求解方程组
k x (k) 0 (1.5, 1.0)T
f1( f2(
x1 x1
,x2 ,x2
) )
x1 2 x12
定理 2 设G : D Rn Rn在D内有一不动点X *且G在X *可导,
(G(X*)) 1, 则存在开球 S S( X*, ) D, 对X (0) S, 迭代序列{X (k)}
收敛于X *.
牛顿迭代公式:
X (k1) X (k) F( X (k) ) 1 F ( X (k) ),
其中
f1
F
(
X
(k
)
)
c语言牛顿迭代法

c语言牛顿迭代法牛顿迭代法(Newton-Raphson法)是一种求解方程近似解的方法,它是利用泰勒级数展开函数在某点的值,然后用一阶泰勒展开式的根近似表示函数的零点,因此也被称为牛顿拉弗森法。
它可以高效地解决复杂的非线性方程组,是科学计算领域中最为常用和基础的方法之一。
牛顿迭代法的基本思想是:在第k次迭代时,求出曲线f(x)在点xk的一次导数斜率,以此确定x轴上的一个点xk+1,和该点处曲线的一次切线。
这条切线和x轴交点的横坐标就是极值点的估计值。
这个过程可以迭代多次,直到达到满足一定的误差精度或者迭代次数的要求。
C语言实现牛顿迭代法需要先定义一个函数,这个函数就是需要求解方程的函数。
定义完函数之后,需要实现牛顿迭代公式来求出下一次迭代的估计值,然后不断迭代。
具体实现过程如下:1. 定义函数f(x),即需要求解方程的函数。
2. 定义函数f_prime(x),即f(x)的一次导数。
3. 定义变量x和x_next,初始化它们的值。
4. 在循环中,首先计算f(x)和f_prime(x),然后计算下一个迭代点的估计值x_next = x - f(x) / f_prime(x)。
5. 如果x_next和x的差异满足预设的精度要求,则退出循环。
6. 否则,将x_next的值赋值给x,并重复执行第4步。
C语言实现牛顿迭代法的代码如下:#include <stdio.h>#include <math.h>定义函数f(x)double f(double x) {return x * x - 2;}定义函数f_prime(x)double f_prime(double x) {return 2 * x;}int main() {定义变量double x, x_next, epsilon;int iter;初始化变量x = 1.0;epsilon = 1e-6;iter = 0;迭代求解do {x_next = x - f(x) / f_prime(x);iter++;printf("Iteration %d: x = %lf\n", iter, x_next);x = x_next;} while (fabs(x_next - x) >= epsilon);输出结果printf("Final result: x = %lf\n", x);return 0;}在这个代码中,我们使用了do-while循环来不断执行迭代过程,直到达到预设的精度要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10 简化牛顿法 简化牛顿法又称平行弦法,其迭代公式为
xk1 xk Cf (xk ),C 0, k 0,1,
(4-7)
从不动点迭代法的角度看,简化牛顿法的迭代函数(x) x Cf (x) ,下面讨论简
化牛顿法的收敛性。
若| '(x) ||1 Cf '(x) | 1 ,即取 0 Cf ' (x) 2 .在根 x* 附近成立,则迭代法
x k 的点 Pk 引切线,并将该切线与 x 轴的交点的横坐标 x k1 作为 x* 的新的近似值。 注意到切线方程为
y f (xk ) f '(xk )(x xk )
(4-4)
这样求得的值 x k1 比满足 f (xk ) f '(xk )(x xk ) 0 ,从而就是牛顿公式
x
k 1
| f (xk1) || f (xk ) |
(4-8)
满足此要求的算法称为下山法。
将牛顿法和下山法一起使用时,即在下山法保证函数值稳定下降的前提下,
用牛顿法加快收敛速度。为此,为此将牛顿法的计算结果
xk 1
xk
f (xk ) f ' (xk )
(4-9)
与前一步的近似值 xk 的适当加权平均作为新的改进值
代法中所遇到的 jacobi 矩阵难求的问题。
关键词:非线性方程组、牛顿迭代法、MATLAB、 jacobi 矩阵
一、前言 非线性方程组在实际问题中经常出现,并且在科学与工程计算中的地位越来
越来重要,很多常见的线性模型都是在一定条件下由非线性问题简化得到的,为 得到更符合实际的解答,往往需要直接研究非线性模型,然而从线性到非线性是 一个质的飞跃,方程的性质的不同,所以求解方法也有很大差别。本文主要介绍 关于非线性方程及方程组的数值解法,先分析非线性方程的数值解法,然后再延 伸到方程组的解法。
.5]
75]
.375]
.3438]
281]
f (a)
-1
-1
-0.2969 -0.2969 -0.0515 -0.0515
-0.0515
f (b)
5
0.8750 0.8750 0.2246
0.2246
0.0826
0.0147
误差值
1
0.5
0.25
0.125
0.0625 0.03125 0.015625
例 1、求方程 f (x) x3 x 1 0 在 x0 1.5 附近的根. 解:(1) 二分法 f (1) 1 0 ,f (2) 5 0 ,故取区间[1, 2] ,则由二分法的算法得 MATLAB 程序:
函数值 [1,2] [1,1.5] [1.25,1 [1.25,1.3 [1.3125,1 [1.3125,1 [1.3125,1.3
(4-2)
式(4-2)是线性方程,记其根为 x k1 ,则 x k1 的计算公式为
x
k 1
xk
f (xk ) f ' (xk )
k
0,1,
(4-3)
这就是牛顿法,亦称为切线法。
牛顿法的几何意义如下图所示,方程 f (x) 0 的根 x* 可解释为曲线 y f (x)
与 x 轴的交点的横坐标。设 x k 是根 x* 的某个近似值,过曲线 y f (x) 上横坐标为
xk1 xk1 (1 )xk
(4-10)
其中 (0 1) 称为下山因子, xk1 xk1 (1 )xk 即为
xk 1 xk
f f
( xk ' (xk
) )
,
k
0,1,
(4-11)
称为牛顿下山法。选择下山因子时从 1开始,逐次将 减半进行试算,直到
能使下降条件(4-8)成立。 五、算法实施
令 a1 a,b1 x0 .对于压缩了的有根区间[a1,b1] 进行如上用样的操作,直到找到方 程的根。 2、不动点迭代法
将方程
f (x) 0
(3-1)
改写成等价的形式 x (x) ,若要求 x* 满足 f (x*) 0 ,则
x* (x*)
(3-2)
反之亦然.称 x* 为函数(x) 的一个不动点.求 f (x) 的零点就等价于求(x) 的不动
数值计算实习报告
——非线性方程组的牛顿迭代解法
姓名:吴健 学号:139084186 班级:数 132
非线性方程组的数值解法
摘要
本文着重介绍了求解单变量非线性方程 f (x) 0 的牛顿迭代法理论和 MATLAB 求解过程,其中二分法、不动点迭代等也是常用的解非线性方程组的重 要工具,本文把牛顿迭代法推广到非线性方程组,对于方程变量及个数相当大时, 很难通过运算得出结果,此时采用 MATLAB 中的 numjac 命令很好的避免牛顿迭
f (x) a0xn a1xn1 an1x an
(2-2)
其中 a0 0, ai (i 0,1, , n) 为实数,当 f (x) 0 称为 n 次代数方程。这类方程当
n 5时就不能直接用公式表示方程的根,所以只好选用数值解代替。还有一类 函数成为超越函数,如
ex/10 sin10x 0
迭代法
X (k1) X (k) F ' ( X (k) )1 F ( X (k) ), k 0,1,
(6-3)
其中, F '( X )1 是非线性方程组的 Jacobi 矩阵的逆矩阵,具体计算时记 X (k1) X (k ) X (k )
先解线性方程组 F ' ( X (k) )X (k) F ( X (k) ) ,求出向量 X (k) ,再令
误差值 0.2500 0.1080 0.0476 0.0206 0.0089 0.0039 0.0017
3、牛顿法的改进
牛顿法的缺点:一是每次迭代都要计算 f (xk ) 和 f ' (xk ) ,计算量较大且有时
f ' (xk ) 计算较困难;二是初始近似 x0 只在根 x* 附近才能保证收敛,如果 x0 给的不 合适可能不收敛。为克服这两个缺点,通常有下述方法。
xk1 xk
Cf (xk ) 局部收敛,在 xk1 xk Cf (xk ) 中取 C
1 ,则称为简化牛 f ' (x0 )
顿法。
其几何意义是用斜率为 f ' (x0 ) 的平行弦与 x 轴的交点作为 x* 的近似,如图所示:
图 4-2
2o 牛顿下山法
牛顿法收敛性依赖于初值 x0 的选取,如果 x0 偏离所求根 x* 较远,则牛顿法 可能发散。为了防止迭代发散,对迭代过程再附加一个要求,即具有单调性:
xk
f (xk ) f ' (xk )
(4-5)
的计算结果。由几何意义,牛顿法亦称为切线法。
2、牛顿法的算法步骤
图 4-1
步骤一: 准备, 选定初始近似值 x 0 ,计算 f0 f (x0 ) , f0' f '(x0) ;令 k=0
步骤二: 迭代, 按公式 x1 x0 f0 / f0' 迭代一次,得新的近似值 x 1 ,计算
六、推广牛顿法到非线性方程组求解
考虑方程组
f1(x1, x2 , , xn ) 0
f2
(
x1
,
x2
,
, xn ) 0
(6-1)
fn (x1, x2 , , xn ) 0
其中 f1, f2 , , fn 均为 (x1, x2 , , xn ) 的多元函数.
若向量记号 X (x1, x2, , xn )T n , F ( f1, f2, , fn )T ,方程组就可以写成
考察有根区间 [a, b] ,取中点 x0 (a b) / 2 将它分成两半,假设中点 x0 不是
f (x) 的零点,然后进行根的搜索,即检查 f (x0 ) 与 f (a) 是否同号,如果确系同号,
则说明所求根 x* 在 x 0 的右侧,这时令 a1 x0,b1 b ;否则 x* 必在 x 0 的左侧,这时
F(X) 0
(6-2)
当 n 2 ,且 fi (i 1, 2, , n) 中至少有一个是自变量 xi (i 1, 2, , n) 的非线性函数
时,则称方程组(6-1)为非线性方程组. 非线性方程组是非线性科学的重要组成部分,关于非线性方程组的解法至关
重要的,其基本思想是: 将单个方程的牛顿法直接用于方程组(6-2)则可得到解非线性方程组的牛顿
(2)不动点迭代法:
根据不动点迭代法的思想,取迭代函数 xk1 3 xk 1 ,则有结果如下表:
迭代次数
1
2
3
4
5
6
7
迭代函数
1.3572 1.3309 1.3259 1.3249 1.3248 1.3247 1.3247
(x+1)^(1/3)
误差值
0.1428 0.0263 0.0050 0.0010 0.0001 0.0001 0.0000
例:求方程 f (x) x3 x 1 0 在 x0 1.5 附近的根. 解:结果如下表所示:
迭代次数
0
1
2
3
4
5
6
初始值 1.5000 1.2500 1.3580 1.3104 1.3310 1.3220 1.3258
迭代值 1.2500 1.3580 1.3104 1.3310 1.3220 1.3259 1.3242
(2-3)
它在整个 x 轴上有无穷多个解,若 x 的取值范围不同,解也不同,所以在讨论非
线性方程的求解问题时,必须强调 x 的定义域,即 x 的求解区间[a, b] 。
超越函数都可以通过多项式函数插值得到,故解非线性方程归结为求解多项 式函数的解或者是直接求解超越函数。 三、求解非线性方程的其他方法 1、二分法