数值计算非线性方程求根.docx

上传人:PIYPING 文档编号:11456381 上传时间:2021-08-06 格式:DOCX 页数:4 大小:62.56KB
返回 下载 相关 举报
数值计算非线性方程求根.docx_第1页
第1页 / 共4页
数值计算非线性方程求根.docx_第2页
第2页 / 共4页
数值计算非线性方程求根.docx_第3页
第3页 / 共4页
数值计算非线性方程求根.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《数值计算非线性方程求根.docx》由会员分享,可在线阅读,更多相关《数值计算非线性方程求根.docx(4页珍藏版)》请在三一文库上搜索。

1、实验报告一、 实验目的学习非线性方程求根的两种方法,并培养用计算机进行科学计算的能力。求解方程 x+10x-2=0 的近似根。二、实验方法(要求用自己的语言描述算法)(1)、在区间 0,1 上用二分法记 fx=x+10x-2=0运用递归的方式,进行运算。递归过程中,输入的两个参数为x的取值范围 n、m ,递归的退出条件为 n-m110-3 。每次递归,需要判断 fnfn+m20是否成立,若成立则将值 n、n+m2 作为下一步的输入参数,否则传入参数为 n+m2、m。(2)、取初值 x_0=0 并用迭代过程 xk+1=2-xk10 (k=1,2,3,) 记 gx=2-xk10 仍旧使用递归,传入

2、参数为 x 的值 n ,递归的结束条件为 gn-n1210-3 。每次递归,若不满足结束条件,则将 gn 作为下一步递归的参数。三、实验代码#include #include #include using namespace std;ofstream fou(output.txt);/定义一个只写文件double f(double x) return exp(x) + 10 * x - 2;/求解f的值double g(double x) return (2 - exp(x) / 10;/求解g的值double Find(double n, double m,int &time) time+;

3、/递归次数+1 fou 操作的次数为: time endl; fou 二分法中间值为: (n + m) / 2 endl;/将中间过程的值导入output.txt中 if (fabs(n - m) = 0.001)/判断是否递归结束 return (n + m) / 2;/返回需要的值 if (f(n)*f(n + m) / 2) = 0)/判断值是否在此区间 return Find(n, (n + m) / 2,time);/递归查找 else return Find(n + m) / 2, m,time);/递归查找double Fou(double n, int &time) time+

4、;/递归次数+1 fou 操作的次数为: time endl; fou 迭代法获得的结果为: g(n) endl;/将中间过程的值导入output.txt中 if (fabs(g(n) - n) = 0.0005)/判断是否递归结束 return g(n);/返回所得值 else return Fou(g(n), time);int main() double num;/初始定义输出值 int T1 = 0;/递归次数 int T2 = 0;/递归次数 num = Find(0,1,T1);/调用递归进行运算 cout 二分法所得结果为: num endl;/输出二分法的结果 cout二分法递

5、归次数为: T1 endl;/输出二分法的递归次数 cout endl endl; fou endl endl; num = Fou(0,T2);/调用递归进行运算 cout 迭代法所得结果: num endl;/输出迭代法的结果 cout迭代法递归次数为: T2 endl;/输出迭代法的递归次数 system(pause);/按任意键继续四、实验结果及其讨论由上述结果可画出下图: 二分法: 迭代法:讨论:相较于二分法,迭代法所使用的次数更少,但精准度较二分法来说较小。数据图 1数据图 2五、总结 通过这次实验,初步掌握了二分法以及迭代法在代码上的实现与应用。进一步提高了自我运用计算机进行科学计算的能力,有极大的收获。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1