matlab非线性方程的解法(含牛拉解法)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 的符号逐步将有限区间缩小,使在足够小的区间内,方程有且仅有一根。下面简述其基本步