资源描述:
《数值分析-课程设计new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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程序
2、设计53.1选单和主窗口设计5输入精度及函数的界面5主选择界面5主选择界面代码53.2模块设计6程序源代码64总结105参考文献11II1理论基础简单迭代法:首先将方程化为一个与他同解的方程(1)其中为x的连续函数。即如果数使,则也有;反之,若,则也有.任取一个初始值,代入(1)的右端,得到,将代入(1)右端得,以此类推,得到一个数列其一般表示形式为(2)(2)式即为求解非线性方程的简单迭代法,称为迭代函数,称为第k步的迭代值或简称迭代值。如果由迭代格式产生的数列收敛于,则就是方程(1)的根,既有牛顿法:用迭代法解非线性方程时,不管非线性方程的
3、形式如何,总可以构造作为方程求解的迭代函数。因为11而且在根附近越小,其局部收敛速度越快,故可令若(即不是的重根),则故可取,带入,可得.设方程的根为,且,则迭代法至少是平方收敛,并称为Newton迭代法。弦截法:由于Newton法带有的导数,使用起来不太方便。为了不求导数,可用导数的近似式代替。因为将它代入中,得11上式即为弦截法。2算法分析2.1功能分析本文运用C语言分别编制了用一般迭代法、牛顿法、弦截法求解方程的计算机程序,该程序可以控制运算精度,并可以计算任意一元3次函数。最后能够成功运行并计算出了符合要求的计算结果。2.2算法分析简单
4、迭代法:初始值输出结果NY11牛顿法:初始值输出结果NY弦截法:初始值输出结果NY113程序设计3.1选单和主窗口设计输入精度及函数的界面:主选择界面:主选择界面代码:/*-----------主界面------------*/printf("============================");printf("===请选择运算方法===");printf("===1.简单迭代法===");printf("===2.牛顿法===");printf("===3.弦截法===");printf("============
5、================");113.2模块设计程序源代码:#include"stdio.h"#include"math.h"#include"windows.h"doublee;//精度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);}doublej
6、ddd(doublex)//简单迭代法{x=(-b*x*x-c*x-d)/a;returnpow(x,1.0/3);}intfsimple(){/**简单迭代法算法*调用函数jddd()*/11printf("简单迭代法请输入一个初值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);r
9、eturn0;}intfnewt(){/**牛顿法算法*调用函数f()及fd()*/count=1;printf("牛顿法请输入一个初值x0:");scanf("%lf",&x0);x1=x0-f(x0)/fd(x0);//牛顿迭代式while((x1-x0)>e
10、
11、(x0-x1)>e){count+=1;x0=x1;x1=x0-f(x0)/fd(x0);}printf("方程的根为:%f",x1);printf("迭代的次数为:%d",count);11return0;}intfcut(){/**弦截法算法*调用函数f()*/co
12、unt=1;printf("弦截法请输入两个初值x0,x1:(用逗号隔开)");scanf("%lf,%lf",&x0,&x1);x2=x1-