FORTRAN实验报告2016LI
数值分析2016上机实验报告

序言数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。
是科学与工程计算(科学计算)的理论支持。
许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。
目前,试验、理论、计算已成为人类进行科学活动的三大方法。
数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。
现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。
MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。
目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
本实验报告使用了MATLAB软件。
对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。
并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。
目录序言 (1)问题一非线性方程数值解法 (3)1.1 计算题目 (3)1.2 迭代法分析 (3)1.3计算结果分析及结论 (4)问题二追赶法解三对角矩阵 (5)2.1 问题 (5)2.2 问题分析(追赶法) (6)2.3 计算结果 (7)问题三函数拟合 (7)3.1 计算题目 (7)3.2 题目分析 (7)3.3 结果比较 (12)问题四欧拉法解微分方程 (14)4.1 计算题目 (14)4.2.1 方程的准确解 (14)4.2.2 Euler方法求解 (14)4.2.3改进欧拉方法 (16)问题五四阶龙格-库塔计算常微分方程初值问题 (17)5.1 计算题目 (17)5.2 四阶龙格-库塔方法分析 (18)5.3 程序流程图 (18)5.4 标准四阶Runge-Kutta法Matlab实现 (19)5.5 计算结果及比较 (20)问题六舍入误差观察 (22)6.1 计算题目 (22)6.2 计算结果 (22)6.3 结论 (23)7 总结 (24)附录问题一 非线性方程数值解法1.1 计算题目编写不动点迭代法求根程序:把方程010423=-+x x 写成至少四种x=g (x )的形式,取初值5.1x 0=,进行不动点迭代求根,并比较收敛性及收敛速度。
FORTRAN实验报告(一)

①整型:
PROGRAM ADD6_1
!输出9*9乘法表
INTEGER I,J
DO I=1,9
PRINT 10,(J,I,J*I,J=1,I) !隐性DO循环
输出:87 67.40 465 345.70
⑵输入:0087067.40
0046500345.70
输出:87 67.40
465 345.70
③指数形式:
PROGRAM XI6_2
!输入1234567891011121314151617181920
INTEGER A
REAL B,C
CHARACTER*10 D
1*3= 3 2*3= 6 3*3= 9
1*4= 4 2*4= 8 3*4=12 4*4=16
1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25
1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
STATEMENT
END SELECT
2、循环结构格式如下:
DO循环:DO I=E1,E2,E3
STATEMENT
[IF(L) EXIT]
[IF(L) CYCLE]
ENDDO
DO WHIEL循环:DO WHILE(LOGICAL)
STATEMENT
ENDDO
隐DO循环:(STATEMENT, I=E1,E2,E3)(可以嵌套使用)
计算机程序设计基础—FORTRAN实验设计报告线性方程组求解问题

中南大学本科生课程设计(实践)任务书、设计报告(计算机程序设计基础—FORTRAN)题目线性方程组求解问题学生姓名陈晨指导教师刘胤宏学院土木工程学院专业班级土建类工程试验班学生学号18计算机基础教学实验中心2012年 6 月29日Fortran 课程设计实验报告之 线性方程组求解问题题目重现:一物理系统可用下列线性方程组来表示:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡θ-θ-θθθ--θg m g m N N a a m m m m 2121212111001cos 00sin 00cos 0sin 0sin cos 从文件中读入m1、m2和θ的值,求a1、a2、N1 和N2的值。
其中g 取,输入θ时以角度为单位。
要求如下:(1)分别用两种方法(例如高斯消去法、矩阵求逆法、三角分解法、追赶法等),定义求解线性方程组Ax=b 的子程序,要求该子程序能求解任意线性方程组。
(2)在主程序中分别调用上面定义的两个子程序,并对求解结果进行对比分析。
(3)绘制以上两个方法所求得的方程解的数据分布图。
题目分析:初看题目,MY GOD !这辈子没见过这么复杂奇葩的方程组。
而脑袋里那些应付考试还可以的少的可怜的Fortran 基础知识,更是直接缴械投降,无地自容了。
不愧是大学,不愧是让无数土木人工科男竞折腰的Fortran 课程设计。
好吧,虽然极度怀疑自己的智商,但不战而屈己之兵又不是我土木人的性格。
打开电脑,摩拳擦掌,Fortran ,老子来了!我们的目的地是,线性方程组的解,通往目的地的道路有好几条,Gauss 大道,矩阵求逆之道,还有两条小路:三角分解与追赶之径。
目前的情况是,小道路黑路不熟,大道倒是有星点的光。
果断走大道嘛。
开发思想嘛,对于解这样一个复杂的线性方程组,聪明的人类是不会傻乎乎自己去做的。
于是,我们把这个繁琐的工作交给任劳任怨的计算机吧,省下我们大好年华去干更多有意义的事情。
Fortran实验报告样例(1)

