matlab非线性方程的解法(含牛拉解法)

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

非线性方程的解法(含牛拉解法)

1引 言

数学物理中的许多问题归结为解函数方程的问题,即,

0)(=x f (1.1) 这里,)(x f 可以是代数多项式,也可以是超越函数。若有数*x 为方程0)(=x f 的根,或称函数)(x f 的零点。

设函数)(x f 在],[b a 内连续,且0)()(

如何寻求根的初始值呢?简单述之,为了明确起见,不妨设)(x f 在区间],[b a 内有一个实的单根,且0)(,0)(>

0)(*)(≤+h x f x f k k (1.2) 那么所求的根必在),(h x x k k +内,这时可取k x 或h x k +作为根的初始近似值。这种方法通常称为“定步长搜索法”。另外,还是图解法、近似方程法和解析法。

2 迭代法

2.1 迭代法的一般概念

迭代法是数值计算中一类典型方法,不仅用于方程求根,而且用于方程组求解,矩阵求特征值等方面。迭代法的基本思想是一种逐次逼近的方法。首先取一个精糙的近似值,然后用同一个递推公式,反复校正这个初值,直到满足预先给定的精度要求为止。

对于迭代法,一般需要讨论的基本问题是:迭代法的构造、迭代序列的收敛性天收敛速

度以及误差估计。这里,主要看看解方程迭代式的构造。

对方程(1.1),在区间],[b a 内,可改写成为:

)(x x ϕ= (2.1) 取],[0b a x ∈,用递推公式:

)(1k k x x ϕ=+, ,2,1,0=k (2.2) 可得到序列:

==0210}{,,,,k k k x x x x x (2.3)

当∞→k 时,序列∞

=0}{k k x 有极限

x ~,且)(x ϕ在x ~附近连续,则在式(2.2)两边极限,得, )~(~

x x ϕ= 即,x ~

为方程(2.1)的根。由于方式(1.1)和方程(2.1)等价,所以, x x ~

*= 即,

*lim x x k k =∞

→ 式(2.2)称为迭代式,也称为迭代公式;)(x ϕ可称为迭代函数。称求得的序列∞

=0}{k k x 为迭代序

列。

2.2 程序和实例

下面是基于MATLAB 的迭代法程序,用迭代格式)(1n n x g p =+,求解方程)(x g x =,其中初始值为0p 。

**************************************************************************

function[p,k,err,P]=fixpt(f1021,p0,tol,max1)

% f1021是给定的迭代函数。

% p0是给定的初始值。

% tol 是给定的误差界。

% max1是所允许的最大迭代次数。

% k 是所进行的迭代次数加1。

% p 是不动点的近似值。

% err 是误差。

% P = {p1,p2,…,pn}

P(1) = p0;

for k = 2:max1

P(k) = feval('f1021', P(k-1));

k, err = abs(P(k) - P(k-1))

p = P(k);

if(err

break;

end

if k == max1

disp('maximum number of iterations exceeded');

end

end

P=P;

**************************************************************************** 例2.1 用上述程序求方程0sin 2=-x x 的一个近似解,给定初始值5.00=x ,误差界为510-。

解:先用m 文件先定义一个名为f1021.m 的函数文件。

function y = f1021(x)

y = sin(x)/x;

建立一个主程序prog1021.m

clc

clear all

fixpt('f1021',0.5,10^(-5),20)

然后在MATLAB 命令窗口运行上述主程序,即:

>> prog1021

计算结果如下。

k = 2

err = 0.4589

k = 3

err = 0.1052

k = 4

err = 0.0292

k = 5

err = 0.0078

k = 6

err = 0.0021

k = 7

err = 5.7408e-004

k = 8

err = 1.5525e-004

k = 9

err = 4.1975e-005

k = 10

err = 1.1350e-005

k = 11

err = 3.0688e-006

P = Columns 1 through 6

0.5000 0.9589 0.8537 0.8829 0.8751 0.8772

Columns 7 through 11

0.8766 0.8768 0.8767 0.8767 0.8767

ans = 0.8767

3 二分法

3.1 二分法原理

二分法是方程求解最直观、最简单的方法。二分法以连续函数的介值定理为基础的。由介值定理知道,若函数)(x f 区间],[b a 上连续,且0)(*)( b f a f ,即)(a f 和)(b f 负号相反,则)(x f 在],[b a 内一定有实根。二分法的基本思想是:用对分区间的方法根据分点处函数)(x f 的符号逐步将有限区间缩小,使在足够小的区间内,方程有且仅有一根。下面简述其基本步