二分法C语言课设报告_第1页
二分法C语言课设报告_第2页
二分法C语言课设报告_第3页
二分法C语言课设报告_第4页
二分法C语言课设报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈 阳 航 空 航 天 大 学 课程设计 学 号 _ 班 级 姓 名 指导教师 _ 2014年 9 月 日沈阳航空航天大学设计用纸沈阳航空航天大学课程设计任务书学院: 专业: 班级:学号: 题目:用二分法求方程的解一、课程设计时间2014年9月1日至9月5日,共计1周,20学时。二、课程设计内容已知方程在26之间必定有一个解。X1X2请用二分法求在26之间的近似解,误差不超过10-6。(提示:所谓“二分法”,就是取2个端点x1、x2中间值x0的方法;若中间值满足方程则求解结束,否则,此中间值将取代先前的x1或x2,形成新的x1、x2;取代端点的规则是:在f(x1)和f(x2)中,谁与f(x0)

2、同号,谁被取代。)三、课程设计要求程序质量:² 贯彻结构化的程序设计思想。² 至少有“输入区间端点x1和x2”、“开始二分法求解”、“退出”三个菜单。² 用户界面友好,功能明确,操作方便。² 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:² 课程结束后,上交课程设计说明书。课程设计说明书的写法参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩六、教师评语目 录需求分析4设计分析5技术要点8主要界面截图10总结12完整的源程序13参考文献15需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作

3、如下的需求分析。该系统是一个较典型的数学方程求解系统,其使用者被定为某学校的学生,系统应具有稳定,快速,准确的特点。经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,每一个模块对应一到两个函数。在这些函数当中,输入区间端点x1和x2、开始二分法求解、退出三个函数,分别按照题目的要求实现各种功能。主函数,退出函数及菜单函数控制程序的整体运行。1. 稳定性分析:指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。2. 快速性分析: 指系统比较快速,只要是用户的合理操作,系统都应给出合理快速的回应,而不是出现令用户感到意外的

4、系统错误,卡死等现象。3. 准确性分析:指系统比较准确,只要是用户的合理操作,系统都应给出合理正确的回应,而不是分析出错误的答案。4.主要功能分析:1. 输入区间端点x1和x2 主要实现程序最初运行时输入函数的两个端点。为后续做准备。2.开始二分法求解 实现的功能是对函数求解过程。通过不断判断2个端点x1、x2中间值x的方法;若中间值满足方程则求解结束,否则,此中间值将取代先前的x1或x2,形成新的x1、x2的过程。3.退出 实现的是学生求解晚结束时推出的过程。设计分析(1) 概述:本程序主要由一个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。在这些函数当

5、中,“输入区间端点x1和x2”、“开始二分法求解”、“退出”是程序中较为核心的部分,下面分别进行说明。1、 输入区间端点x1和x2:输入区间端点x1和x2分为两种情况,其一是端点是整数,其二是端点是小数。所以应该用float。具体如下:float calculate(float x1,float x2)float x0,y0,y1,y2;while(1)x0=(x1+x2)/2;y0=x0*x0*x0-5*x0*x0+16*x0-80;2、 开始二分法求解: 是对函数求解过程。有两种情况,其一是中间数就是解,其二是中间数通过不断判断2个端点x1、x2中间值x的方法;若中间值满足方程则求解结束,

6、否则,此中间值将取代先前的x1或x2,形成新的x1、x2的过程。所以用了一个循环表示,具体如下:x0=(x1+x2)/2;y0=x0*x0*x0-5*x0*x0+16*x0-80;if (y0=0)return x0;if(x2-x1<=1e-6)/判断误差是否超过10的-6次幂return x0;y1=x1*x1*x1-5*x1*x1+16*x1-80;if(y0*y1>0)x1=x0;else x2=x0;3、 退出结束操作,退出的过程。(2)总体设计:1、程序总体结构图(3)详细设计:技术要点1,用scanf函数输入float型数据。2,用if循环做了主函数切用了return

7、返回语句。1关于结构体的应用1、 输入区间端点x1和x2:输入区间端点x1和x2分为两种情况,其一是端点是整数,其二是端点是小数。所以应该用float。具体如下:float calculate(float x1,float x2)float x0,y0,y1,y2;while(1)x0=(x1+x2)/2;y0=x0*x0*x0-5*x0*x0+16*x0-80;2、开始二分法求解: 是对函数求解过程。有两种情况,其一是中间数就是解,其二是中间数通过不断判断2个端点x1、x2中间值x的方法;若中间值满足方程则求解结束,否则,此中间值将取代先前的x1或x2,形成新的x1、x2的过程。所以用了一个

8、循环表示,具体如下:x0=(x1+x2)/2;y0=x0*x0*x0-5*x0*x0+16*x0-80;if (y0=0)return x0;if(x2-x1<=1e-6)/判断误差是否超过10的-6次幂return x0;y1=x1*x1*x1-5*x1*x1+16*x1-80;if(y0*y1>0)x1=x0;else x2=x0;主要界面截图图1;二分法界面图2:输入边界x1,x2图3:求得解。图4:结束,退出总结 在为期一周的实习中我学会了用自己学习到得课堂知识解决实际问题,在此过程中,我同样遇到了很多问题,凭借着坚持不懈的努力及老师和同学们的帮助,才得以完成目标,在此过程

9、中所学到得经历是受益无穷的。 在刚刚接到题目的时候,一头雾水,不知道如何下手,渐渐我从不知所从找到了门路,首先,我找到了当初学习C语言时的书本和留下的笔记,因为有较扎实的C语言功底,我用比同学们快的时间进入到了编程过程。 在编程过程中,遇到的困难同样不少,第一项就是我们在课本学习时遇到的问题往往较简单,所见到的题目往往是有先例的,而在课程设计过程中,我们遇到的题目要比我们在课堂上学习的难很多,这是我们没能预料的,而且与课程设计不同的是,课本上的注重于理论,而当运用到实际上时,便一头雾水。 最后我选择了一种比较适合我的编程模式,首先我画出了我的编程图,将我所要的分析的问题一一列举出来,这样,问题

10、便清晰了很多,然后开始一个一个的解决问题,将每个问题的程序记录出来,在将一个个问题串联起来,这样,一个程序的雏形便出现了。 当程序在实际运行中时,果然出现了很多问题,然后我通过一天的修改,也去图书馆翻阅了很多的书籍,一个问题,一份解决的的过程下,一份完整的程序终于诞生了。完整的源程序#include<stdio.h>#include<math.h>#include<stdlib.h>float jisuan(float x1,float x2)float x0,y0,y1,y2;while(1)x0=(x1+x2)/2;y0=x0*x0*x0-5*x0*x0

11、+16*x0-80;if (y0=0)return x0;if(x2-x1<=1e-6)/判断误差是否超过10的-6次幂return x0;y1=x1*x1*x1-5*x1*x1+16*x1-80;if(y0*y1>0)x1=x0;else x2=x0;void main()float x1,x2;int a;printf("*n");printf(" 1.输入区间端点x1和x2n");printf(" 2.开始二分法求解n");printf(" 3.退出n");printf("*n");while(1)printf("请输入操作序号:");scanf("%d",&a);switch(a)case 1:printf("请输入x1和x2:");scanf ("%f,%f",&x1,&x2);break;case 2:printf("解为%fn",j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论