n n 1)1(312111+-+⋅⋅⋅-+-实验报告样例南京信息工程大学Fortran 语言程序设计 实验(实习)报告 实验(实习)名称 循环程序设计 实验(实习)日期 得分 指导老师系 专业 班级 姓名 学号一.实验目的:1. 掌握DO 、DO WHILE 语句的语法规则和使用要求。
2. 掌握循环结构概念和循环结构程序设计方法。
3. 掌握强制性终止循环语句EXIT 和CYCLE 的基本功能和使用规则,以及相互区别。
4. 掌握嵌套循环结构概念和应用。
二.实验内容1:1. 问题描述给定5名学生的考试成绩S,评判每个学生的成绩等级,并输出。
编写程序实现之。
成绩按以下标准评定等级:优:90≤S ≤100;良:80≤S<90;中:70≤S<80; 及格:60≤S<70;不及格:S<60。
2.问题分析已知:5个学生成绩:s 1、s 2、s 3、s 4、s 5,从键盘输入,数据类型为整型。
求:5个学生成绩等级,g1、g2、g3、g4、g5,数据类型为字符型。
求解该问题的基本思想是:从键盘依次读取学生成绩数据,每读一个学生成绩,就按照成绩等级评定标准评定等级,并输出该学生等级。
由于有确定的5个学生,所以读取学生成绩和评定成绩等级共5次。
该问题显然是一个重复次数确定的重复处理问题,可通过“计数型”循环结构和DO 循环语句实现。
用整型变量cj 表示学生成绩,用字符型变量grade 表示成绩等级。
用整型变量I 作为循环控制变量。
通过分析,设计算法,绘制框图,如图6-2所示。
3. 实验步骤:1) 算法流程图:2) 编制源程序:(可附在下一页上)3) 运行结果:输入:输出:4. 分析实验中遇到的问题及其解决的办法三、实验内容2:1.问题描述计算其中n 为满足不等式12+22+32+…+n 2>A 的最小项数n。
A 从键盘输入,如:10000。
编写程序实现之。
2.问题分析求解本题,先通过“条件型”循环结构求最小项数n ,整型数,然后再通过“计数型”循环计算级数之和。
fortran有限元程序课程设计

fortran有限元程序课程设计一、课程目标知识目标:1. 掌握Fortran语言的基本语法和程序结构;2. 理解有限元方法的基本原理及其在工程问题中的应用;3. 学会使用Fortran编写有限元程序,解决简单的物理问题;4. 了解有限元程序的调试与优化方法。
技能目标:1. 能够运用Fortran语言编写简单的有限元程序;2. 能够对有限元程序进行调试和性能优化;3. 能够运用所学知识解决实际工程问题,具备一定的编程实践能力;4. 能够通过团队合作,共同完成较复杂的有限元程序编写。
情感态度价值观目标:1. 培养学生对编程和计算物理学的兴趣,激发学生的求知欲和探索精神;2. 培养学生严谨、细致、勤奋的学习态度,提高学生的问题解决能力;3. 培养学生的团队合作精神,提高沟通与协作能力;4. 增强学生的民族自豪感,认识我国在有限元领域的发展成果。
课程性质:本课程为高年级专业选修课,旨在使学生掌握Fortran有限元程序的编写和应用,提高学生的编程实践能力和解决实际问题的能力。
学生特点:学生已具备一定的数学、物理和编程基础,具有较强的逻辑思维能力和动手能力。
教学要求:结合课本内容,注重理论与实践相结合,强化编程实践,提高学生的实际操作能力。
同时,注重培养学生的团队合作精神,提高学生的综合素质。
通过本课程的学习,使学生能够独立编写和优化有限元程序,为后续学习和工作打下坚实基础。
二、教学内容1. Fortran语言基础:变量定义、数据类型、运算符、控制结构、数组、函数与子程序等;2. 有限元方法原理:有限元离散化、单元划分、形函数、刚度矩阵、载荷向量、边界条件处理等;3. 有限元程序编写:根据实际问题,运用Fortran语言编写有限元程序,包括前处理、核心计算和后处理;4. 程序调试与优化:调试技巧、性能分析、优化方法等;5. 实际工程案例:选取具有代表性的工程问题,运用所学的Fortran有限元程序解决。
fortran实验报告

