![](https://csdnimg.cn/release/download_crawler_static/88453786/bg5.jpg)
第二章 非线性方程(组)的数值解法的 MATLAB 程序
13.
k = 9,x=-1.7959,
wuca = 9.7656e-004,yx = 0.0037
2.4
2.4 2.4
2.4 迭代法及其
迭代法及其迭代法及其
迭代法及其 MATLAB
MATLABMATLAB
MATLAB 程序
程序程序
程序
确定根的近似位置以后,接下来的工作就是将根精确化,即按某种方法将初始近似值逐
步精确化,直到满足所要求的精确度为止. 上节介绍的二分法是将根精确化的方法之一,但
是它的收敛速度较慢,且不能求出偶重根.迭代法可以克服这种缺陷.迭代法是求解方程的
根、线性和非线性方程组的解的基本而重要的方法.
2.4.2
2.4.2 2.4.2
2.4.2 迭代法的
迭代法的迭代法的
迭代法的 MATLAB
MATLABMATLAB
MATLAB 程序
程序程序
程序 1
11
1
迭代法需要自行编制程序.下面提供的迭代法的 MATLAB 程序 1 使用时只需输入迭代初始
值
0
x 、迭代次数 k、迭代公式 x
k+1
=
(x
k
)和一条命令,运行后就可以输出求迭代序列 }{
k
x 、
迭代 k 次得到的迭代值
k
x 和相邻两次迭代的偏差 piancha =|
1−
kk
xx | (简称偏差
偏差偏差
偏差)和偏
差的相对误差 xdpiancha=|
1−
kk
xx
|
k
x 的值,并且具有警报功能(若迭代序列发散,
则提示用户“请重新输入新的迭代公式”;若迭代序列收敛,则屏幕会出现“祝贺您!此迭
代序列收敛,且收敛速度较快”).我们可以用这个程序来判断迭代序列的敛散性,也可以
用于比较由一个方程得到的几个迭代公式的敛散性的优劣.
迭代法的
迭代法的迭代法的
迭代法的 MATLAB
MATLABMATLAB
MATLAB 程序
程序程序
程序 1
1 1
1
输入的量:初始值
0
x 、迭代次数 k 和迭代公式 ),2,1,0()(
1
L
+
kxx
kk
;
运行后输出的量:迭代序列 }{
k
x 、迭代 k 次得到的迭代值
k
x 、相邻两次迭代的偏差
piancha =|
1−
kk
xx
|和它的偏差的相对误差 xdpiancha=
kkk
xxx
1−
− 的值.
根据迭代公式(2.4)和已知条件,现提供名为diedai1.m的M文件如下
function [k,piancha,xdpiancha,xk]=diedai1(x0,k)
% 输入的量--x0是初始值,k是迭代次数
x(1)=x0;
for i=1:k
x(i+1)=fun1(x(i));%程序中调用的fun1.m为函数y=φ(x)
piancha= abs(x(i+1)-x(i)); xdpiancha= piancha/( abs(x(i+1))+eps);
i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk]
end
if (piancha >1)&(xdpiancha>0.5)&(k>3)
disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式')
return;
end
if (piancha < 0.001)&(xdpiancha< 0.0000005)&(k>3)
disp('祝贺您!此迭代序列收敛,且收敛速度较快')
return;
end
p=[(i-1) piancha xdpiancha xk]';
例
例例
例 2.4.1
2.4.12.4.1
2.4.1 求方程
102)(
2
−+= xxxf
的一个正根.
解
解解
解 在 MATLAB 工作窗口输入程序
>> [k,piancha,xdpiancha,xk]= diedai1(2,5)
运行后输出用迭代公式 2/)10(
2
1 kk
xx −=
+
的结果