数值计算方法实验1

数值计算方法实验1

ID:13694107

大小:374.00 KB

页数:4页

时间:2018-07-23

数值计算方法实验1_第1页
数值计算方法实验1_第2页
数值计算方法实验1_第3页
数值计算方法实验1_第4页
资源描述:

《数值计算方法实验1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

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],…,其中每个区间都是前一个区间的一半,因此区间长度为二分法的流程图:实验结果:二.迭代法和牛顿迭代法的步骤1.将方程

3、f(x)=0化为一个等价的方程2.从而构成序列3.如果连续,迭代序列{}收敛于x*,则x*就是方程的解牛顿迭代法与迭代法的不同之处是迭代公式不同,即:迭代法的流程图:牛顿迭代法的流程图只需将牛顿迭代法中的迭代公式替换迭代法中的迭代公式即可4二.双点弦截法的步骤将牛顿迭代法中的导数f’(xk)改用来代替,就可以得到迭代公式双点弦截法流程:实验结果:一.使用二分法求解方程方程的正根位于[1,2]之间,输入区间和精度后,输出的值为1.593750,精确到小数点后第一位,则答案为1.6。二.使用迭代法和牛顿迭代法求解方程迭代法中构造迭代

4、公式很重要,迭代公式构造好后即可开始。输入初值和精度后,迭代法输出结果为0.567277,牛顿迭代法输出结果为0.567143,精确到小数点后第三位后,答案为0.567。与迭代法相比,牛顿迭代法的收敛速度更快,且更加接近准确值三.双点弦截法构造迭代公式后,输入初始的两个点和精度,双点弦截法输出结果为1.525102,精确到五位有效数字后,答案为1.52514附录(源程序及运行结果):一.二分法#include#includedoublef(doublex){returnx*x-x-1;}void

5、main(){floata=0,b=0,x=1,m,e;intk;while(f(a)*f(b)>0){printf("请输入区间a,b的值。以及精度e");scanf("%f,%f,%f",&a,&b,&e);}k=0;if(f(a)*f(b)==0){if(f(a)==0)printf("使用二分法输出:a=%f,k=%d",a,k);elseprintf("使用二分法输出:b=%f,k=%d",b,k);}else{while(f(a)*f(b)!=0){m=(a+b)/2;if(fabs(a-b)/2

6、printf("使用二分法输出:m=%f,k=%d",m,k);break;}else{if(f(a)*f(m)>0)a=m;elseb=m;k=k+1;}}}}运行结果:二.迭代法与牛顿迭代法#include#includedoublef(doublex){returnexp(-x);}doublef1(doublex){return(x*exp(x)-1);}doubleff(doublex){return(exp(x)+x*exp(x));}voiddiedaifa(doublex0,

7、doublee,intN){doublex1;intk=1;while(k!=N){x1=f(x0);if(fabs(x1-x0)>=e){k++;if(k==N)printf("迭代失败!");x0=x1;}else{printf("使用迭代法输出结果:%lf",x1);break;}}}voidNDdiedaifa(doublex0,doublee,intN){intk=1;doublex1;while(k!=N){if(ff(x0)==0)printf("公式f(x)奇异!");else{4x1=x0-f1(x

8、0)/ff(x0);if(fabs(x1-x0)>=e){k++;if(k==N)printf("迭代失败!");x0=x1;}else{printf("使用牛顿迭代法输出结果:%lf",x1);break;}}}}voidmain(){doublex0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。