ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:278.48KB ,
资源ID:11694883      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11694883.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(fortran95作业答案.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

fortran95作业答案.docx

1、fortran95作业答案FORTRAN90程序设计麒麟火小组 作业:一求一元方程的根1.采用语句函数或函数子程序定义一元方程;2.程序采用以下多种方法求方程的根;牛顿迭代法,二分法,迭代法 程序利用控制变量(如nmethod)来选择计算方法。Program Frist !一个可以选择子程序的主程序 integer xuhao print*,请选择方法:1:二分法。2:迭代法。3:牛顿迭代法。 read*,xuhao if(xuhao=1)then !将3种方法放在不同的子程序中,并用选择结构进行选择。 call bisection() endif if(xuhao=2)then call d

2、iedai() endif if(xuhao=3)then call niudun() endif end subroutine bisection() !二分法的子程序 real x1,x2,x real bisect,func1 !对要调用的子程序作说明 do print*,输入x1,x2的值: read*,x1,x2 if(func1(x1)*func1(x2)1e-6) f1=func1(x1) if(f1*fx1e-6.and.i=m) print 10,i,x1 x=x1 i=i+1 x1=func2(x) enddo if(i1e-6) print 10,i,x1 x=x1 i=

3、i+1 x1=x-func3(x)/dfunc3(x) enddo print 20,x=,x110 format(i=,i4,6x,x=,f15.7)20 format(a,f15.7) end real function func3(x) !牛顿迭代法一元方程的函数子程序 real x func3=x*3-2*x*2+7*x+4 end real function dfunc3(x) !牛顿迭代法一元方程的导数的子程序 real x dfunc3=3*x*2-4*x+7 end 二求解线性方程组用高斯消去法解线性方程组Ax=B的解,其中A为N*N系数矩阵,x为解向量,B为方程组右端n维列向

4、量。要求程序能够求解任意多个未知数的方程组,并附算例。program second !一个可以选择未知数数量的求线性方程的小程序 real,allocatable:a(:,:),b(:),c(:) print*,输入未知数个数n: read*,n allocate(a(n,n) !为数组分配空间 allocate(b(n) allocate(c(n) print*,输出系数矩阵a: call input(a,n) !引入输入子程序 print*,输入等值矩阵b: read*,b print*,联立方程组: call output(a,b,n) !引入输出子程序 call gauss_jorda

5、n(a,b,c,n) !引入乔丹法子程序 print*,求解: do i=1,n print 10,i,c(i) end do10 format(x,i1,=,f8.4) deallocate(a) !解除数组单元的分配 deallocate(b) deallocate(c) end subroutine input(a,n) !定义输入子程序 real a(n,n) do i=1,n read*,(a(i,j),j=1,n) enddo end subroutine gauss_jordan(a,b,c,n) !定义乔丹法子程序 dimension a(n,n),b(n),c(n) call

6、 up(a,b,n) !乔丹法中包含的两个子程序 call low(a,b,n) forall(i=1:n) c(i)=b(i)/a(i,i) endforall end subroutine output(a,b,n) !定义输出子程序 real a(n,n),b(n) do i=1,n print 10,a(i,1),i do j=2,n if(a(i,j)0)then print 20,a(i,j),j else print 30,abs(a(i,j),j endif enddo print 40,b(i) enddo10 format(f5.2,x,i1)20 format(+,f5.

7、2,x,i1)30 format(-,f5.2,x,i1)40 format(=,f8.4) end subroutine up(a,b,n) real a(n,n),b(n) do i=1,n-1 do j=i+1,n p=a(j,i)/a(i,i) a(j,i:n)=a(j,i:n)-a(i,i:n)*p b(j)=b(j)-b(i)*p enddo enddo end subroutine low(a,b,n) real a(n,n),b(n) do i=n,2,-1 do j=i-1,1,-1 p=a(j,i)/a(i,i) a(j,1:i)=a(j,1:i)-a(i,1:i)*p b

8、(j)=b(j)-b(i)*p enddo enddo end 三编写班级成绩考评程序1.采用数据文件输入某班级30名同学的学号及五门课程的成绩;2.求出每名同学的总分、统计各门成绩的平均分;3.统计各门课程中高于和低于平均分的人数;4.按总分高低排序,利用文件输出名次、学号和分数;5.分数查询输入某一学号,输出该生的名次、各门课程的成绩和总分。parameter(n=30) type student_score !定义派生类型student record integer num real chin,math,eng,phy,che,sum integer rank end type type

9、 (student_score) a(n) !结构体数组aopen(1,file=stu1.dat) do i=1,n read(1,1) a(n) !读入30个人的信息 end do1 format(2x,i6,5(3x,f4.1) close(1) open(2,file=stu2.dat) data ave1,ave2,ave3,ave4,ave5/5*0.0/ do j=1,0 !每名同学成绩的求和以及各门成绩的平均分 a(j)%sum=(a(j)%chin+a(j)%math+a(j)%eng+a(j)%phy+a(j)%che) ave1=ave1+a(j)%chin/30.0 a

10、ve2=ave2+a(j)%math/30.0 ave3=ave3+a(j)%eng/30.0 ave4=ave4+a(j)%phy/30.0 ave5=ave5+a(j)%che/30.0 enddo p=0;q=0 !输出每门成绩的平均分do i=1,nif(a(i)%chin=ave1)thenp=p+1elseq=q+1endifenddoprint*,高于语文平均分的人数:,pprint*,低于语文平均分的人数:,qp=0;q=0do i=1,nif(a(i)%math=ave2)thenp=p+1elseq=q+1endifenddoprint*,高于数学平均分的人数:,pprin

11、t*,低于数学平均分的人数:,qp=0;q=0do i=1,nif(a(i)%eng=ave3)thenp=p+1elseq=q+1endifenddoprint*,高于英语平均分的人数:,pprint*,低于英语平均分的人数:,qp=0;q=0do i=1,nif(a(i)%phy=ave4)thenp=p+1elseq=q+1endifenddoprint*,高于物理平均分的人数:,pprint*,低于物理平均分的人数:,qp=0;q=0do i=1,nif(a(i)%che=ave5)thenp=p+1elseq=q+1endifenddoprint*,高于化学平均分的人数:,pprin

12、t*,低于化学平均分的人数:,q do k=1,n-1 do m=1,n-k if(a(m)%suma(m+1)%sum)then t=a(m)%sum a(m)%sum=a(m+1)%sum a(m+1)%sum=t endif enddo a(m+1)%rank=0 a(m+1)%rank=a(m+1)%rank+1 enddo do i=1,n print*,学号 总分 名次 print 10,a(i)%num,a(i)%sum,a(i)%rank enddo10 format(2x,i6,3x,f4.1,3x,i2) print*,enter a students number: re

13、ad*,s !输出符合条件的人的信息 do k=1,n if(s=a(k)%num) then print*, 学号 语文 数学 英语 物理 化学 总分 名次 print 100,a(k) exit endif end do if(kn)print*,can not find the student!100 format (2x,i6,6(3x,f4.1),3x,i2)close(2)end 编译通过,但运行发生错误,可能是环境自身的错误吧。四求定积分1.采用函数子程序定义f(X);2. 程序可选择以下多种方法定积分 矩形法、梯形法、辛普生法3.对于不同的算法分别编写子程序,选择调用。prog

14、ram forth !一个可以选择的方法的主程序 integer shuzhi print*,请选择您需要的方法:1:矩形法,2:梯形法,3:辛普生法。 read*,shuzhi if(shuzhi=1)then call juxing() elseif(shuzhi=2)then call tixing() elseif(shuzhi=3)then call xinpusheng() endif end subroutine juxing() !矩形法的子程序 real a,b,s integer n real yrectangle print*,欢迎使用矩形法,请输入a,b和n的值 rea

15、d*,a,b,n s=rectangle(a,b,n) !调用矩形法求解的函数 print 10,a,b,n print 20,s !输出计算结果10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4)20 format(s,f15.8) end real function rectangle(a,b,n) !矩形法求解函数 implicit none real x,a,b,h,s integer i,n real func1 x=a h=(b-a)/n s=0 do i=1,n s=s+func1(x)*h x=x+h end do rectangle=s end rea

16、l function func1(x) !矩形法的积分函数 real x func1=1+exp(x) end subroutine tixing() !梯形法的子程序。 real a,b,s integer n real trapezia !对要调用的子程序作说明 print*,感谢您使用梯形法,请输入a,b和n的值 read*,a,b,n s=trapezia(a,b,n) !调用梯形法求解的函数 print 10,a,b,n print 20,s !输出计算结果 10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4) 20 format(s,f15.8) end r

17、eal function trapezia(a,b,n) !梯形法求解函数 implicit none real x,a,b,h,s integer i,n real func2 x=a h=(b-a)/n s=0 do i=1,n-1 s=s+2*func2(x+i*n) end do trapezia =(s+func2(a)+func2(b)*h/2.0 end real function func2(x) !梯形法积分函数 real x func2=1+exp(x) end subroutine xinpusheng() real a,b,s integer n real sinpso

18、n !对要调用的函数子程序作说明 print*,辛普生法很不错哦,请输入a,b和n的值 read*,a,b,n s=sinpson(a,b,n) !调用辛普生法求解的函数 print 10,a,b,n print 20,s !输出计算结果 10 format(a=,f5.2,3x,b=,f5.2,3x,n=,i4) 20 format(s,f15.8) end real function sinpson(a,b,n) !辛普生法求解函数 implicit none real a,b,h,f2,f4,x integer i,n real func3 h=(b-a)/(2.0*n) x=a+h f2=0 f4=func3(x) do i=1,n-1 x=x+h f2=f2+func3(x) x=x+h f4=f4+func3(x) enddo sinpson=(func3(a)+func3(b)+4.0*f4+2.0*f2)*h/3.0 end real function func3(x) !辛普生法的积分函数 real x func3=1+exp(x)end

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1