数值分析-课程设计

数值分析-课程设计

ID:1291899

大小:224.00 KB

页数:15页

时间:2017-11-09

数值分析-课程设计_第1页
数值分析-课程设计_第2页
数值分析-课程设计_第3页
数值分析-课程设计_第4页
数值分析-课程设计_第5页
资源描述:

《数值分析-课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、郑州轻工业学院《数值分析》课程设计报告题目:非线性方程求解姓名:赵尉尉院(系):数学与信息科学系专业班级:信科10-01学号:541010010155指导教师:汪远征时间:2013年1月07日至2013年1月14日摘要本文运用C语言分别编制了用一般迭代法、牛顿法、弦截法求解方程的计算机程序,该程序可以控制运算精度,并可以计算任意一元3次函数。成功运行并计算出了符合要求的计算结果,并就计算结果分析它们的特点。II目录摘要I目录II1理论基础1简单迭代法1牛顿法1弦截法22算法分析32.1功能分析32.2算法分析3简单迭代法3牛顿法4弦截法43程序设计53.1选单和主窗口设计5输入精度及函数的

2、界面5主选择界面5主选择界面代码53.2模块设计6程序源代码64总结105参考文献11II1理论基础简单迭代法:首先将方程化为一个与他同解的方程(1)其中为x的连续函数。即如果数使,则也有;反之,若,则也有.任取一个初始值,代入(1)的右端,得到,将代入(1)右端得,以此类推,得到一个数列其一般表示形式为(2)(2)式即为求解非线性方程的简单迭代法,称为迭代函数,称为第k步的迭代值或简称迭代值。如果由迭代格式产生的数列收敛于,则就是方程(1)的根,既有牛顿法:用迭代法解非线性方程时,不管非线性方程的形式如何,总可以构造作为方程求解的迭代函数。因为11而且在根附近越小,其局部收敛速度越快,故

3、可令若(即不是的重根),则故可取,带入,可得.设方程的根为,且,则迭代法至少是平方收敛,并称为Newton迭代法。弦截法:由于Newton法带有的导数,使用起来不太方便。为了不求导数,可用导数的近似式代替。因为将它代入中,得11上式即为弦截法。2算法分析2.1功能分析本文运用C语言分别编制了用一般迭代法、牛顿法、弦截法求解方程的计算机程序,该程序可以控制运算精度,并可以计算任意一元3次函数。最后能够成功运行并计算出了符合要求的计算结果。2.2算法分析简单迭代法:初始值输出结果NY11牛顿法:初始值输出结果NY弦截法:初始值输出结果NY113程序设计3.1选单和主窗口设计输入精度及函数的界面

4、:主选择界面:主选择界面代码:/*-----------主界面------------*/printf("============================");printf("===请选择运算方法===");printf("===1.简单迭代法===");printf("===2.牛顿法===");printf("===3.弦截法===");printf("============================");113.2模块设计程序源代码:#include"stdio.h"#include"math.h"#include"windows.h"doub

5、lee;//精度doublex0,x1,x2;doublea,b,c,d;//函数ax^3+bx^2+cx+d=0intcount=1;doublef(doublex)//函数f(x){return(a*x*x*x+b*x*x+c*x+d);}doublefd(doublex)//函数f(x)的微分{return(3*a*x*x+2*b*x+c);}doublejddd(doublex)//简单迭代法{x=(-b*x*x-c*x-d)/a;returnpow(x,1.0/3);}intfsimple(){/**简单迭代法算法*调用函数jddd()*/11printf("简单迭代法请输入

6、一个初值x0:");scanf("%lf",&x0);x1=jddd(x0);//简单迭代的等价迭代式while((x1-x0)>e

7、

8、(x0-x1)>e){count+=1;x0=x1;x1=jddd(x0);}printf("方程的根为:%f",x1);printf("迭代的次数为:%d",count);return0;}intfnewt(){/**牛顿法算法*调用函数f()及fd()*/count=1;printf("牛顿法请输入一个初值x0:");scanf("%lf",&x0);x1=x0-f(x0)/fd(x0);//牛顿迭代式while((x1-x0)>e

9、

10、

11、(x0-x1)>e){count+=1;x0=x1;x1=x0-f(x0)/fd(x0);}printf("方程的根为:%f",x1);printf("迭代的次数为:%d",count);11return0;}intfcut(){/**弦截法算法*调用函数f()*/count=1;printf("弦截法请输入两个初值x0,x1:(用逗号隔开)");scanf("%lf,%lf",&x0,&x1);x2=x1-

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

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

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