fortran实验报告FORTRAN实验报告实验⽇期2012年3⽉6⽇⼀、实验⽬的1、了解FORTRAN90软件开发环境2、学会启动Fortran,掌握程序的编辑、编译、构建、运⾏⽅法。
3、了解软件开发环境常⽤菜单、⼯具按钮、环境窗⼝基本功能。
掌握⽂件、⽂件夹的移动、复制、删除等操作⽅法。
⼆、实验内容1、运⾏Microsoft Developer Studio软件开发环境。
2、理解有关⼯作区(Workspaces)、项⽬(Projects)、⽂件(Files)的基本概念。
3、掌握⼯作区(Workspaces)、项⽬(Projects)、⽂件(Files)创建⽅法。
4、掌握程序的编辑(Edit)、编译(Compile)、构建(Build)、运⾏(Run)⽅法三、实验步骤1、建⽴⽂件夹2、启动Microsoft Developer Studio软件开发环境,并创建⼯作区、项⽬3、创建⽂件4、编译项⽬内源程序⽂件5、构建可执⾏程序⽂件。
6、运⾏可执⾏程序⽂件四、实验结果与分析实验结果:FORTRAN实验报告实验⽇期2013年3⽉13⽇⼀、实验⽬的1、掌握源程序的书写格式;2、掌握FORTRAN 90中基本数据类型及其描述、运算;3、掌握基本语句的使⽤⼆、实验内容编写简单程序代码1、整数类型program ex0404 integer aa=3write(*,*) "a=",astopEndprogram ex0406 integer(kind=4) write write=2+2*4-3write(*,*) "2+2*4-3=",write stopEnd2、浮点数类型program ex0410real :: a,b,ca=0.5b=0.5c=sin(a)**2 + cos(b)**2 write(*,*) "c=",cstopEnd3、复数类型program ex0411 complex :: a,ba=(1.0,1.0)b=(1.0,2.0)write(*,*) "a+b=",a+b write(*,*) "a-b=",a-b write(*,*) "a*b=",a*b write(*,*) "a/b=",a/bstopend4、字符类型program ex0413 character(len=20) stringstring = "Good morning."write(*,*) stringstring(6:) = "evening." ! 重设设定从第6个字符之后的字符串write(*,*) string end5、逻辑类型program ex0416logical a,ba=.true.b=.false.write(*,*) a,bend三、实验步骤1、编译、构建、运⾏、调试程序2、编写实验报告四、实验结果与分析1、执⾏结果:2、执⾏结果:3、执⾏结果:45、FORTRAN实验报告实验⽇期2012年3⽉26⽇⼀、实验⽬的1、掌握⾃定义数据类型的使⽤,熟练进⾏程序编写⼆、实验内容⾃定义类型program ex0434implicit none! 开始建⽴person这个类型character(len=30) :: name ! ⼈名integer :: age ! 年龄integer :: height ! ⾝⾼integer :: weight ! 体重character(len=80) :: address ! 地址end type persontype(person) :: a ! 声明⼀个person类型的变量write(*,*) "NAME:"read(*,*) a%namewrite(*,*) "AGE:"read(*,*) a%agewrite(*,*) "HEIGHT:"read(*,*) a%heightwrite(*,*) "WEIGHT:"read(*,*) a%weightwrite(*,*) "ADDRESS:"read(*,"(A80)") a%addresswrite(*,100) a%name,a%age,a%height,a%weight100 format("Name:",A10/,"Age:",I3/,"Height:",I3/,"Weight:",I3,& &"Addres:",A50) stopend三、实验步骤1、编写程序代码、编译、调试2、编写实验报告四、实验结果与分析实验结果:输⼊Chang 23 171 59 hebeidaxue执⾏结果:FORTRAN实验报告实验⽇期2012年4⽉9⽇⼀、实验⽬的掌握输⼊输出的格式及变量声明的应⽤⼆、实验内容1、输⼊输出的格式integer areal bcomplex clogical dcharacter(len=20) ea=10b=12.34c=(1,2)d=.true.e="FORTRAN"write(*,"(1X,I5)") a ! ⽤I来格式化整数write(*,"(1X,F5.2)" ) b ! ⽤F来格式化浮点数write(*,"(1X,F4.1,F4.1)" ) c ! complex也是浮点数write(*,"(1X,L3)") d ! ⽤L来输出logicalwrite(*,"(1X,A10)") e ! ⽤A来输出字符串End⼆、变量声明的应⽤program ex0432implicit noneinteger :: a=1integer :: b=2real :: cc=real(a)/real(b) ! 经由库函数real把整数转换成浮点数write(*,"(F5.2)") c end⼆、实验步骤1、编译、调试2、编写实验报告四、实验结果与分析实验结果:1、2、FORTRAN实验报告实验⽇期2012 年4⽉17⽇⼀、实验⽬的1、熟悉和掌握选择结构程序的编写⽅法2、熟悉和掌握各种选择结构的实现⽅法⼆、实验内容1、编写计算⾝⾼、体重是否正常代码program ex0502implicit nonereal(kind=4) :: height ! 记录⾝⾼real(kind=4) :: weight ! 记录体重write(*,*) "height:"read(*,*) height ! 读⼊⾝⾼write(*,*) "weight:"read(*,*) weight ! 读⼊体重if ( weight > height-100 ) then! 如果体重⼤于⾝⾼减去100, 会执⾏下⾯的程序write(*,*) "Too fat!"else! 如果体重不⼤于⾝⾼减去100, 会执⾏下⾯的程序write(*,*) "Under control." end ifstopEnd2、计算学⽣的成绩program ex0512implicit noneinteger scorecharacter gradewrite(*,*) "Score:"read(*,*) scoreselect case(score)case(90:100) ! 90到100分之间grade='A'case(80:89) ! 80到89分之间grade='B'case(70:79) ! 70到79分之间grade='C'case(60:69) ! 60到69分之间grade='D'case(0:59) ! 0到59分之间grade='E'case default ! 其它情形grade='?'end selectwrite(*,"('Grade:',A1)") gradestopend三、实验步骤1、分析问题,设计算法,编写程序2、编译、构建、运⾏、调试程序3、编写实验报告四、实验结果与分析第⼀个程序执⾏结果:输⼊170 58输⼊170 89第⼆个程序执⾏结果:输⼊89输⼊98FORTRAN实验报告实验⽇期2012 年4⽉24⽇⼀、实验⽬的1、了解⼦程序定义、调⽤、形式参数、实在参数、参数传递的基本内容和使⽤规则2、了解结构化程序设计⽅法3、了解使⽤⼦程序设计和编写程序的⽅法⼆、实验内容1、要求验证书本所讲的Fortran程序的⼦程序编写规则及调⽤⽅法。
Fortran语言编程小结(五篇材料)

