非线性方程实根的加速法.docVIP

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

山东师范大学数学科学学院实验报告 实验课程: 非线性方程(组)的解法 实验项目: 非线性方程实根的加速法 姓名 郭新国 学号: 200708020244 班级: 二班 专业: 信计 指导教师: 朱爱玲 完成日期: 2010-6-20 实验目的:掌握解非线性方程实根的简单迭代法的加速法、牛顿法加速法(下山法)与重根求解方法的上机编程运算. 实验内容: 问题分析和算法设计 问题:1. 1. 用加权法加速技术求方程x = e-x在0.5附近的一个根 . 问题分析 : 假设g(x)=exp(-x),加权加速方法为迭代 x(k+1) = g(x(k)), 修正 x(k+1) = (x(k+1)-L*x(k))/(1-L),其中L=dg/dx|(x_star),x_star = 0.5迭代4次就可以使得精度达到1e-4. 主要程序代码: #include iostream #include cmath #include iomanip using namespace std; int main() { int k; double x,xk,L,G,err; double g(double x); double dg(double x); k = 0; xk = 0.5; L = dg(xk); G = 1 - L; err = 1; while(err 0.0001) { x = g(xk); // 迭代 x = (x - L*xk) / G; // 修正 err = fabs(x - xk); xk = x; k++; } cout K-th iteration: k endl; cout err= setprecision(12) err endl; cout x= setprecision(12) x endl; cout g(x)= setprecision(12) g(x) endl; return 0; } double g(double x) { return (exp(-x)); } double dg(double x) { return (-exp(-x)); } 运行结果和总结 运行结果: 用埃特金迭代法求方程x2=x3-1在x0=1.5附近的根. /* 问题2 用Aitken Method迭代法求方程x^2=x^3-1在x0=1.5附近的根. (根所在的区间为[1,2]) 方程等价于 x = (x^2+1)^(1/3),简单迭代法适用其上 Aitken Method:x(k+3) = x(k) - (x(k+1)-x(k))^2/(x(k+2)-2x(k+1)+x(k)),首两项可用简单迭代法给出 */ #include iostream #include cmath #include iomanip using namespace std; int main() { int k; double x,xk0,xk1,xk2,err; double f(double x); k = 0; xk0 = 1.5; xk1 = f(xk0); xk2 = f(xk1); err = 1.0; while(err 0.00001) { // 迭代序列 xk0,xk1,xk2,x... x = xk0 - pow((xk1 - xk0),2)/(xk2 - 2*xk1 + xk0); xk0 = xk1; xk1 = xk2; xk2 = x; err = fabs(xk2 - xk1); k++; } cout K-th iteration: k endl; cout err= setprecision(12) err endl; cout x= setprecision(12) x endl; cout f(x)= setprecision(12) f(x) endl; return 0; } double f(double x) { return cbrt(pow(x,2) + 1.0); // cbrt 立方根函数 } 运行结果: 用Steffenson算法求方程x3

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档