3非线性方程matlab计算方法

合集下载

Matlab中的非线性优化和非线性方程求解技巧

Matlab中的非线性优化和非线性方程求解技巧

Matlab中的非线性优化和非线性方程求解技巧在科学和工程领域中,我们经常会遇到一些复杂的非线性问题,例如最优化问题和方程求解问题。

解决这些问题的方法主要分为线性和非线性等,其中非线性问题是相对复杂的。

作为一种强大的数值计算工具,Matlab提供了许多专门用于解决非线性优化和非线性方程求解的函数和方法。

本文将介绍一些常用的Matlab中的非线性优化和非线性方程求解技巧。

非线性优化是指在给定一些约束条件下,寻找目标函数的最优解的问题。

在实际应用中,往往需要根据实际情况给出一些约束条件,如等式约束和不等式约束。

Matlab中的fmincon函数可以用于求解具有约束条件的非线性优化问题。

其基本语法如下:[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)其中,fun是目标函数,x0是初始值,A、b是不等式约束矩阵和向量,Aeq、beq是等式约束矩阵和向量,lb、ub是变量的上下边界。

x表示最优解,而fval表示最优解对应的目标函数值。

另外,非线性方程求解是指寻找使得方程等式成立的变量值的问题。

Matlab中提供的fsolve函数可以用于求解非线性方程。

其基本语法如下:x = fsolve(fun,x0)其中,fun是方程函数,x0是初始值,x表示方程的解。

除了fmincon和fsolve函数之外,Matlab还提供了一些其他的非线性优化和非线性方程求解函数,例如lsqnonlin、fminunc等,这些函数分别适用于无约束非线性优化问题和带约束非线性方程求解问题。

除了直接调用这些函数外,Matlab还提供了一些可视化工具和辅助函数来帮助我们更好地理解和解决非线性问题。

例如,使用Matlab的优化工具箱可以实现对非线性优化问题的求解过程可视化,从而更直观地观察到优化算法的收敛过程。

此外,Matlab还提供了一些用于计算梯度、雅可比矩阵和海塞矩阵的函数,这些函数在求解非线性问题时非常有用。

牛顿迭代法解非线性方程组(MATLAB版)

牛顿迭代法解非线性方程组(MATLAB版)

⽜顿迭代法解⾮线性⽅程组(MATLAB版)⽜顿迭代法,⼜名切线法,这⾥不详细介绍,简单说明每⼀次⽜顿迭代的运算:⾸先将各个⽅程式在⼀个根的估计值处线性化(泰勒展开式忽略⾼阶余项),然后求解线性化后的⽅程组,最后再更新根的估计值。

下⾯以求解最简单的⾮线性⼆元⽅程组为例(平⾯⼆维定位最基本原理),贴出源代码:1、新建函数fun.m,定义⽅程组1 function f=fun(x);2 %定义⾮线性⽅程组如下3 %变量x1 x24 %函数f1 f25 syms x1 x26 f1 = sqrt((x1-4)^2 + x2^2)-sqrt(17);7 f2 = sqrt(x1^2 + (x2-4)^2)-5;8 f=[f1 f2];2、新建dfun.m,求出⼀阶微分⽅程1 function df=dfun(x);2 f=fun(x);3 df=[diff(f,'x1');diff(f,'x2')]; %雅克⽐矩阵3、建⽴newton.m,执⾏⽜顿迭代过程1 clear;clc2 format;3 x0=[0 0]; % 迭代初始值4 eps = 0.00001; % 定位精度要求5for i = 1:106 f = double(subs(fun(x0),{'x1''x2'},{x0(1) x0(2)}));7 df = double(subs(dfun(x0),{'x1''x2'},{x0(1) x0(2)})); % 得到雅克⽐矩阵8 x = x0 - f/df;9if(abs(x-x0) < eps)10break;11 end12 x0 = x; % 更新迭代结果13 end14 disp('定位坐标:');15 x16 disp('迭代次数:');17 i结果如下:定位坐标:x =0.0000 -1.0000迭代次数:i =4。

MATLAB应用 求解非线性方程

MATLAB应用 求解非线性方程

第7章 求解非线性方程7.1 多项式运算在MATLAB 中的实现一、多项式的表达n 次多项式表达为:n a +⋯⋯++=x a x a x a p(x )1-n 1-n 1n 0,是n+1项之和在MATLAB 中,n 次多项式可以用n 次多项式系数构成的长度为n+1的行向量表示[a0, a1,……an-1,an]二、多项式的加减运算设有两个多项式n a +⋯⋯++=x a x a x a p1(x )1-n 1-n 1n 0和m b +⋯⋯++=x b x b x b p2(x )1-m 1-m 1m 0。