Fortran语言编程小结(五篇材料)第一篇:Fortran语言编程小结1.单双精度Program ex01 implicit none real(kind=4):: a real(kind=8):: b a=3.***66666666_4!确定这个数字是使用单精度 b=3.***66666666_8!确定这个数字是使用双精度 write(*,*)a,b End program ex012.判断kind值 program ex02 Implicit none!判断可以记录9个位数的整数kind值integer, parameter :: long_int = selected_int_kind(9)!判断可以记录3个位数的整数kind值integer, parameter :: short_int = selected_int_kind(3)!判断可以有3个有效位数, 指数可以记录到3的浮点数kind值integer, parameter :: long_real = selected_real_kind(10, 50)!判断可以有10个有效位数, 指数可以记录到50的浮点数kind值integer, parameter :: short_real= selected_real_kind(3, 3)integer(kind=long_int):: a = 123456 integer(kind=short_int):: b = 123 real(kind=long_real):: c = +1.23456789D45 real(kind=short_real):: d =+1230 write(*, “(I3,1X,I10)”)long_int,a write(*, “(I3,1X,I10)”)short_int, b write(*, “(I3,1X,E10.5)”)long_real, c write(*, “(I3,1X,E10.5)”)short_real, d END3.TYPE program ex0434 implicit none Type :: person!开始建立person这个类型character(len=30):: name!人名integer :: age!年龄integer :: height!身高INTEGER :: weight!体重character(len=80):: address!地址End type person type(person):: a!声明一个person类型的变量write(*,*)“NAME:” read(*,*)a%name write(*,*)“AGE:” read(*,*)a%age write(*,*)“HEIGHT:” read(*,*)a%height write(*,*)“WEIGHT:” read(*,*)a%weight write(*,*)“ADDRESS:” read(*,*)a%address write(*,100)a%name,a%age,a%height,a%weight 100 format(“Name:”,A10/,“Age:”,I3/,“Height:”,I3/,“Weight:”,I 3/,&“Addres:”,A80)End4.REAL 与 INTEGER Program ex0431 implicit noneinteger :: a=1integer :: b=2real:: cc=a/b!c=1/2=0, 虽然c是浮点数,但因为a,b是整数,计算a/b时会用整数去计算.write(*,“(F5.2)”)c End5.DATA 变量表/初值表/,变量表/初值表/,… PROGRAM ex0430 IMPLICIT NONE INTEGER A REALB COMPLEXC CHARACTER(20)STR DATA A,B,C,STR /1,2.0,(1.0,2.0), 'FORTRAN 77'/ WRITE(*,*)A,B,C,STR END6.复数实虚部Program ex0430 complex :: c =(1,2)write(*,100)real(c),'+',aimag(c),'i' 100 format(f5.1,a1,f5.1,a1)End7.逻辑输出 Program ex0416logical a,ba=.true.b=.false.write(*,100)a,bformat(L5,L4)End8.Program ex0415character(len=20)stringcharacter(len=5)substringstring = “Have a nice day.”substring = “nice”write(*,*)ichar('A')!输出字符A的ASCII码write(*,*)char(65)!输出ASCII码65所代表的字符,也就是Awrite(*,*)len(string)!输出字符串string声明时的长度write(*,*)len_trim(string)!输出字符串string内容的长度write(*,*)index(string, substring)!nice在Have a nice day的第8个位置 End9.Program ex0414character(len= 6)firstcharacter(len=10)secondcharacter(len=20)addfirst=“Happy ”second=“Birthday”add = first//second!经由两个连续的除号可以连接两个字符串write(*,100)addFORMAT('生日快乐',/,A)End10.带精度计算 Program ex0408real(kind=8):: a,ba=1b=0.1write(*,*)a,“+”,b,“=”,a+b End11.逻辑if语句 Program ex0504 implicit noneinteger rain, windspeedlogical r,wwrite(*,*)“Rain:”read(*,*)rainwrite(*,*)“Wind:”read(*,*)windspeedr =(rain>=500)!如果rain>=150, r=.true, 不然r=.false.w =(windspeed>=10)!如果windspeed>=10, w=.true, 不然w=.false.if(r.or.w)then !只要r或w有一个值是true就成立write(*,*)“停止上班上课”elsewrite(*,*)“照常上班上课” End if End12.Select Case用法 Program ex0512 implicit noneinteger :: scorecharacter gradewr ite(*,*)“Score:”read(*,*)scoreselect case(score)case(90:100)grade='A'case(80:89)grade='B'case defaultgrade='?'End selectwrite(*,“('Grade:',A1)”)grade End13.IF GOTO语句PROGRAM ex0514 IMPLICIT NONE REAL heightREAL weightWRITE(*,*)“height:” READ(*,*)heightWRITE(*,*)“weight:” READ(*,*)weightIF(weight > height-100)GOTO 200 100 WRITE(*,*)“Under control.”GOTO 300200WRITE(*,*)“Too fat!” 300 STOP END14.DO WHILE 循环 Program ex0604 implicit noneinteger, parameter :: limit=10integer counterinteger :: ans = 0counter = 2do while(counter <= limit)ans = ans + countercounter = counter + 2end dowrite(*,*)ans END15.CYCLE,EXIT 语句 Program ex0609 implicit noneinteger :: i,jloop1: do i=1,3loop2: do j=1,3if(i==3)exit loop1!跳离loop1循环if(j==2)cycle loop2!重做loop2循环write(*, “('(',i2,',',i2,')')”)i, jend do loop2end do loop1 End16.大小写字符 Program ex0612 implicit noneinteger iinteger strlencharacter(len=20):: stringwrite(*,*)“String:”read(*,*)stringstrlen = LEN_TRIM(string)do i = 1, strlenstring(i:i)= char(ichar(string(i:i))+32)end dowrite(*,“('encoded:',A20)”)string End17.循环计算 Program ex0614 implicit nonereal a,b,anscharacter :: key = 'y'!为了至少循环一次do while(key=='y'.or.key=='Y')read(*,*)a read(*,“(A1)”)key read(*,*)b select case(key)case('+')ans = a+b case('-')ans = a-b case('*')ans = a*bcase('/')ans = a/b case defaultwrite(*,“('Unknown operator ',A1)”)keystop end selectwrite(*,“(F6.2,A1,F6.2,'=',F6.2)”)a,key,b,answrite(*,*)“(Y/y)to do again.(Other)to exit.” read(*,“(A1)”)key end do End18.矩阵相加 pogram ex implicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: matrixA(row,col)integer :: matrixB(row,col)integer :: matrixC(row,col)integer rinteger cwrite(*,*)“Matrix A”do r=1, rowdo c=1, colwrite(*,“('A(',I1,',',I1,')=')”)r,cread(*,*)matrixA(r,c)end doend dowrite(*,*)“Matrix B”do r=1, rowdo c=1, colwrite(*,“('B(',I1,',',I1,')=')”)r,cread(*,*)matrixB(r,c)end doend dowrite(*,*)“Matrix A+B=”do r=1, rowdo c=1, colmatrixC(r,c)= matrixB(r,c)+matrixA(r,c)write(*,“('(',I1,',',I1,')=',I3)”)r,c,matrixC(r,c)end do end do end pogram ex[ write(*,“(I3,I3,/,I3,I3)”)((mc(i,j), i=1,2),j=1,2)] 19.program eximplicit noneinteger, parameter :: row = 2integer, parameter :: col = 2integer :: a(2,2)=(/ 1,2,3,4 /)!a(1,1)=1, a(2,1)=2, a(1,2)=3, a(2,2)=4integer :: b(4)=(/ 5,6,7,8 /)integer :: c(2)write(*,*)a,2)write(*,*)a(:,1)c = a(:,1)!c(1)=a(1,1), c(2)=a(2,1)write(*,*)c!c(1), c(2)c = a(2,:)!c(1)=a(2,1), c(2)=a(2,2)write(*,*)c!c(1), c(2)write(*,*)c(2:1:-1)!c(2), c(1)c = b(1:4:2)!c(1)=b(1), c(2)=b(3)write(*,*)c!c(1), c(2)End20.FORALL语句 Program ex Implicit none integer :: I,Jinteger, parameter :: size = 5integer :: a(size,size)forall(I=1:size, J=1:size, I>J)a(I,J)=1!上半部分forall(I=1:size, J=1:size, I==J)a(I,J)=2!对角线forall(I=1:size, J=1:size, I!下半部分write(*,“(5(5I5,/))”)a End21.Allocatable Program EX Implicit none integer :: size, error=0integer, parameter :: one_mb=1024*1024 !1MBcharacter, allocatable :: a(:)Dosize=size+one_mb!allocate(a(size), stat=error)if(error/=0)exitwrite(*,“('Allocate ',I10, ' bytes')”)size write(*,“(F10.2,' MB used')”)real(size)/real(one_mb)deallocate(a)End do End22.Function 函数 Program ex implicit nonereal :: a=10real :: b=20real :: addwrite(*,“(f6.2)”)add(a,b)End Function add(a,b)implicit none real :: a,breal :: addadd = a*b End23.SAVE语句 Program ex Implicit nonecall sub()call sub()call sub()End program Subroutine sub()Implicit noneInteger :: count = 1Save count!指定save变量永远活着,不会忘记它的内容Write(*,*)countcount = count+1 End[运行结果:1 2 3 ]24.生成随机数 program ex implicit noneinterface!定义函数的接口function random10(lbound, ubound)implicit none real :: lbound, ubound real :: random10(10)end functionend interfacereal :: a(10)CALL RANDOM_SEED()!系统根据日期和时间随机地提供种子a = random10(1.0, 10.0)write(*,“(10F6.2)”)aend function random10(lbound, ubound)implicit nonereal :: lbound, uboundreal :: lenreal :: random10(10)realtinteger ilen = ubound-lbound!计算范围大小do i=1,10call random_number(t)!t会是0~1之间的随机数random10(i)= lbound + len * t!把t转换成lbound~ubound 间的随机数end do End25.MODULE语句 Module globalimplicit noneinteger a,bcommon a,b End module Program ex0834use globalimplicit nonea=1b=2call sub()End program Subroutine sub()use globalimplicit nonewrite(*,*)a,breturn End subroutine26.写文件到text program ex0902implicit nonecharacter(len=20):: stringopen(unit=10, file=“test.txt”)write(10,“(A20)”)“I LOVE YOU.”!写到文件中rewind(10)read(10,“(A20)”)string!从文件中读出来write(*,“(A20)”)string!写到屏幕上 end27.随机成绩 program gendataimplicit noneinteger studentsinteger irealr(3)write(*,“(4A5)”)“座位”,“语文”,“数学”,“英语”call random_seed()write(*,*)“How many students?”read(*,*)studentsdo i=1,studentscall random_number(r)write(*,“(6I5)”)i,int(r*50+50)end do end program第二篇:Fortran语言复习大纲复习内容提纲1.FORTRAN程序的结构、书写规则FORTRAN程序的构成(主程序和子程序);FORTRAN77源程序的书写格式。
FORTRAN实验报告

