: .
本科实验报告
课程名称: 计算机数值方法
实验地点:
专业班级:—学号:
学生姓名:
指导教师:
成 绩:
年 月曰
太原理工大学学生实验报告
学院名称
计算机科学与技术学院
专业班级
学号
学生姓名
实验日期
成绩
课程名称
计算机数值方法
实验题目
实验一
方程求根
、实验目的和要求:
(1) 实验目的: 熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程
进行根的求解。求方程:f(x)=x*x*x+4*x*x-10=0 在[1,2]内的一个实根,且要求满足精度
*
|x -x n|<
(2) 实验要求:
1. 应用C,C++或JAVA编出通用程序,源程序要有详细的注释和说明;
2. 比较计算结果,对不同方法进行比较分析;
3. 实验完成,提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计 算成功的原因或计算失败的教训。
二、实验内容和原理:
(1) 增值寻根法:基本思想为:从初始值x0开始,按规定的一个初始步长 h来增 值。令x (n+1)=x (n) +h,(n=0,1,2...), 同时计算f (x (n+1)).在增值过程中会遇到 三种情况:1. f (x(n+1) ) =0,此时x(n+1)即为方程根。
2. f (x(n))和f (x (n+1))同号,说明区间内无根。
3. f (x(n))和f (x (n+1))同号,说明区间内有根,贝肿把步长缩小,直至满足精度要求 为止,x(n)或x(n+1)就是满足精度的近似根。
(2) 二分法:基本思想为:设f(x)在[a,b]内连续,且f(a)*f(b)<0 ,贝U方程f(x)=0 在(a,b)内有实根x*.然后逐步对分区间[a,b],通过判断两端点函数值乘积的符号,进一 步缩小有根区间从而求出满足精度要求的近似值。
(3) 牛顿迭代法:基本思想为给定一个初始值由牛顿法的迭代公式:
x(n+1)=x( n)-f(x( n))/f ' (x( n)) (n=0,1,2...) 逐步求出 x (n),直至(x (n+1) -x( n)) 的绝对值小于给定精度,则x (n+1)即可作为近似值。
(4) 双点割线法:由给出的两个初始近似值,再根据双点割线法迭代公式:
x(n+1)=x( n)-(f(x( n))/(f(x( n))-f(x( n-1)))*(x( n)-x( n-1)),( n=1,2,3...) 逐步求出 x
(n),直至x(n+1)-x(n)的绝对值满足精度,则x (n+1)即可作为近似值。
(5) 单点割线法:由给出的两个初始近似值,再根据双点割线法迭代公式:
x(n+1)=x(n)-(f(x(n))/(f(x(n))-f(x(O)))*(x(n)-x(O)),(n=1,2,3...) 逐步求出 x (n),
直至x(n+1)-x(n)的绝对值满足精度,则x (n+1)即可作为近似值。
三、 主要仪器设备:笔记本电脑
四、 操作方法:
源代码:
(1) 增值寻根法:
#in clude<>
double fun( double x){ }
int mai n(){
double a=,h=1,x=a;
printf(" 初始近似值为:%lf\n",a);
do{
if(fun(x)==0){printf(" 根为:%f",x);return 0;} /* 如果初始值函数值为 0,
则初始值即为根*/
else if(fun(x)*fun(x+h)>0) /* 如果 fun(x)和 fun(x+h)同号则使 X加 h 并
跳出本次循环执行下一次*/
{x=x+h;c on ti nu e;}
else if(fun (x)*fu n( x+h)<0) f\n",result);
五、结果分析:
(1) 通过对不同方法比较可知,收敛速度:牛顿迭代法 >双点割线法 > 单点割线法,二分 法和增值寻根法的收敛速度就相对较慢,且结果相对前三种方法较不精确。
(2) 但二分法和增值寻根法的优点是简单,对 f(x)只要求连续,局限性是只能用于求实 根,不能求复根及偶数重根。
(3) 牛顿法则收敛很快,而且可求复根,缺点是对重根收敛较慢,要求函数一阶导数存 在。
(4) 割线法省去了牛顿法求函数导数过程,简化了计算步骤,且收敛速度也较快,其中 双点割线法比单点割线法收敛速度快。
七
太原理工大学计算机数值方法实验报告 来自淘豆网m.daumloan.com转载请标明出处.