# 软工大作业 **Repository Path**: pkucrj/soft-work ## Basic Information - **Project Name**: 软工大作业 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-01 - **Last Updated**: 2022-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用户使用手册 - [目录](#用户使用手册) * [程序主界面](#程序主界面) * [功能介绍](#功能介绍) + [添加函数](#添加函数) + [对函数的操作](#对函数的操作) + [管理函数](#管理函数) + [保存函数图像](#保存函数图像) + [积分](#积分) + [求导](#求导) + [求根与函数交点](#求根与函数交点) + [多项式拟合](#多项式拟合) ## 程序主界面 打开软件后进入的主界面如下图所示。 ![图形计算器](https://s2.loli.net/2022/01/17/GzoBuQ1pqhyAWs6.png) 界面的主体部分为函数图像绘制与展示部分,其上方的菜单栏中有“文件”、“功能”、“管理”和“帮助”选项。 - 文件:其内有保存函数、退出应用程序子功能; - 功能:其内有添加函数、积分、求导等子功能,是程序功能的主体部分; - 管理:用于管理已添加的函数 - 帮助:其内有软件使用方法、开发团队信息。 用户添加一个或多个函数后,主界面将即时更新并绘出,效果如下图所示。(所添加的函数为:x,sin(x)/x)。 ![图形计算器](https://s2.loli.net/2022/01/17/NBitcFG3pEqueyO.png) 用户可以通过缩放、漫游和改变窗口大小以等操作来调整函数图像的绘制部位。 - 缩放:滚动鼠标滑轮以实现缩放功能; - 漫游:鼠标左键/右键点击屏幕不松手,拖动鼠标,图像将随光标移动;松开鼠标以停止拖动。 - 改变窗口大小:将鼠标移至窗体边界以改变窗口大小,或最大化窗体。 ## 功能介绍 ### 添加函数 ![img](https://s2.loli.net/2022/01/17/khIaqTvSxLUru54.png) 点击主页面“功能”——“添加函数”,用键盘键入函数文本即可,自变量只能使用x或X,常数有圆周率(PI)、自然常数(e),支持常用的运算,包括加法(+)、减法(-)、乘法(*)、除法(/)、负号(-)、指数(^)、三角函数(sin, cos, tan, ctg)、开方(sqrt)、对数(log)、绝对值(abs)、阶乘(!),并且可以用圆括号“(”和“)”调整优先级。注意: - 对数只能以10为底数,其它底数的对数可以用换底公式变为底数为10的情况。 - 不要漏掉必要的符号,如5x会报错,5*x才会正常执行。 ### 对函数的操作 添加函数后会在主页面绘制相应图像,颜色随机,支持鼠标左键拖动和鼠标滚轮放大缩小等操作。 ### 管理函数 ![img](https://s2.loli.net/2022/01/17/9nOLHvS2kcKNMwr.png) 点击主页面“管理”,在管理函数界面可以修改函数(修改表达式)、删除函数以及更改函数颜色。函数顺序为添加顺序,从1开始编号。 ### 保存函数图像 点击主页面“文件”——“保存函数图像”即可,软件将弹出文件保存框,用户选择相应的路径以保存。保存的内容为当前主页面显示范围内的图像,暂只支持bmp格式。 ### 积分 ![img](https://s2.loli.net/2022/01/17/YqIXx4TPgMC1DSB.png) 点击主页面“功能”——“积分”,可以输出自己的积分函数,规则同“添加函数”过程,也可以选择已经添加的函数(选择后需要清除选择才能重新输入自己的积分函数)。 确定函数后需要输入积分上限和积分下限,这里只能精确到小数点后三位,范围不限,需要注意的是函数必须在整个闭区间内均有定义,不支持瑕积分,否则会弹出错误提示。 最后需要确定误差限度(10的负指数),默认为3,范围为0-12,即默认精度为0.001,最多精确到10-12。 对于自己输入的积分函数,还可以选择是否将其添加到主页面中,默认为添加,若不想添加,取消勾选即可。对于选择已有函数的情况,不再重复添加,用户无法勾选。 注意: - 积分采用复合Simpson方法,在默认的循环次数内,有可能达不到给定的精度,此时会给出弹窗提示,并说明当前达到的精度,如下图所示。 ![img](https://s2.loli.net/2022/01/17/tNG9z3uXfjHCqlM.png) ### 求导 ![img](https://s2.loli.net/2022/01/17/BvucCUYEro5lxST.png) 点击主页面“功能”——“求导”,同积分过程一样,可以输入自己的函数,也可以选择已有函数,最后可以选择是否将函数添加到主页面。 对于微分过程而言,只需要输入自变量取值(允许精确到小数点后三位小数)即可,这是因为求导采用的是利用复合函数求导公式进行递归的方法,最终输出结果是程序能够给出的最大精度。 需要注意的是,程序不支持以下几种情况的求导,并会给出相应的弹窗提示: - 函数在x处无定义(如除数为0,对负数求对数等) - 存在![img](https://s2.loli.net/2022/01/17/qQ8nkNlf5c7ZmD3.png)形式的结构,即底数和指数都含有自变量 - 存在![img](https://s2.loli.net/2022/01/17/O9anxzWHhLXfw8I.png)形式的结构,即对含有自变量的部分求阶乘 - 导数值不存在(如导数值为无穷大,在绝对值函数折点处求导等) ### 求根与函数交点 ![img](https://s2.loli.net/2022/01/17/ljFus7JrtTpRVae.png) 点击主页面“功能”——“求根与函数交点”,该界面为f(x)=g(x)的形式,求两个函数交点,可以自己输入,也可以选择已有函数,其中g(x)默认为0,此时即为求f(x)函数的零点。注意: - 函数求根算法为牛顿下山法,是一个迭代过程,迭代初始值需要用户指定,输入精度为小数点后三位。 - 函数f(x)和g(x)都需要在初始值处有定义,且导数值不能为0,否则会给出相应的错误提示。 - 用户可以指定误差限度(10的负指数),同积分过程一样,默认值为3,范围为0-12。 ### 多项式拟合 ![多项式拟合](https://s2.loli.net/2022/01/17/DWAyUc4Jj9uqQpb.png) 点击主页面“功能”——“多项式拟合”,用户添加拟合点文件,并指定多项式次数及系数精度,若各项均符合要求,点击“计算”,即可得到结果。结果界面如下图所示。点击“查看图像”,可查看拟合点的图像显示以及多项式函数图像。 ![img](https://s2.loli.net/2022/01/17/DEAQk53Jrm4hlMY.png) 注意: - 拟合点文件为txt文件,每行有2个数,对应于一个点的坐标信息。其中,第一个数为点的横坐标,第二个点为纵坐标,两个数之间以空格分隔。不同点以回车分隔。如: ``` 1 2 2 5 3 7 4 8 5 8 6 10 7 11 8 13 ``` - 支持的拟合点数最大为1000; - 若文件格式不符上述规范或内容出现非法字符,程序将无法计算,并给用户相应的提示信息; - 在实际应用中,由于高次多项式会有Runge现象,因此拟合多项式的次数通常不会选得过高。因此,在程序中,我们要去用户输入的拟合多项式的次数不超过10; - 用户可以指定系数误差限度(10的负指数),默认值为8,范围为0-12,其余要求同前。若精度过低,拟合效果将变差,和预期效果可能存在较大偏离。