《FORTRAN 语言》实验(上机)报告班级·学号 姓名 实验日期 任课教师 实验名称实验一 顺序结构程序设计验证型一、实验目的(1)熟悉Fortran PowerStation4.0的集成开发环境和上机步骤;(2)掌握源程序的书写格式; (3) 掌握FORTRAN 90中基本数据类型及其描述、运算;(4) 掌握基本语句的使用。
二、实验内容:(1)编写程序,将华氏温度转化为摄氏温度,公式为:。
要求:输入一个华氏温度)32(95-=F C 值F ,按照公式将其转化为摄氏温度值C 。
(2)编写程序,其功能是:输入a,b,x 的值,计算并输出y 的值。
b x e y ax 5ln 2+=当x=1.234,a=-5,b=0.9876时,y= 。
三、实验平台 Fortran PowerStation 4.0四、程序清单五、调试和测试结果六、教师批语与成绩评定:年月日《FORTRAN语言》实验(上机)报告班级·学号姓名实验日期任课教师实验名称实验二选择结构程序设计验证型一、实验目的(1)掌握逻辑表达式的书写方法和逻辑型数据的使用;(2)学会正确使用逻辑运算符和逻辑表达式;(3)掌握块IF结构、块CASE结构、逻辑IF语句和算术IF语句。
二、实验内容:(1)编写程序,输入年、月,求该月的天数。
用year、month分别表示年、月,day表示每月的天数。
注意:①每年的1,3,5,7,8,10,12月,每月31天;4,6,9,11月每月30天;2月闰年为29天,平年为28天。
②年份能被4整除,但不能被100整除,或者能被400整除的年均为闰年。
(2)编写程序,输入一个自然数,若为奇数则输出其平方根,否则输出其立方根。
三、实验平台Fortran PowerStation 4.0四、程序清单五、调试和测试结果六、教师批语与成绩评定:年月日《FORTRAN 语言》实验(上机)报告班级·学号 姓名 实验日期 任课教师 实验名称实验三 循环结构程序设计操作型一、实验目的(1)掌握用DO 语句和DO WHILE 语句实现循环的方法;(2)掌握循环结构的实现方法; (3) 掌握循环嵌套的执行过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验二选择结构程序设计
验证型
一、实验目的
(1)掌握逻辑表达式的书写方法和逻辑型数据的使用;
(2)学会正确使用逻辑运算符和逻辑表达式;
(3)掌握块IF结构、块CASE结构、逻辑IF语句和算术IF语句。
(1)掌握字符型、双精度型常量变量的表示方法及其运算;
(2)掌握字符型数据的输入输出格式及数据类型之间的转换和运算规则。
二、实验内容:
(1)编写程序:输入一个字符,若为小写字母,则输出其大写字母;若为大写字母,则输出其小写字母;若为数字,则原样输出该数字字符;否则,输出*。
(2)编写程序,用双精度数据计算:
(1)编写程序:从键盘输入若干字符串,并把这些字符串存放到文件FILE1.TXT中。
(2)编写程序,读出当前文件夹下文件README.TXT的内容,显示在屏幕上。
三、实验平台
Fortran PowerStation4.0
四、程序清单
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
PRINT*,Y
READ*,N
END
五、调试和测试结果
实验一正常运行,共有143个素数,其和为75067
实验二正常运行,当输入m=10时,输出结果为445
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验四字符型数据程序设计
操作型
一、实验目的
xn+1=1-sinxn。如果迭代10次不收敛,则终止运行。
三、实验平台
Fortran PowerStation4.0
四、程序清单
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验一顺序结构程序设计
验证型
一、实验目的
(1)熟悉Fortran PowerStation4.0的集成开发环境和上机步骤;
(2)掌握源程序的书写格式;
(3)掌握FORTRAN 90中基本数据类型及其描述、运算;
(4)掌握基本语句的使用。
四、程序清单及运行结果
要求:第1题写出运行结果,第2题写出程序清单。
五、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验八文件操作
操作型
一、实验目的
(1)掌握文件与记录的概念;
(2)掌握文件的打开和关闭;
(3)掌握文件的存取方法。
二、实验内容:
CHARACTER name *8
REAL salary
REAL award
REAL cost
END TYPE
INTEGER I,J,NUM
PARAMETER (NUM=10)
TYPE (person) , DIMENSION ( NUM )::clerk
DO i=1,NUM
READ *,clerk(i).name, clerk(i).salary, clerk(i).award, clerk(i).cost
END DO
DO J=1,NUM
IF(clerk(j).salary + clerk(j).award–clerk(j).cost>=1200)THEN
PRINT * ,clerk(j).name, clerk(j).salary, clerk(j).award, clerk(j).cost
END IF
二、实验内容:
(1)编写程序,将华氏温度转化为摄氏温度,公式为: 。要求:输入一个华氏温度值F,按照公式将其转化为摄氏温度值C。
(2)编写程序,其功能是:输入a,b,x的值,计算并输出y的值。
当x=1.234,a=-5,b=0.9876时,y=。
三、实验平台
Fortran PowerStation5.0
end if
read*,I
end
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验三循环结构程序设计
操作型
一、实验目的
(1)掌握用DO语句和DO WHILE语句实现循环的方法;
(2)掌握循环结构的实现方法;
(3)掌握循环嵌套的执行过程。
INTEGER i
x=0
DO i=1,5
p=>x(1:i,1)
p=p+1
PRINT *,p
END DO
END
请将程序略作修改,用于输出下列图形:
(1) (2)
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
三、实验平台
Fortran PowerStation4.0
N=0
DO I=100,1000,1
DO J=2,I-1,1
K=MOD(I,J)
IF(K==0)EXIT
IF(J==I-1)THEN
N=N+1
SUM=SUM+I
ENDIF
ENDDO
ENDDO
PRINT*,"100到1000内素数的个数为:",N
PRINT*,"100到1000内素数之和为:",SUM
班级·学号姓名实验日期任课教师
实验名称
实验七派生类型和指针程序设计
操作型
一、实验目的
(1)掌握结构体的概念、定义、格式及引用和初始化方法;
(2)掌握结构体数组的定义;
(3)掌握指针的概念、定义格式和使用;
(4)理解动态变量的含义。
二、实验内容:
1、有以下程序:
IMPLICIT NONE
TYPE person
END DO
END
运行程序,输入以下数据:
“Lister”,876,451,123
“Angel”,746,523,23
“Billy”,912,551,243
“Henry”,926,660,314
“Ervine”,676,481,103
“Ford”,816,351,89
“George”,936,451,145
“Mailer”,766,480,98
“Philip”,880,560,168
“Victor”,660,440,86
输出结果为:。
2、以下程序用于在屏幕上输出如下图形:
1
21
32 1
43 2 1
54 3 2 1
IMPLICIT NONE
INTEGER,POINTER::p(:)
INTEGER,TARGET::X(5,5)
操作型
一、实验目的
(1)掌握语句函数的定义及引用方法、函数子程序和子例行子程序的结构和调用方法;
(2)掌握FORTRAN程序单元间的数据传递方法。
二、实验内容:
(1)若Fibonacci数列的第n项记为fib(a,b,n),则有下列的递归定义:
fib(a,b,1)=a
fib(a,b,2)=b
fib(a,b,n)=fib(b,a+b,n-1) (n>2)
班级·学号姓名实验日期任课教师
实验名称
实验九综合程序设计
综合型
一、实验目的
综合运用所学知识,掌握利用FORTRAN语言解决实际问题的方法。
二、实验内容:
1、编写程序:输入30名学生一门课的考试成绩,以0~9分,10~19分,…90~99分,100分为分数段,统计各分数段的人数。
2、用迭代法求一非线性方程x-1+sinx=0在1.0附近的一个实根,精度要求为10-5。迭代格式为:
,直到第n项的绝对值小于 为止。
三、实验平台
Fortran PowerStation4.0
四、程序清单
五、调试和测试结果
六、教师批语与成绩评定:
年月日
《FORTRAN语言》实验(上机)报告
班级·学号姓名实验日期任课教师
实验名称
实验五数组操作
操作型
一、实验目的
(1)掌握数组的定义及赋值和输入输出的方法;
(2)熟悉数组在内存中的存储顺序(按列存储);
(3)掌握数组赋初值的方法;
(4)掌握与数组有关的算法。
二、实验内容:
(1)编写程序,利用冒泡排序法把输入的一列无序的数据按由小到大的顺序排列。
(2)编写程序,其功能是:计算给定的20个数据与平均值之差的绝对值之和。
DEMENSION A(20)
DATA A/3.5,1.5,-2.5,4.5,2.5,3.0,5.5,-6.5,3.5,2.5,&
(2)编写程序,输入一个自然数,若为奇数则输出其平方根,否则输出其立方根。
三、实验平台
Fortran PowerStation4.0
四、程序清单
program shiyan2_2
real::I,
read*,I
if(mod(I,2)==o)then
print*,I**0.333
else
print*,I**0.5
READ*,I
END
PROGRAM SHIYAN3_2
INTEGER::N,S,I,Y,M,SUM
READ*,M