它们的加减运算实际上就是它们的对应系数的加减运算。

当它们的次数相同时,可以直接对多项式的系数向量进行加减运算。

当它们的次数不同时,应该把次数低的多项式无高次项部分用0系数表示。

例2 计算()()1635223-+++-x x x xa=[1, -2, 5, 3]; b=[0, 0, 6, -1]; c=a+b例 3 设()6572532345++-+-=x x x x x x f ,()3532-+=x x x g ,求f(x)+g(x)f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; g1=[0, 0, 0, g];%为了和f 的次数找齐 f+g1, f-g1三、多项式的乘法运算conv(p1,p2)例4 在上例中,求f(x)*g(x)f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3];conv(f, g)四、多项式的除法运算[Q, r]=deconv(p1, p2)表示p1除以p2,给出商式Q(x),余式r(x)。

Q,和r 仍为多项式系数向量 例4 在上例中,求f(x)/g(x)f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3];[Q, r]=deconv(f, g)五、多项式的导函数p=polyder(P):求多项式P 的导函数p=polyder(P ,Q):求P ·Q 的导函数[p,q]=polyder(P ,Q):求P/Q 的导函数,导函数的分子存入p ,分母存入q 。

非线性方程组求解的牛顿迭代法用MATLAB实现

非线性方程组求解的牛顿迭代法用MATLAB实现

非线性方程组求解的牛顿迭代法用MATLAB实现首先,我们需要定义非线性方程组。

假设我们要求解方程组:```f1(x1,x2)=0f2(x1,x2)=0```其中,`x1`和`x2`是未知数,`f1`和`f2`是非线性函数。

我们可以将这个方程组表示为向量的形式:```F(x)=[f1(x1,x2);f2(x1,x2)]=[0;0]```其中,`F(x)`是一个列向量。

为了实现牛顿迭代法,我们需要计算方程组的雅可比矩阵。

雅可比矩阵是由方程组的偏导数组成的矩阵。

对于方程组中的每个函数,我们可以计算其对每个变量的偏导数,然后将这些偏导数组成一个矩阵。

在MATLAB中,我们可以使用`jacobi`函数来计算雅可比矩阵。

以下是一个示例函数的定义:```matlabfunction J = jacobi(x)x1=x(1);x2=x(2);J = [df1_dx1, df1_dx2; df2_dx1, df2_dx2];end```其中,`x`是一个包含未知数的向量,`df1_dx1`和`df1_dx2`是`f1`对`x1`和`x2`的偏导数,`df2_dx1`和`df2_dx2`是`f2`对`x1`和`x2`的偏导数。

下一步是实现牛顿迭代法。

