数值计算方法实验1

上传人:wt****50 文档编号:37488947 上传时间:2018-04-17 格式:DOC 页数:4 大小:374KB
返回 下载 相关 举报
数值计算方法实验1_第1页
第1页 / 共4页
数值计算方法实验1_第2页
第2页 / 共4页
数值计算方法实验1_第3页
第3页 / 共4页
数值计算方法实验1_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《数值计算方法实验1》由会员分享,可在线阅读,更多相关《数值计算方法实验1(4页珍藏版)》请在金锄头文库上搜索。

1、1实验报告实验报告学院(系)名称:学院(系)名称: 姓名姓名学号学号专业专业班级班级实验项目实验项目方程求根课程名称课程名称数值计算方法课程代码课程代码实验时间实验时间实验地点实验地点成绩成绩批改意见:批改意见:教师签字:教师签字:实验目的:实验目的:熟悉用二分法,迭代法,牛顿法和弦截法求解非线性方程实验环境:实验环境:硬件环境:IBMPC 或兼容机软件环境:Windows 操作系统编程语言:C 语言实验内容:实验内容:一用二分法求方程x2-x-1=0 的正根,要求准确到小数点后第一位二用迭代法和牛顿法求解方程x=e-x在x=0.5 附近的一个根,要求精确到小数点后三位三用双点弦截法求方程x3

2、+3x2-x-9=0 在区间1,2内的一个实根,精确到五位有效数字实验步骤:实验步骤:一二分法的步骤1计算 f (x)在有解区间a, b端点处的函数值,f (a),f (b)2计算 f (x)在区间中点处的值 f (x0) 3判断若 f (x0) = 0,则 即是根,否则检验:(1)若 f (x0)与 f (a)异号,则知解位于区间a, x0,以x0代替b;(2)若 f (x0)与 f (a)同号,则知解位于区间x0, b,x0代替a 反复执行步骤 2、3,便可得到一系列有根区间:a, b, a1, b1, , ak, bk, ,其中每个区间都是前一个区间的一半,因此区间长度为二分法的流程图:

3、实验结果:实验结果:二 迭代法和牛顿迭代法的步骤1. 将方程 f (x) = 0 化为一个等价的方程 2. 从而构成序列 3. 如果 连续,迭代序列 收敛于 x*,则 x* 就是方程的解牛顿迭代法与迭代法的不同之处是迭代公式不同,即:迭代法的流程图:牛顿迭代法的流程图只需将牛顿迭代法中的迭代公式替换迭代法中的迭代公式即可20bax)(21ababkkk)(xx L, 2, 1, 0)(1kxxkk)(xkx), 2, 1, 0()( )(1Lkxfxfxxkk kk2三 双点弦截法的步骤将牛顿迭代法中的导数 f (xk) 改用 来代替,就可以得到迭代公式 双点弦截法流程:实验结果:实验结果:一

4、 使用二分法求解方程方程的正根位于1,2之间,输入区间和精度后,输出的值为 1.593750,精确到小数点后第一位,则答案为 1.6。二 使用迭代法和牛顿迭代法求解方程迭代法中构造迭代公式很重要,迭代公式构造好后即可开始。输入初值和精度后,迭代法输出结果为0.567277,牛顿迭代法输出结果为 0.567143,精确到小数点后第三位后,答案为 0.567。与迭代法相比,牛顿迭代法的收敛速度更快,且更加接近准确值三 双点弦截法构造迭代公式后,输入初始的两个点和精度,双点弦截法输出结果为 1.525102,精确到五位有效数字后,答案为 1.525111)()( kkkk xxxfxf)()()()

5、(1 11 kk kkk kkxxxfxfxfxx)()()()(01 011 12xxxfxfxfxx3附录(源程序及运行结果):一二分法#include#includedouble f(double x)return x*x-x-1;void main()float a=0,b=0,x=1,m,e;int k;while(f(a)*f(b)0)printf(“请输入区间 a,b 的值。以及精度 en“);scanf(“%f,%f,%f“,k=0;if(f(a)*f(b)=0)if(f(a)=0)printf(“使用二分法输出:a=%f,k=%dn“,a,k);elseprintf(“使用二

6、分法输出:b=%f,k=%dn“,b,k);elsewhile(f(a)*f(b)!=0)m=(a+b)/2;if(fabs(a-b)/20)a=m;else b=m;k=k+1;运行结果:二迭代法与牛顿迭代法#include#includedouble f(double x)return exp(-x);double f1(double x)return (x*exp(x)-1);double ff(double x)return (exp(x)+x*exp(x);void diedaifa(double x0,double e,int N)double x1;int k=1;while(k

7、!=N)x1=f(x0);if(fabs(x1-x0)=e)k+;if(k=N)printf(“迭代失败!n“);x0=x1;elseprintf(“使用迭代法输出结果:%lfn“,x1);break;void NDdiedaifa(double x0,double e,int N)int k=1;double x1;while(k!=N)if(ff(x0)=0)printf(“公式 f(x)奇异!n“);else4x1=x0-f1(x0)/ff(x0);if(fabs(x1-x0)=e)k+;if(k=N)printf(“迭代失败!n“);x0=x1;elseprintf(“使用牛顿迭代法输

8、出结果:%lfn“,x1);break;void main()double x0,e;int N;printf(“请输入初值:“);scanf(“%lf“,printf(“精度:“);scanf(“%lf“,printf(“以及判定迭代失败的最大次数 N:“);scanf(“%d“,diedaifa(x0,e,N);NDdiedaifa(x0,e,N);运行结果:四 双点弦截法#include#includedouble f(double x)return (x*x*x+3*x*x-x-9);void main()double x0,x1,x2,e;int N;int k=1;printf(“请输入初值 x0 和 x1:“);scanf(“%lf,%lf“,printf(“精度:“);scanf(“%lf“,printf(“以及判定迭代失败的最大次数 N:“);scanf(“%d“,while(k!=N)x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0);if(fabs(f(x2)=e)k+;if(k=N)printf(“迭代失败!n“);x0=x1;x1=x2;elseprintf(“使用双点弦截法输出结果:%lfn“,x2);break;运行结果:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号