求解方程组实根.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
求解方程组实根

实验三 求解方程的实根 实验名称:求解方程的实根 实验目的: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)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输出每一步得到的根和每两步之间的误差值。 三 牛顿法 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],其中的i从3开始。 3 由f(x[i])-f(x[i-1])的差值即两数之间的误差与容许的误差进行比较,当两次的迭代值在允许的范围内,则结束运行。 4输出每一个计算步骤的根的值和每两步之间的误差值。 【源代码】 #includeiostream using namespace std; #include iomanip #includecmath #define f(x) ((x)*(x)*(x)-3*(x)-1) #define max 10000 #define err 0.0001 #define d(x) 3*(x)*(x)-3 #define f1(x) (3*(x)*(x)+4*(x)+10)//函数f的导数 void tishi() { cout*****************************************************endl; cout请选择操作endl; cout 1.对分区间法,2.迭代法,3.牛顿法,4.弦位法,5.退出endl; cout*****************************************************endl; } double duifen() { int i; coutsetiosflags(ios::fixed); coutsetprecision(6); double m=0.0; double x[max]; cout请输入x=2.0附近的一个区间作为求根区间endl; cinx[0]x[1]; double a,b; a=x[0]; b=x[1]; if(f(x[0])*f(x[1])0) { for(i=1;imax;i++) { if(i=9) { cout第i 步:; } else cout第i步:; cout在区间(x[0],x[1])的中点为 x = ; m=(x[0]+x[1])/2; coutm; if(f(m)*f(x[0])0) x[1]=m; else x[0]=m; cout,误差值为:(fabs((a-b)/(pow(2.0,i+1)))); coutendl; if(fabs(f(x[1])-f(x[0]))err) { coutsetiosflags(

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档