牛顿迭代法的迭代公式为:```x(k+1)=x(k)-J(x(k))\F(x(k))```其中,`x(k)`是第`k`次迭代的近似解,`\`表示矩阵的求逆操作。

在MATLAB中,我们可以使用如下代码来实现牛顿迭代法:```matlabfunction x = newton_method(x_initial)max_iter = 100; % 最大迭代次数tol = 1e-6; % 收敛阈值x = x_initial; % 初始解for k = 1:max_iterF=[f1(x(1),x(2));f2(x(1),x(2))];%计算F(x)J = jacobi(x); % 计算雅可比矩阵 J(x)delta_x = J \ -F; % 计算增量 delta_xx = x + delta_x; % 更新 xif norm(delta_x) < tolbreak; % 达到收敛条件,停止迭代endendend```其中,`x_initial`是初始解的向量,`max_iter`是最大迭代次数,`tol`是收敛阈值。

matlab实验 非线性方程(组)求解

matlab实验 非线性方程(组)求解

数学实验报告Matlab的简单应用——非线性方程(组)求解姓名班级学号学院2013年5月12日一、实验目的1.熟悉MATLAB软件中非线性方程(组)的求解命令及其用法。

2.掌握求非线性方程近似根的常用数值方法——迭代法。

3.了解分叉与混沌概念。

二、实验问题1.利用弦截法编程对方程x^5+x-1=0进行求解实验,并与二分法、牛顿切线法进行比较;2.方程f(x)=x^2+x-4=0在(0,4)内有唯一的实根,现构造以下三种迭代函数:(1)g1(x)=4-x^2,迭代初值x0=4;(2)g2(x)=4/(1+x),迭代初值x0=4;(3)g3(x)=x-(x^2+x-4)/(2x+1),迭代初值x0=4;分别用给出的3种迭代函数构造迭代数列x(k+1)=g1(x(k)),i=1,2,3,观察这些迭代数列是否收敛,若收敛能否收敛到方程f(x)=0的解。

除此之外,你还能构造出其他收敛的迭代吗?4.分别取不同的参数值r,做迭代数列x(n+1)=rx(n)(1-x(n)),n=0,1,2……,观察分叉与混沌现象。

步骤1:首先,分别取参数r为0,0.3,0.6,0.9,1.2,1.5,1.8,2.1,2.4,2.7, 3.0,3.3,3.6,3.9等14个值,按迭代序列迭代150步,分别产生14个迭代序列{x(k)},k=0,1,…,150;其次,分别取这14个迭代序列的后50个迭代值(x100,x101,…,x150),画在以r为横坐标的同一坐标面rox上,每一个r取值对应的迭代值点为一列。

步骤2:对(1)中图进行观察分析,容易发现:(1)当r为0,0.3,0.6,0.9,1.2,1.5,1.8,2.1,2.4,2.7时,每个r对应的50个迭代值凝聚在一点,这说明对这些r的取值所产生的迭代序列是收敛的。

(2)当r为3,3.3时,r对应的50个迭代值凝聚在两个点,这说明这些r值所对应的迭代序列不收敛,但凝聚在两个点附近;同时也说明当r在2.7和3之间取值时,对应的迭代序列从收敛到不收敛,轨道由一只分为两支开始出现分叉现象。

数值分析中求解非线性方程的MATLAB求解程序

数值分析中求解非线性方程的MATLAB求解程序

数值分析中求解非线性方程的MATLAB求解程序1. fzero函数:fzero函数是MATLAB中最常用的求解非线性方程的函数之一、它使用了割线法、二分法和反复均值法等多种迭代算法来求解方程。

使用fzero函数可以很方便地求解单变量非线性方程和非线性方程组。

例如,要求解方程f(x) = 0,可以使用以下语法:``````2. fsolve函数:fsolve函数是MATLAB中求解多维非线性方程组的函数。

它是基于牛顿法的迭代算法来求解方程组。

使用fsolve函数可以非常方便地求解非线性方程组。

例如,要求解方程组F(x) = 0,可以使用以下语法:``````3. root函数:root函数是MATLAB中求解非线性方程组的函数之一、它采用牛顿法或拟牛顿法来求解方程组。

使用root函数可以非常方便地求解非线性方程组。

例如,要求解方程组F(x) = 0,可以使用以下语法:``````4. vpasolve函数:vpasolve函数是MATLAB中求解符号方程的函数。

它使用符号计算的方法来求解方程,可以得到精确的解。

vpasolve函数可以求解多变量非线性方程组和含有符号参数的非线性方程。

例如,要求解方程组F(x) = 0,可以使用以下语法:```x = vpasolve(F(x) == 0, x)```vpasolve函数会返回方程组的一个精确解x。

5. fsolve和lsqnonlin结合:在MATLAB中,可以将求解非线性方程转化为求解最小二乘问题的形式。

可以使用fsolve函数或lsqnonlin函数来求解最小二乘问题。

例如,要求解方程f(x) = 0,可以将其转化为最小二乘问题g(x) = min,然后使用fsolve或lsqnonlin函数来求解。

具体使用方法可以参考MATLAB官方文档。

6. Newton-Raphson法手动实现:除了使用MATLAB中的函数来求解非线性方程,还可以手动实现Newton-Raphson法来求解。

第五讲非线性方程求根及其MATLAB实现

第五讲非线性方程求根及其MATLAB实现

第五讲非线性方程求根及其MATLAB实现一、引言在数学和工程领域中,非线性方程的求解是一项基本任务。

非线性方程通常不具备直接求解的方法,因此需要采用迭代方法来逼近其解。

本讲将介绍几种常用的非线性方程求根方法,并给出MATLAB实现的示例。

二、二分法二分法是一种简单但有效的求根方法。

其基本思想是将方程的根所在的区间进行逐步划分,并选择其中点作为迭代的点,直到满足精度要求。

具体实现如下:```matlabfunction x = bisection(f, a, b, tol)if f(a) * f(b) >= 0error('f(a)和f(b)符号相同');endwhile (b - a) / 2 > tolx=(a+b)/2;if f(x) == 0break;elseif f(a) * f(x) < 0b=x;elsea=x;endendend```三、牛顿法牛顿法是一种基于方程导数的迭代方法,其基本思想是使用方程的切线来逼近其根。

具体实现如下:```matlabfunction x = newton(f, df, x0, tol)while abs(f(x0)) > tolx0 = x0 - f(x0) / df(x0);endx=x0;end```四、割线法割线法是一种类似于牛顿法的迭代方法,其基本思想是用两个迭代点的连线来逼近方程的根。

具体实现如下:```matlabfunction x = secant(f, x0, x1, tol)while abs(f(x1)) > tolx=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));x0=x1;x1=x;endend```五、MATLAB实现示例下面是一些使用上述非线性方程求根方法的MATLAB示例:```matlab% 示例1:求方程sin(x) = 0的根a=0;b = 2 * pi;tol = 1e-6;x = bisection(f, a, b, tol);disp(['二分法求解的根为:', num2str(x)]);disp(['牛顿法求解的根为:', num2str(x)]);x = secant(f, a, b, tol);disp(['割线法求解的根为:', num2str(x)]);%示例2:求方程x^2-2=0的根x0=1;tol = 1e-6;x = newton(f, df, x0, tol);disp(['牛顿法求解的根为:', num2str(x)]);```六、总结本讲介绍了几种常用的非线性方程求根方法,并给出了MATLAB的实现示例。

Matlab非线性方程数值解法

Matlab非线性方程数值解法

Matlab⾮线性⽅程数值解法实验⽬的⽤Matlab实现⾮线性⽅程的⼆分法、不动点迭代法实验要求1. 给出⼆分法算法和不动点迭代算法2. ⽤Matlab实现⼆分法3. ⽤Matlab实现不动点迭代法实验内容(1)在区间[0,1]上⽤⼆分法和不动点迭代法求的根到⼩数点后六位。

(2)⼆分法的基本思想:逐步⼆分区间[a,b],通过判断两端点函数值的符号,进⼀步缩⼩有限区间,将有根区间的长度缩⼩到充分⼩,从⽽,求得满⾜精度要求的根的近似值。

(3)不动点迭代法基本思想:已知⼀个近似根,构造⼀个递推关系(迭代格式),使⽤这个迭代格式反复校正根的近似值,计算出⽅程的⼀个根的近似值序列,使之逐步精确法,直到满⾜精度要求(该序列收敛于⽅程的根)。

实验步骤(1)⼆分法算法与MATLAB程序(⼆分法的依据是根的存在性定理,更深地说是介值定理)。

MATLAB程序,1 %⼆分法2 %输⼊:f(x)=0的f(x),[a,b]的a,b,精度ep3 %输出:近似根root,迭代次数k4 function [root,k]=bisect(fun,a,b,ep)5if nargin>36 elseif nargin<47 ep=1e-5;%默认精度8else9 error('输⼊参数不⾜');%输⼊参数必须包括f(x)和[a,b]10 end11if fun(a)*fun(b)>0%输⼊的区间要求12 root=[fun(a),fun(b)];13 k=0;14return;15 end16 k=1;17while abs(b-a)/2>ep%精度要求18 mid=(a+b)/2;%中点19if fun(a)*fun(mid)<020 b=mid;21 elseif fun(a)*fun(mid)>022 a=mid;23else24 a=mid;b=mid;25 end26 k=k+1;27 end28 root=(a+b)/2;29 end⼆分法1运⾏⽰例(并未对输出格式做控制,由于精度要求,事后有必要控制输出的精度):优化代码,减⼩迭代次数(在迭代前,先搜寻更适合的有根区间)1 %⼆分法改良2 %在⼀开始给定的区间中寻找更⼩的有根区间3 %输⼊:f(x)=0的f(x),[a,b]的a,b,精度ep4 %输出:近似根root,迭代次数k5 %得到的根是优化区间⾥的最⼤根6 function [root,k]=bisect3(fun,a,b,ep)7if nargin>38 elseif nargin<49 ep=1e-5;%默认精度10else11 error('输⼊参数不⾜');%输⼊参数必须包括f(x)和[a,b]12 end13 %定义划分区间的分数14 divQJ=1000;15 %等分区间16 tX=linspace(a,b,divQJ);17 %计算函数值18 tY=fun(tX);19 %找到函数值的正负变化的位置20 locM=find(tY<0);21 locP=find(tY>0);22 %定义新区间23if tY(1)<024 a=tX(locM(end));25 b=tX(locP(1));26else27 a=tX(locP(end));28 b=tX(locM(1));29 end30if fun(a)*fun(b)>0%输⼊的区间要求31 root=[fun(a),fun(b)];32 k=0;33return;34 end35 k=1;36while abs(b-a)/2>ep%精度要求37 mid=(a+b)/2;%中点38if fun(a)*fun(mid)<039 b=mid;40 elseif fun(a)*fun(mid)>041 a=mid;42else43 a=mid;b=mid;44 end45 k=k+1;46 end47 root=(a+b)/2;48 end⼆分法2运⾏⽰例(同样没有控制输出)明显地,迭代次数减⼩许多。

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

xk g(xk1)
计 (2) 如果将原方程化为等价方程 x 2x3 1
算则迭代格式为:xk 1 2xk3 1

取初值

x0 0
x1 2x03 1 1 同样的方程
x2 2x13 1 3 ⇒ 不同的迭代格式 x3 2x23 1 55 有不同的结果
则迭代函数为:g(x)= 3 x+1
g(x)=
1 3(x+1)23
容易得到:g′(x)在包含x*的某邻域U(x*) 内
连续,且|g′(x*)|<1
因此迭代格式xk+1= 3 xk +1在x*附件收敛

算 例题
方 用一般迭代法求方程x-lnx=2在区间(2,) 法 内的根,要求|xk-xk-1|/|xk|<=10-8
法 的大致位置。也可将f(x)=0等价变形为g1(x)=g2(x) 的形式,y=g1(x)与y=g2(x)两曲线交点的横坐标所
在的子区间即为含根区间。
例如,求方程3x-1-cosx=0的隔根区间。
将方程等价变形为3x-1=cosx ,易见y=3x-1与 y=cosx的图像只有一个交点位于[0.5,1]内。
意的x∈[a,b](1),则g(x)是[a,b]
上的压缩映射
计 例题

已知方程2x-7-lgx=0,求方程的含根区

间,考查用迭代法解此方程的收敛性。

计 算 方 法
计在这里我们考查在区间[3.5,4]的迭代法 算的收敛性
方 很容易验证:f(3.5)<0,f(4)>0 法 将方程变形成等价形式:x=(lgx+7)/2

a
2
b
有误差
|x1

x*|

b
2
a
法 第 k 步产生的 xk 有误差
|xk

x*|
ba 2k
对于给定的精度 ,可估计二分法所需的步
数k:
ba
lnb a ln ε
2k ε k
ln 2
计 例1 用二分法求 x3 4x2 10 0
算 在(1,2)内的根,要求绝对误差不超过 1 102
(2)在行星轨道( planetary orbits)的计算中, 对任意的a和b,我们需要求x-asinx=b的根
(3) 在数学中,需要求n次多项式xn
1+...+an-1 x + an =0的根
+
a1
xn-
求f(x)=0的根
计 算 方
法非线性方程的一般形式 f(x)=0 这里f(x)是单变量 x 的函数,它可以是代数多项式 f(x)=a0+a1x+……+anxn (an≠0) 也可以是超越函数,即不能表示为上述形式的函数。

x
因此, x0(2,),xk+1=2+lnxk产 生的序列 xk 收敛于X*
取初值x0=3.0,计算结果如下:
计 k xi 算 0 3.000000000 方 1 3.098612289 法 2 3.130954362
3 3.141337866 4 3.144648781 5 3.145702209 6 3.146037143
计 (2)逐步搜索法

方 运用零点定理可以得到如下逐步搜索法:

先确定方程f(x)=0的所有实根所在的区间
为[a,b],从x0=a 出发,以步长
h=(b-a)/n
其中n是正整数,在[a,b]内取定节点:
xi=x0+ih (i=0,1,2,……,n)
计算f(xi)的值,依据函数值异号及实根的个数确 定隔根区间,通过调整步长,总可找到所有隔根
重复上述过程
作为第一次近似值
xk1 xk

f (xk ) f (xk )
计 算
xk1 xk
计算步骤
f (xk ) f (xk )
(方1) 选定初值x0 ,计算f (x0) , f (x0)
(法2)
按公式 xk1 xk 得新的近似值xk+1
f (xk ) f (xk )
方 解:
2

f(1)=-5<0 f(2)=14>0 f(1.5)>0
有根区间 -(1,2)+ (1,1.5)
中点 x n
x1
x2
1.5
1.25
f(1.25)<0 (1.25,1.5)
x3 1.375
f(1.375)>0 (1.25,1.375)
x4 1.313
f(1.313)<0 (1.313,1.375) x5 1.344
区间。
§3.1 对分区间法

(Bisection Method )



a
aax121 x*
xb2 bb1
停机条件(termination condition ):
xk1 xk ε1 或 f ( x) ε2

While(|a-b|>eps) x=(a+b)/2

计算f(x)

若(|f(x)|<eps) x为解 若f(x)*f(b)<0 修正区间为[x,b],即a=x

若f(a)*f(x)<0 修正区间为[a,x],即b=x
End while
什么时候停止?
a
xa1 x*
xb2 b
xk1 xk ε1 或 f ( x) ε2


方 法
x3 2x2 4x 7 0
在区间[3,4]内的根,精确到10-3
计 误差 分析:
算 方
第1步产生的
x1
x3 x1 2
方 法
3
x1
x0 1 2
3 1 0.7937 2
x2 3
x1 1 2
3
1.7937 2
0.9644
依此类推,得
x3 = 0.9940 x4 = 0.9990 x5 = 0.9998 x6 = 1.0000 x7 = 1.0000
已经收敛,故原方程的解为 x = 1.0000
f(1.344)<0 (1.344,1.375) x6 1.360
f(1.360)<0 (1.360,1.375) f(1.368)>0 (1.360,1.368)
x7 1.368 x8 1.364
例2,求方程f(x)= x 3 –e-x =0的一个实根。

因为 f(0)<0,f(1)>0。 故f(x)在(0,1)内有根
f (x)
f (x0 )
f (x0 )(x x0 )
f
(
2!
) (Nxewtxon0 )2
迭代公式
0 f (x*) f (x0) f (x0)(x * x0)
x*
x0

f (x0 ) f (x0 )
x1 x0
f ( x0 ) f ( x0 )
0 3.000000000 1 3.147918433 2 3.146193441 3 3.146193221
计 迭代法的收敛阶(收敛速度)


定义. :设序列{xk}收敛于x*,若存在p≥1和正数c, 使得成立

lim
k
xk 1 x* xk x* p
C
则称{xk}为 p 阶收敛的
什么形式的迭代 法能够收敛呢?
如何构造迭代函 数呢?
由此可见,这种迭代格式是发散的
计 若从任何可取的初值出发都能保证收敛,则称它 算 为大范围收敛。如若为了保证收敛性必须选取初值充 方 分接近于所要求的根,则称它为局部收敛。
法 通常局部收敛方法比大范围收敛方法收敛得快。 因此,一个合理的算法是先用一种大范围收敛方法求 得接近于根的近似值(如对分法),再以其作为新的 初值使用局部收敛法(如迭代法)。
解:令f(x)=x-lnx-2
f(2)<0,f(4)>0,故方程在(2,4)内至少有一个根
又 x (2,),f (x)=1- 1 0 x
因此方程 f (x)=0在(2,)内仅有一个根x*, 且x* (2,)
计 将方程化为等价方程:x=2+lnx

方 g(x)=2+lnx, |g (x)|=| 1 | 0.5 1, x (2,4)
迭代
(3) 对于给定的允许精度,如果
| xk1 xk | 则终止迭代,取 x* xk 1;否则k=k+1,再转
g(x2)
y=g(x)
y=g(x)
g(x1)
g(x2)
arctan(a) pi / 4
g(x1)
x
x1
x2
x
x1 x2
计 重要: (迭代法的局部收敛定理)



定理条件非必要条件,而且定理中的压
缩条件不好验证,一般来讲,
若知道迭代函数g(x)∈C1『a,b](1),并
且满足|g′(x)|≤ ≤1(2), 对任
g (x) 的不动点 Fixed-Point
Picard Iteration
计 迭代法流图

开始


输入x0 ,
x1 g(x0)
x1 x0
N
x0 x1
Y
输 出 x1
结束
计 算 方 法
For example:2x3-x-1=0
计 (1) 如果将原方程化为等价方程
算仍取初值 x0 0

x x1 x*
相关文档
最新文档