fortran课程设计z

fortran课程设计z

ID:30030566

大小:293.50 KB

页数:19页

时间:2018-12-26

fortran课程设计z_第1页
fortran课程设计z_第2页
fortran课程设计z_第3页
fortran课程设计z_第4页
fortran课程设计z_第5页
资源描述:

《fortran课程设计z》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、求一元方程的根1、采用函数子程序定义一元方程;2、程序选择以下三种方法求该方程的根;METHOD=1牛顿迭代法METHOD=2二分法METHOD=3弦截法3、对于不同的近似算法分别编写子程序,精度要求10-6。一.用二分法、弦解法和牛顿迭代法求x2-6x-7=0的根。1、二分法的基本思路:(1)现任取两个值x1和x2,使得f(x1)*f(x2)<0,也就是f(x1)和f(x2)必须异号。这才能保证在[x1,x2]区间有解,即存在一个x使得f(x)=0。(2)令x=(x1+x2)/2,如果f(x)=0,就找到了这个解,计算完成。由于f(x)是一个实型数据

2、,所以在判断f(x)是否等于0时,是通过判断|f(x)|是否小于一个很小的数ε,如果是就认为f(x)=0。(3)若f(x)不等于0,判断如果f(x1)和f(x)异号,就说明解在[x1,x]区间,就以x1,x为新的取值重复步骤(2),这时用x代替否则x2,否则反之,直到找到满足条件的解为止。程序编写如下:realx1,x2,xrealbisect,funcdoprint*,"输入x1,x2的值"read*,x1,x2if(func(x1)*func(x2)<0.0)exitprint*,"不正确的输入"enddox=bisect(x1,x2)print10,

3、"x=",x10format(a,f15.7)endrealfunctionbisect(x1,x2)realx1,x2,x,f1,f2,fx19x=(x1+x2)/2.0fx=func(x)dowhile(abs(fx)>1e-6)f1=func(x1)if(f1*fx<0)thenx2=xelsex1=xendifx=(x1+x2)/2.0fx=func(x)enddobisect=xendfunctionfunc(x)realxfunc=x**2-6*x-7end二分法运行结果1、弦解法的基本思路:(1)现任取两个值x1和x2,使得f(x1)*f(x

4、2)<0。(2)做一条通过(x1,f(x1))和(x2,f(x2))两点的直线,这条直线与x轴的交点为x。可用以下公式求出X=x2-(x2-x1)*f(x2)/(f(x1)-f(x2)),代入函数求得f(x),判断|f(x)|是否小于一个很小的数ε,如果是就认为f(x)=0。19(3)否则,判断如果f(x1)和f(x)异号,就说明解在[x1,x]区间,就以x1,x为新的取值重复步骤(2),否则反之,然后以同样的办法再进一步缩小范围,直到|f(x)|<ε。程序编写如下:realx1,x2,xrealsecant,funcdoprint*,'输入x1,x2的值

5、'read*,x1,x2if(func(x1)*func(x2)<0)exitprint*,'不正确的取值'enddox=secant(x1,x2)print10,'x=',x10format(a,f15.7)endrealfunctionsecant(x1,x2)implicitnonerealx1,x2,x,f1,f2,fxrealfuncx=x2-(x2-x1)/(func(x2)-func(x1))*func(x2)fx=func(x)dowhile(abs(fx)>1e-6)f1=func(x1)if(f1*fx<0)thenx2=xelsex1

6、=xendifx=x2-(x2-x1)/(func(x2)-func(x1))*func(x2)fx=func(x)enddosecant=xendrealfunctionfunc(x)realxfunc=x**2-6*x-7end19弦解法运行结果1、牛顿迭代法基本思路:(1)现任取一个值x1(2)做一条通过(x1,f(x1))的切线,即以f'(x1)为斜率作直线,直线与x轴的交点为x2,因为f'(x1)=f(x1)/(x1-x2)x2=x1-f(x1)/f'(x1)判断|f(x2)|<ε是否成立,如果是就找到了这个解,计算完成。(3)否则,重复步骤(2

7、),以f'(x1)为斜率做一条通过(x2,f(x2))的切线,直线与x轴的交点为x3,······,直到|f(xn)|<ε,即xn为所得解。程序编写如下:realxintegermprint*,'输入初值'read*,xcallnewton(x)endsubroutinenewton(x)implicitnonerealx,x1realfunc,dfuncintegeri,mi=1x1=x-func(x)/dfunc(x)dowhile(abs(x-x1)>1e-6)print10,i,x1x=x119i=i+1x1=x-func(x)/dfunc(x)e

8、nddoprint20,'x=',x110format('i=',

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

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

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