方程的近似根与迭代法
- 格式:doc
- 大小:114.50 KB
- 文档页数:15
第五讲方程的近似根与迭代法
实验目的:
1.理解求方程近似解的二分法、切线法.
2.了解迭代法的思想.
3.用matlab编二分法、切线法的程序.
实验内容:
1.学习matlab命令.
matlab的while-end循环语句和C语言的while循环语句类似,while循环的一般形式是:
while表达式
循环体
end
只要表达式的结果非零,循环体语句就重复执行.
例1.利用while循环解答:使n!是100位数的第一个n是几?解:n=1;
nj=1;
while nj<1e100
nj=nj*n;
n=n+1;
end
n=n-1
2.二分法求方程的近似根
求方程的近似解,可分两步来做:
(1)确定根的大致范围,就是确定一个区间[a,b],使所求的
根是位于这个区间内的唯一实根,这一步工作称为根的隔离,区间[a,b]称为所求实根的隔离区间.为了确定根的隔离区间,可以先画出y=f(x)的图形,然后从图上定出它与x轴交点的大概位置.
(2)以根的隔离区间的端点作为根的初始近似值,逐步改善
根的近似值的精确度,直至求得满足精确度要求的根的近似解.完成这一步工作有多种方法,这里介绍二分法和切线法.设f(x)在区间[a,b]上连续,f(a)f(b)<0,且方程f(x)=0在(a,b)内仅有一个实根,那么,[a,b]就是这个根的隔离区间.
取[a,b]的中点,计算,如果,则;如果
与同号,那么,取,,由即
知,,且;以为新的隔离区间,重复上
述做法,当时,可求得,且
如此重复n次,可得,且
,由此可知,如果以或作为的近似值,那么,
其误差小于.
例2.用二分法求方程的实根的近似值,
使误差不超过.
解:(1)求根的初始隔离区间.
在matlab工作区输入命令:
ezplot('x^3+1.1*x^2+0.9*x-1.4');grid on;
画出曲线图形.
通过观察,根应在-2和2之间,进一步画出该部分的图形: ezplot('x^3+1.1*x^2+0.9*x-1.4',[-2,2]);grid on;
更清楚看到根在0和1之间.
(2)编写程序如下:
f=input('输入函数f(x)=');
qujian=input('输入区间=');
err=input('请输入误差='); a=qujian(1);
b=qujian(2);
yc=1;
while((b-a)>err)&(yc~=0); c=(a+b)/2;
x=a;
ya=eval(f);
x=b;
yb=eval(f);
x=c;
yc=eval(f);
if ya*yc<0
b=c;
else
a=c;
end
x0=c
end
存为文件erfanfa.m
调用erfanfa的如下结果:
erfenfa
输入函数f(x)='x^3+1.1*x^2+0.9*x-1.4'输入区间=[0,1]
请输入误差=0.001
x0=
0.5000
x0=
0.7500
x0=
0.6250 x0= 0.6875 x0= 0.6563 x0= 0.6719 x0= 0.6641 x0= 0.6680 x0= 0.6699 x0= 0.6709
三.迭代法
迭代是一种逐步逼近的方法,已知方程f(x)=0的一个近似根后,通常使用某个固定公式反复校正根的近似值,使之逐
步精确化,一直到满足给定的精度要求为止.
具体做法是,把给定方程f(x)=0改写成等价形式
在根附近任取一点作为的近似值,把代入上式右端:
一般(时,).把作为根的新的近似值代入公式得.重复上述步骤,则有如下迭代公式:
()
其中称为迭代函数,并有如下迭代序列
如果迭代序列的极限存在,则称迭代过程收敛,显然
即
所以
如果迭代序列的极限不存在,则称迭代过程发散.
例3.求方程在x=1.5附近的根.解:将方程改写成下列形式:
由此得迭代公式
()
迭代初值.matlab程序如下:
x0=1.5;
fori=1:20
x0=(x0+1)^(1/3)
end
运行如下:
x0=
1.35720880829745 x0=
1.33086095880143 x0=
1.32588377423235 x0=
1.32493936340188 x0=
1.32476001129270 x0=
1.32472594522689 x0=
1.32471947453436 x0=
1.32471824544894
x0=
1.32471801198820 x0=
1.32471796764309 x0=
1.32471795921988 x0=
1.32471795761992 x0=
1.32471795731601 x0=
1.32471795725828 x0=
1.32471795724732 x0=