兰州交通大学fortran教学规划.doc
《兰州交通大学fortran教学规划.doc》由会员分享,可在线阅读,更多相关《兰州交通大学fortran教学规划.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,目录1求一元方程的根和求定积分11.1求一元方程的根1二分法11.1.1弦截法31.1.2牛顿迭代法51.2求定积分71.2.1矩形法71.2.2梯形法91.2.3辛普生法:112求解线性方程组133编写程序完成链表的建立、插入、查找和删除等操作161求一元方程的根和求定积分1.1 求一元方程的根作业要求1、采用函数子程序定义一元方程;2、程序选择以下三种方法求该方程的根;METHOD = 1 牛顿迭代法METHOD = 2 二分法1 METHOD = 3 弦截法3、对于不同的近似算法分别编写子程序,精度要求10-6。本题用二分法、弦解法和牛顿迭代法求x3-2x2+7x+4=0的根来编写程序
2、求解。二分法二分法基本思路:现任取两个值x1和x2,使得f(x1)* f(x2)0,也就是f(x1)和f(x2)必须异号。这才能保证在x1,x2区间有解,即存在一个x使得f(x)=0。令x=(x1+x2)/2,如果f(x)=0,就找到了这个解,计算完成。由于f(x)是一个实型数据,所以在判断f(x)是否等于0时,是通过判断f(x)是否小于一个很小的数,如果是就认为f(x)=0。若f(x)不等于0,判断如果f(x1)和f(x)异号,就说明解在x1,x区间,就以x1,x为新的取值重复步骤(2),这时用x代替否则x2,否则反之,直到找到满足条件的解为止。程序编写如下:program lt12_1re
3、al x1 ,x2,xreal bisect,func !对要调用的子程序作说明do !输入x1和x2直到f(x1)和f(x2)异号为止 print*,输入x1,x2的值: read*,x1,x2 if(func(x1)*func(x2)1e-6) f1=func(x1)if(f1*fx0) then x2=x else x1=xend ifx=(x1+x2)/2.0fx=func(x)end dobisect=xendfunction func(x) !需要求解的函数real xfunc=x*3-2*x*2+7*x+4end运行结果:1.1.1 弦截法弦截法的基本思路:现任取两个值x1和x2
4、,使得f(x1)* f(x2)0。(1)做一条通过(x1,f(x1)和(x2,f(x2)两点的直线,这条直线与x轴的交点为x。可用以下公式求出 X=x2-(x2- x1)* f(x2)/(f(x1)- f(x2),(2)代入函数求得f(x),判断f(x)是否小于一个很小的数,如果是就认为f(x)=0。(3)否则,判断如果f(x1)和f(x)异号,就说明解在x1,x区间,就以x1,x为新的取值重复步骤(2),否则反之,然后以同样的办法再进一步缩小范围,直到f(x)。程序编写如下:real x1,x2,xreal secant,func !对要调用的子程序作说明do !输入x1和x2直到f(x1)
5、和f(x2)异号为止 print*,输入x1,x2的值read*,x1,x2if(func(x1)*func(x2)1e-6) f1=func(x1) if(f1*fx0)then x2=x else x1=x endif x=x2-(x2-x1)/(func(x2)-func(x1)*func(x2) fx=func(x)enddosecant=xendreal function func(x) !需要求解的函数real xfunc= x*3-2*x*2+7*x+4end运行结果:1.1.2 牛顿迭代法牛顿迭代法基本思路(1)现任取一个值x1(2)做一条通过(x1,f(x1)的切线,即以f(
6、x1)为斜率作直线,直线与x轴的交点为x2,因为f(x1)= f(x1)/(x1- x2) x2=x1- f(x1)/ f(x1) 判断f(x2)是否成立,如果是就找到了这个解,计算完成。(3)否则,重复步骤(2),以f(x1)为斜率做一条通过(x2,f(x2)的切线,直线与x轴的交点为x3,直到f(xn)1e-6)print 10,i,x1x=x1i=i+1x1=x-func(x)/dfunc(x)enddoprint 20,x=,x1 !输出计算结果10 format(i=,i4,6x,x=,f15.7)20 format(a,f15.7)Endreal function func(x)
7、!迭代函数 real x func= x*3-2*x*2+7*x+4end real function dfunc(x) real x dfunc=3*x*2-4*x+7end运行结果:1.2 求定积分作业要求:1、采用函数子程序定义函数f(X);2、程序选择以下三种方法求定积分: 矩形法、梯形法、辛普生法3、对于不同的算法分别编写子程序,选择调用,比较不同方法求解的精度。本题我们用 来讨论矩形法、梯形法、辛普生法求定积分的方法。1.2.1 矩形法矩形法基本思路:用小矩形面积代替小曲边梯形,矩形面积的求解公式为底高。将a,b区间分为n个区间,令h=(b-a)/n。第1个矩形面积:底=h,高=
8、f(a),也可以用f(a+h)为高,S1=hf(a)第i个矩形面积:底=h,高= f(a+(i-1)h),也可以用f(a+ih)为高,Si=hf(a+(i-1)h)程序编写如下:real a,b,sinteger nreal yrectangleprint*,输入a,b和n的值read*,a,b,ns=rectangle(a,b,n)print 10,a,b,nprint 20,s10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format(s=,f15.8)Endreal function rectangle(a,b,n)implicit nonereal
9、x,a,b,h,sinteger i,nreal funcx=ah=(b-a)/ns=0do i=1,n s=s+func(x)*h x=x+henddorectangle=sendreal function func(x)real xfunc=1+sin(x)end运行结果:n=10时的输出结果n=100时的输出结果n=1000时的输出结果1.2.2 梯形法梯形法基本思路同上,用小梯形面积代替小曲边梯形第1个梯形面积:底=h,高= f(a),也可以用f(a+h)为高,S1=hf(a) 第i个梯形面积:底=h,高= f(a+(i-1)h),也可以用f(a+ih)为高,Si=hf(a+(i-1)
10、h)程序设计如下real a,b,sinteger nreal trapeziaprint*,输入a,b和n的值read*,a,b,ns=trapezia(a,b,n)print 10,a,b,nprint 20,s10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format(s=,f15.8)endreal function trapezia(a,b,n)implicit nonereal x,a,b,h,sinteger i,nreal funcx=ah=(b-a)/ns=0do i=1,n s=s+(func(x+(i-1)*h)+func(x+i*h)
11、*h/2.0enddotrapezia=sendreal function func(x)real xfunc=1+sin(x)end运行结果:n=10时的输出结果 n=100时的输出结果 n=1000时的输出结果1.2.3 辛普生法:程序编写如下:real a,b,sinteger nreal sinpsonprint*,输入a,b和n的值read*,a,b,ns=sinpson(a,b,n)print 10,a,b,nprint 20,s10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format(s=,f15.8)endreal function sin
12、pson(a,b,n)implicit nonereal a,b,h,f2,f4,xinteger i,nreal funch=(b-a)/(2.0*n)x=a+hf2=0f4=func(x)do i=1,n-1 x=x+h f2=f2+func(x) x=x+h f4=f4+func(x)enddosinpson=(func(a)+func(b)+4.0*f4+2.0*f2)*h/3.0endreal function func(x)real xfunc=1+sin(x)endn=10时的输出结果n=100时的输出结果n=1000时的输出结果通过对数据分析我们可以发现,辛普生法最为准确,其次
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 兰州 交通大学 fortran 教学 规划
限制150内