太原理工大学数值计算方法实验合编.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本科实验报告 课程名称: 计算机数值方法 实验项目: 方程求根、线性方程组的直接解 法、 线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点: 行 勉 楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师: 李 誌 , 崔 冬 华 2016年 4 月 8 日 学生姓名 实验成绩 实验名称 实验一 方程求根 实验内容和要求 熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-xn|0.5×10-5 (1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。 (2)加深对方程求根方法的认识,掌握算法。 (3)会进行误差分析,并能对不同方法进行比较。 实验原理 二分法:如果要求已知函数 f(x) = 0 的根 (x 的解),那先要找出一个区间 [a, b],使得f(a)与f(b)异号。根据介值定理,这个区间内一定包含着方程式的根。求该区间的中点m=(a+b)/2,并找出 f(m) 的值。若 f(m) 与 f(a) 正负号相同,则取 [m, b] 为新的区间, 否则取 [a, m]。重复第3步和第4步,直到得到理想的精确度为止。 割线法是利用牛顿迭代法的思想,在根的某个领域内,函数有直至二阶的连续导数,并且不等于0,则在领域内选取初值x0,x1,迭代均收敛。 (1) 在区间[m ,n]内输入初值x0,x1. (2) 计算x2。x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0)) (3) x0=x1,x1=x2(4) 判断是否达到精度,若是输出x1,若否 执行(2) 主要仪器设备 HP计算机 实验记录 1.二分法 // 方程求根(二分法).cpp : 定义控制台应用程序的入口点。 // #include stdafx.h #includeiostream using namespace std; class Text { public: float x, y, a, b, c, n = 0; void Getab() { cout 请输入计算区间:(以空格隔开) endl; cin a b; } float GetY(float x) { y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) 0.000005) { cout c 为方程的解 endl; return 0; } if (GetY(a)*GetY(c) 0) { return Calculate(a,c); } if (GetY(c)*GetY(b) 0) { return Calculate(c,b); } } }; int main() { cout 方程组为:f(x)=x^3+4x^2-10=0 endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。 // #include stdafx.h #includeiostream using namespace std; class A { public: float x0,x1,y; float GetY(float x) { y= x*x*x+4*x*x-10; return y; } void GetNumber() { cout请输入两个初始近似值:(以空格隔开) endl; cin x0; cin x1; } void Calculate(float x0,float x1) { float x2; x2 = x1 - (GetY(x1) / (GetY(x1) -

文档评论(0)

treyhbgfd + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档