欢迎来到天天文库
浏览记录
ID:62165994
大小:166.50 KB
页数:9页
时间:2021-04-20
《求解方程组的实根.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三求解方程的实根实验名称:求解方程的实根实验目的:1。利用对分区间法、迭代法、牛顿法、弦位法的思想实现计算机编程解决方程的求根问题。2.通过计算机语言实现对分区间法、迭代法、牛顿法、弦位法的算法进行编程,加深对这些方法的理解、应用。3.提高利用计算机解决问题的能力。指导教师:实验时间:2010年3月24日姓名:学号:【算法分析】一对分区间法1输入方程实根所在的初始区间(a,b).2求出f(a),f(b).若f(a)*f(b)〈=0,则继续进行操作运算,否则退出运行。3对区间(a,b)进行半分,即取c=(a+b)/2,计算f(c),若f(c)*f(a)〈
2、0,则b=c,即将(a,b)区间半分到(a,(a+b)/2),否则a=c,即区间半分到((a+b)/2,b)上.4重复3,将每一次f((a+b)/2)与上一次的结果进行比较求得两者之差,如果误差在给定的四位有效数字之内,就停止运行,输出运行得到每一步的根和误差。否则继续执行3、4步骤.二迭代法1申请一个数组x[],输入迭代的初始值x[0]。2通过判断函数收敛的条件笔算除了关于原方程的等价方程x=g(x)的表达式,然后由x[0]和迭代方程x[i]=((3。0*(x[i-1])+1。0)^(1/3)逐步得到x[i]的根,然后由根之间的误差与提供的允许的误差判断
3、终止的条件。3输出每一步得到的根和每两步之间的误差值。三牛顿法1输入初始值x[0]2通过书上例题的方程的导数和方程的关系得到计算公式x[i]=x[i-1]-f(x[i-1])/ds(f(x[i—1])),其中i从1开始。3由x[i]-x[i-1]与提供允许的误差进行比较,即可得到终止程序的条件.4输出每一个计算步骤的根的值和每两步之间的误差值。四弦位法1由例题提供的区间进行弦位法求根.其中令x[1]=1,x[2]=3。2由公式x[i]=x[i-1]—(f(x[i-1])/(f(x[i—1]—f(x[i-2]))))*(x[i-1]—x[i—2])求得x[i
4、],其中的i从3开始。3由f(x[i])-f(x[i-1])的差值即两数之间的误差与容许的误差进行比较,当两次的迭代值在允许的范围内,则结束运行。4输出每一个计算步骤的根的值和每两步之间的误差值.【源代码】#include〈iostream〉usingnamespacestd;#include〈iomanip>#include〈cmath>#definef(x)((x)*(x)*(x)-3*(x)—1)#definemax10000#defineerr0。0001#defined(x)3*(x)*(x)—3#definef1(x)(3*(x)*(x)+4*
5、(x)+10)//函数f的导数voidtishi(){cout〈<"*****************************************************"<〈endl;cout〈〈”请选择操作"<〈endl;cout〈<”1.对分区间法,2.迭代法,3。牛顿法,4.弦位法,5。退出"〈〈endl;cout<〈"*****************************************************"〈〈endl;}doubleduifen(){inti;cout〈〈setiosflags(ios::fixed);co
6、ut<x[0]〉〉x[1];doublea,b;a=x[0];b=x[1];if(f(x[0])*f(x[1])〈0){for(i=1;i〈max;i++){if(i<=9){cout〈〈"第”〈7、(f(m)*f(x[0])〈0)x[1]=m;elsex[0]=m;cout<〈”,误差值为:”<〈(fabs((a—b)/(pow(2。0,i+1))));cout<〈endl;if(fabs(f(x[1])-f(x[0]))8、l;return1;}/*********************
7、(f(m)*f(x[0])〈0)x[1]=m;elsex[0]=m;cout<〈”,误差值为:”<〈(fabs((a—b)/(pow(2。0,i+1))));cout<〈endl;if(fabs(f(x[1])-f(x[0]))8、l;return1;}/*********************
8、l;return1;}/*********************
此文档下载收益归作者所有