9.5方程求根的数值试验.docx
- 文档编号:144389
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:10
- 大小:202.25KB
9.5方程求根的数值试验.docx
《9.5方程求根的数值试验.docx》由会员分享,可在线阅读,更多相关《9.5方程求根的数值试验.docx(10页珍藏版)》请在冰豆网上搜索。
数值分析实验报告
(二)倪萍(0611080103)
数值分析实验报告
(二)
班级:
06110801姓名:
倪萍学号:
0611080103日期:
2008-12-31
一课题名称:
方程求根的数值试验
二问题:
当用迭代法求方程的根时,我们从开始,并用公式
计算序列,为避免在每步都要计算导数,有人建议在每一步中都用来代替,也有人建议每隔一步计算一次公式中的导数,这个方法由下式给出:
对比以上建议的2种方法,以几个已知其根的简单函数为例,与法作数值比较,打印出每种算法的误差,以检查收敛性,这两种算法的效果如何?
三计算公式以及算法:
(Ⅰ)迭代法:
(1)
(Ⅱ)在每一步中都用来代替
(2)
(Ⅲ)每隔一步计算一次公式中的导数
;(3)
四数据流向图
恰当选择迭代的初始值
给出其导函数
给出已知其根的简单函数
Y
输出结果
判断是否符合精度要求
对上面的是三种算法分别进行迭代
N
五符号引用
标志符
数学符号
类型
个数
入
出
作用
i
整型
不定
迭代次数
X0/y0/z0
实型
不定
*
初始值、迭代后的值以及最后结果
X1/y1/z1
实型
不定
中间变量
a
实型
1
的值
m
实型
1
的值
六函数说明
实验中选取了两个简单的函数进行了实验,即:
(1);则
(2);则
函数分别为对进行迭代法,在每一步中都用来代替,每隔一步计算一次公式中的导数的程序。
函数分别为对进行迭代法,在每一步中都用来代替,每隔一步计算一次公式中的导数的程序。
七流向图
i=0;根据已经选定的X0/y0/z0,赋值给X1/y1/z1
利用公式(3),计算x0
利用公式
(2),计算x0
利用公式
(1),计算x0
(Ⅲ)
(Ⅱ)
(Ⅰ)
输出,结束
输出误差
Y
N
八模块和程序
1.迭代模块
do
{
if(i%2==0)
{a=g1(z0);}
z1=z0;
z0=z1-g(z1)/a;
i++;
cout<<"x"<
"< } while(fabs(z0-4)>1e-15); 当迭代次数为偶数时,即i为2的倍数时,计算一次公式的导数的值。 当时,即尚未达精度要求,则需要继续计算,迭代。 2.源程序 #include #include #include floatf(floatx) {returnx*x-1.0;}//以函数f(x)=x^2-1为例 floatf1(floaty) {return2.0*y;}//函数f(x)=x^2-1的导数为f'(x)=2*x floatg(floatm) {returnsqrt(m)-2.0;}//以函数f(x)=sqrt(x)-2为例 floatg1(floatn) {return1.0/(2*sqrt(n));} voidN(floatx0)//用Newton迭代算法 { floatx1; inti=0; cout<<"迭代初值为: "<<'\t'<<"x0="< do { x1=x0; x0=x1-f(x1)/f1(x1); i++; cout<<"x"< "< } while(fabs(x1-x0)>1e-15); } voidN1(floaty0)//导数用f'(x0)来代替 { floaty1,a; a=f1(y0);//计算出f'(x0)的值 inti=0; cout<<"迭代初值为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 9.5 方程 求根 数值 试验