搜档网
当前位置:搜档网 › fortran帮助

fortran帮助

fortran帮助
fortran帮助

1implicit none:就是强制,标识符先定义后使用fortran 里面有一项不好的功能,就是变量不经定义就可以使用,而且根据变量的开始字母自行给变量规定类型,加上implicit none后可以防止这个东西。

2parameter:定义常量。

3Data 语句意思是为后面的变量做初始化这样的赋值发生在所有代码执行以前。只赋值一次。

4Data a/2,3,1,1/:对a定义一个数组。

5call GRKT1 (Y,W,F,D):GRKT1 (Y,W,F,D) 是个子程序,Y,W,F,D分别为子程序的参数,call为调用它。

6FORMAT:一般形式:Iw 或:Iw.m 其中:w 一个数据占的位数宽度(又称“字段宽度”),m 需要输出的最少数字位数。例如:WRITE (* , 100)

I,J,K 100 FORMAT(1X,I5.3,I6.3,I4) 若I=1234,J=-24,K=24689 则输出

为: ?1234 ???-24 ****

7write(UNIT=eunit,FMT=format):eunit为输出设备编号,format为输出格式控制符,具体符号请查阅手册。Write(*,*):第一个星号表示默认输出设备,即显示器

第二个星号表示默认输出格式

8FORTRAN中大于等于用(.ge.)表示,例如X>=Y可以表示为(X.GE.Y)不等于:/=和.ne.都是可以的GE是大于等于号(>=),GT是大于号(>),LE是小于等于号(<=),LT 是小于号(<) 在用fortran编程的时候如果要写到A

9求绝对值的内部函数是abs,求数组最大值的内部函数是maxval,最小值minval,他们都支持数组运算,所以程序编起来相当简单。

10

Fortran 95 摘要

(2011-02-15 10:07:51)

标签:

分类:好好学习

fortran

杂谈

字符:Fortran不区分大小写

Fortran 格式:自由格式和固定格式。Fortran程序代码扩展名为:*.For 或*.F的文件就是指固定格式;以*.F90为扩展名的文件,就是自由格式。

固定格式:规定了程序代码每一行中每个字段的意义。第7~72个字符,是可以用来编写程序的字段。每一行的前5个字符只能是空格或数字,数字用来作为―行代码‖。每一行的第6个字符只能是空格或―0‖以外的字符。

第1个字符如果是C、c或者星号*,这行文本会被当成说明批注,不会被编译

第1~5个字符如果是数字,就是用来给这一行程序代码取个代号。不然只能是空格

第6个字符如果是―0‖以外的任何字符,表示这一行程序会接续上一行

第7~72个字符Fortran程序代码的编写区域

第73个字符之后不使用,超过的部分会被忽略,有的编译器会发出错误信息

自由格式:叹号(!)后面的文本都是注释。每行可以编写132个字符。行号放在每行程序的最前面。一行程序代码的最后如果是符号&,代表下一行程序会和这一行连接;如果一行程序代码的开头是符号&,代表它会和上一行程序连接。

Fortran的数据类型

整型(Integer)浮点数(Real) 复数(Complex) 字符(Character)

逻辑判断(Logical)—True or False

Remark: Visual Fortran安装好后,默认的安装目录C:\Program Files\Microsoft Visual

Studio\DV98\bin下有一个Bitviewer程序可以用来表看各种数据格式实际在内存中的二进制数据。

Fortran的数学表达式

()(括号)、**(乘幂)、*(乘法)or /(除法)、+(加法)or –(减法)优先级(高à低).

输入(Write)输出(Print)命令

Fortran程序通常以Program描述来开头,Program后面还要接一个自定义的程序名称(这个名称可以完全自定义,不需要和文件名有任何关系)。Fortran程序最后还要有End描述,表示程序代码写到这一行结束。

Write(*,*)命令:括号中的两个星号都有各自的意义,第一个星号代表输出的位置使用默认值,也就是屏幕,第二个星号则代表不特别设置输出格式。

终归一句话,Write这个命令的最简单用法,就是在括号中挂上两个星号,再把所要输出的字符串用两个双引号引起来放在后面。

E.g.:write (*,*) ―Hello, Acuzio!‖ à完整的写法write(Unit = *, FMT=*) ―Hello, Acuzio!‖Write命令注意:

l 每一次执行Write命令后,会自动切换到下一行来准备做下一次的输入

l 因为双引号是用来―输出‖字符串的,所以想要输出双引号时,要连用两个双引号。

l Fortran90可以使用双引号或单引号来封装字符串,Fortran77标准中只能使用单引号,不过大部分的Fortran77编译器还是可以接受双引号。

STOP命令:是终止程序的意思,它可以出现在程序的任何地方,程序执行到这个命令就会中止。除非必要,不要把Stop命令使用在主程序结束之外的其他地方。因为一个程序,如果有太多的终止点会容易出错。

把上面例子中用Print命令,程序执行的结果是一样的àPrint *, ‖Hello, Acuzio!‖

Print的用法和write大致上相同,只是print后面不使用括号,而且只有一个星号。这个星号的意义是不限定输出格式。Print和Write的不同处就在于少了Write的第一个星号,也就是少了赋值输出位置的能力,Print命令只能针对屏幕来使用。建议尽量使用Write来做输出的工作,因为如果日后想把程序的输出转换到其他地方,例如转换到文件中,使用Write命令的程序改写起来比较容易,只有把UNIT值指到另一个输出位置就行了。

Integer:Integer(kind = 4) a Integer *4 a Integer(4) a

其中kind=4、*4、(4)都是赋值要使用4个bytes来存放整数的意思。

声明变量的原则:

l 变量的名称以使用英文字母为原则,可以内含下划线或数字,但前缀必须是英文字母

l 变量名字的长度,在77标准中最起码支持6个字符长,90标准中最起码支持31个字符长。也就是说在Fortran77中变量长度最后是在1~6之间,在Fortran90中变量长度则最后是在1~31之间

l 变量名称最好不要和Fortran的执行命令同名,也不能和主程序的名称或是前面声明过的变量同名。

l 程序中辨认变量时,不会区分它的大小写

Fortran90的声明语法多了一些变化,它可以在类型的后面先写两个冒号―::‖,再写上变量的名称

Real:

Real(kind=4)表示单精度。Real(kind=8)表示双精度

Complex:

Fortran中声明复数的方法:Complex a

复数是有实部和虚部两个部分组成,而Fortran中保存这两个数字的方法是用两个浮点数来保存,所有复数也可以分成单精度及双精度两种类型。

要设置一个复数数值的方法如下:a=(x,y) !x为实部,y为虚部,当a=(3.2,2.5)时,表示a=3.2+2.5i

Character:

声明:character(len=10) a character(10)a character*10 a character*(10) a

字符串长度需要多少字符,就赋值多少数字给它

Program ex

Character(len=20) string

String = ―Good morning.‖

Write(*,*) string

String(6) = ―evening.‖ !重新设置从第六个字符之后的字符串

Write(*,*) string

end

上例中string(1:2) = ―GO‖ !字符串最前面两个字符会变成GO

String(13:13)=‖!‖ !字符串的第13个字符会变成叹号

用(//)可以把前后两个字符串连接起来

Fortran有关字符串运行的函数

Char(num)返回计算机所使用的字符表上,数值num所代表的字符

IChar(char) 返回所输入的char字符在计算机所使用的字符表中所代表的编号,返回值是整数类型

Len(string)返回输入字符串的声明长度,返回值是整数类型

Len_Trim(String) 返回字符串去除尾端空格后的实际内容长度

Index(string,key)所输入的String和key都是字符串。这个函数会返回key这个―子字符串‖在―母字符串‖String中第一次出现的位置

Trim(string)返回把string字符串尾端多余空格清除过后的字符串

Logical:

逻辑变量并赋值。Logical a = .true.

设置逻辑变量的方法:当设置―真‖值或者―假‖值,请注意要在true和false的前后要加上两个点

输入命令Read

Read(*,*)

read命令在使用时和write一样,都有两个星号。代表的意义也是差不多的,第一个星号代表输入的来源使用默认的设备(也就是键盘),第二个星号代表不指定输入格式

格式化输入输出(Format)

Program ex

Integer a

a = 100

write(*,100) a !使用行代码100,也就是第五行的格式来输出变量a

100 format(I4) !最前面的100是行代码,把这一行程序代码给一个编号

End

Format格式

Aw 以w个字符宽来输出字符串

BN 定义文本框中的空位为没有东西,在输入时才需要使用

BZ 定义文本框中的空位代表0,在输入时才需要使用

Dw.d 以w个字符宽来输出指数类型的浮点数,小数部分占d个字符宽

Ew.d[Ee] 以w个字符宽来输出指数类型的浮点数,小数部分占d个字符宽,指数部分占e 个字符

ENw.d[Ee] 以指数类型来输出浮点数

ESw.d[Ee] 以指数类型来输出浮点数

Fw.d 以w个字符宽来输出浮点数,小数部分占d个字符宽

Gw.d[Ee] 以w个字符宽来输出整数,最少输出m个数字

Iw[.m] 以w个字符宽来输出整数,最少输出m个数字

Lw 以w个字符宽来输出T或F的真假值

nX 把输出的位置向右跳过n个位置

/ 代表换行

:在没有更多数据时结束输出

kP K值控制输入输出的SCALE

Tn 输出的位置移动到本行第n列

TLn 输出的位置向左相对移动n列

TRn 输出的位置向右相对移动n列

SP 在数值为正时加上―正号‖

SS 取消SP

Fortran 90添加的格式

Bw[.m] 把整数转换成二进制来输出、输出会占w个字符宽,固定输出m个数字。m值可以不给定

Ow[.m] 把整数转换成八进制来输出,输出会占w个字符宽,固定输出m个数字。m值可以不给定

Zw[.m] 把整数转换成十六进制来输出,输出会占w个字符宽,固定输出m个数字。m值可以不给定

[转载]fortran语言常用函数

(2012-11-01 21:41:08)

转载▼

签:

好东东!

原文地址:fortran语言常用函数作者:过竞千帆

求绝对值的内部函数是abs,求数组最大值的内部函数是maxval,最小值minval,他们都支持数组运算,所以程序编起来相当简单。比如一个数组为A(N),属实数域,其程序可写为integer,parameter :: N = 10 real A(N) real A_abs_max, A_abs_min ! set value for A A = (/ 1.0, 2.0, -1.5, 2.1, -1.3, 2.7, 3.3, 1.5, -3.3, 1.8 /) A_abs_max = maxval( abs(A) ) A_abs_min =

minval( abs(A) ) ! output the results print *, '绝对值最大数是:', A_abs_max print *, '绝对值最小数是:', A_abs_min end

3. 编程语言结构

abort 中止计算或循环

break 终止最内循环

case 同select 一起使用

continue 将控制转交给外层的for或

while循环

else 同if一起使用

elseif 同if一起使用

end 结束for,while,if 语句

for 按规定次数重复执行语句

if 条件执行语句

otherwise 可同switch 一起使用

pause 暂停模式

return 返回

select 多个条件分支

then 同if一起使用

while 不确定次数重复执行语句

eval 特定值计算

feval 函数特定值计算或多变量计算

function 函数文件头

global 定义全局变量

isglobal 检测变量是否为全局变量

error 显示错误信息

lasterror 显示最近的错误信息

sprintf 按格式把数字转换为串

warning 显示警告信息

4.基本数学函数

acos 反余弦

acosh 反双曲余弦

acot 反余切

acoth 反双曲余切

acsc 反余割

acsch 反双曲余割

asin 反正弦

asinh 反双曲正弦

atan 反正切

atanh 反双曲正切

cos 余弦

cosh 双曲余弦

cotg 余切

coth 双曲余切

sin 正弦

sinh 双曲正弦

tan 正切

tanh 双曲正切

exp 指数

log 自然对数

log10 常用对数

log2 以2为底的对数

sqrt 平方根

abs 绝对值

conj 复数共轭

imag 复数虚部

real 复数实部

ceil 向上(正无穷大方向)取整fix 向零方向取整

floor 向下(负无穷大方向)取整round 四舍五入取整

sign 符号函数

gsort 降次排序

erf 误差函数

erfc 补误差函数

gamma gamma函数

interp 插值函数

interpln 线性插值函数intsplin 样条插值函数

smooth 样条平滑函数spline 样条函数quarewave 方波函数

sign 符号函数

double 将整数转换为双精度浮点数5.基本矩阵函数和操作

eye 单位阵

zeros 全零矩阵

ones 全1 矩阵

rand 均匀分布随机阵

genmarkov 生成随机Markov 矩阵linspace 线性等分向量

logspace 对数等分向量

logm 矩阵对数运算

cumprod 矩阵元素累计乘

cumsum 矩阵元素累计和

toeplitz Toeplitz 矩阵

disp 显示矩阵和文字内容

length 确定向量的长度

size 确定矩阵的维数

diag 创建对角阵或抽取对角向量

find 找出非零元素1的下标

matrix 矩阵变维

rot90 矩阵逆时针旋转90度

sub2ind 据全下标换算出单下标

tril 抽取下三角阵

triu 抽取上三角阵

conj 共轭矩阵

companion 伴随矩阵

det 行列式的值

norm 矩阵或向量范数

nnz 矩阵中非零元素个数

null 清空向量或矩阵中的某个元素orth 正交基

rank 矩阵秩

trace 矩阵迹

cond 矩阵条件数

rcond 逆矩阵条件数

inv 矩阵的逆

lu LU分解或高斯消元法

pinv 伪逆

qr QR分解

givens Givens 变换

linsolve 求解线性方程

lyap Lyapunov 方程

hess Hessenberg 矩阵

poly 特征多项式

schur Schur 分解

expm 矩阵指数

expm1 矩阵指数的Pade逼近

expm2 用泰勒级数求矩阵指数

expm3 通过特征值和特征向量求矩阵指数

funm 计算一般矩阵函数

logm 矩阵对数

sqrtm 矩阵平方根

6. 特性值与奇异值

spec 矩阵特征值

gspec 矩阵束特征值

bdiag 块矩阵, 广义特征向量eigenmarkov 正则化Markov 特征向量pbig 特征空间投影

svd 奇异值分解

sva 奇异值分解近似

7. 矩阵元素运算

cumprod 元素累计积

cumsum 元素累计和

hist 统计频数直方图

max 最大值

mean 平均值median 中值

min 最小值

prod 元素积

sort 由大到小排序

std 标准差

sum 元素和

trapz 梯形数值积分

corr 求相关系数或方差

8. 稀疏矩阵运算

sparse 稀疏矩阵(只存储非零元素)

adj2sp 邻接矩阵转换为稀疏矩阵

full 稀疏矩阵转换为全矩阵

mtlb_sparse 将SCILAB 稀疏矩阵转换为MATLAB稀疏矩阵格式

sp2adj 稀疏矩阵转换为邻接矩阵speye 稀疏矩阵方式单位阵

sprand 稀疏矩阵方式随机矩阵spzeros 稀疏矩阵方式全零阵

lufact 稀疏矩阵LU分解

lusolve 稀疏矩阵方程求解

spchol 稀疏矩阵Cholesky分解

9. 输入输出函数

diary 生成屏幕文本记录

disp 变量显示

file 文件管理

input 用户键盘输入

load 读已存的变量

mclose 关闭文件

mget 读二进制文件

mgetl 按行读ASCII码文件

mgetstr 读字符串中单个字

mopen 打开文件

mput 写二进制文件

mfscanf 读ASCII 码文件

print 将变量记录为文件

read 读矩阵变量

save 存变量为二进制文件

strartup 启动文件

write 按格式存文件

xgetfile 对话方式获取文件路径

x_dialog 建立Xwindow参数输入对话框

Tk_Getvar 得到Tk文件变量

Tk_EvalFile 执行Tk 文件

10. 函数与函数库操作

deff 在线定义函数

edit 函数编辑器

function 打开函数定义

functions SCILAB 函数或对象

genlib 在给定目录下建立所有文件的

函数库

get_function_path 读函数库的文件存储目录路径

getd 读函数库中的全部文件

getf 在文件中定义一个函数

lib 函数库定义

macro SCILAB函数或对象

macrovar 输入变量个数

newfun 输出变量个数

11. 字符串操作

code2str 将SCILAB数码转换为字符串convstr 字母大小转换

emptystr 清空字符串

grep 搜寻相同字符串

part 字符提取

str2code 将字符串转换为SCILAB数码

string 字符串转换strings SCILAB 对象, 字符串strcat 连接字符

strindex 字符串的字符位置搜寻

strsubst 字符串中的字符替换

12. 日期与时间

date 日期

getdate 读日期与时间

timer CPU时间计时

13. 二维图形函数

plot2d 直角坐标下线性刻度曲线

champ 2 维向量场

champ1 由颜色箭头表示的2维向量场contour2d 等高线图

errbar 曲线上增加误差范围框线条grayplot 应用颜色表示的表面

xgrid 画坐标网格线

histplot 统计频数直方图

Matplot 散点图阵列

14. 三维图形函数

plot3d 三维表面

plot3d1 用颜色或灰度表示的三维表面param3d 三维中单曲线

param3d1 三维中多曲线

contour 三维表面上的等高线图

hist3d 三维表示的统计频数直方图geom3d 三维向二维上的投影

15. 线条类图形

xpoly 单线条或单多边形

xpolys 多线条或多各多边形

xrpoly 正多边形

xsegs 非连接线段

xfpoly 单个多边形内填充

xfpolys 多个多边形内填充

xrect 矩形

xfrect 单个矩形内填充

xrects 多个矩形内填充

xarc 单个弧线段或弧园

xarcs 多个弧线段或弧园

xfarc 单个弧线段或弧园填充

xfarcs 多个弧线段或弧园填充

xarrows 多箭头

16. 图形注释, 变换

xstring 图形中字符

xstringb 框内字符

xtitle 图形标题

xaxis 轴名标注

plotframe 图形加框并画坐标网格线

isoview 等尺寸比例显示(原图形窗口不

改变)

square 等尺寸比例显示(原图形窗口改

变)

xsetech 设置小窗口

xchange 转换实数为图形象素坐标值

subplot 设置多个子窗口

17. 图形颜色及图形文字

colormap 应用颜色图

getcolor 交互式选择颜色图

addcolor 增加新色于颜色图graycolormap 线性灰度图hotcolormap 热色(红到黄色)颜色图

xset 图形显示方式设定

xget 读当前图形显示方式设定

getsymbol 交互式选择符号和尺寸

18. 图形文件及图形文字

xsave 将图形存储为文件

xload 从磁盘中读出图形文件

xbasimp 将图形按PS文件打印或存储为

文件

xs2fig 将图形生成Xfig 格式文件

xbasc 取消图形窗及其相关内容

xclear 清空图形窗

driver 选择图形驱动器

xinit 图形驱动器初始化

xend 关闭图形

xbasr 图形刷新

replot 更改显示范围后的图形刷新

xdel 关闭图形

xname 改变当前图形窗名称

19. 控制分析用图形

bode 伯德图坐标

gainplot 幅值图坐标(伯德图中的幅值图) nyquist 奈奎斯特图

m_circle M-圆图

chart 尼库拉斯图

black Black-图

evans 根轨迹图

sgrid s 平面图

plzr 零-极点图

zgrid z 平面图

20. 图形应用中的其它指令

graphics 图形库指令表

xclick 等待鼠标在图形上的点击输入locate 由鼠标点击读入图形中的多点

位置坐标

xgetmouse 由鼠标点击读入图形中的当前点位置坐标

21. 系统与控制

abcd 状态空间矩阵

cont_mat 可控矩阵

csim 线性系统时域响应

dsimul 状态空间的离散时域响应

feedback 反馈操作符

flts 时域响应(离散、采样系统〕

frep2tf 基于传递函数的频域响应

freq 频域响应

g_margin 幅值裕量

imrep2ss 基于状态空间的脉冲响应

lin 线性化操作

lqe Kalman 滤波器

lqg LQG补偿器

lqr LQ补偿器

ltitr 基于状态空间的离散时域响应

obscont 基于观测器的控制器

observer 观测器

obsv_mat 观测矩阵

p_margin 相位裕量

phasemag 相位与幅值计算

ppol 极点配置

repfreq 频域响应

ricc Riccati 方程

rtitr 基于传递函数的离散时域响应

sm2ss 系统矩阵到状态空间变换

ss2ss 反馈连接的状态空间到状态空

间变换

ss2tf 状态空间到传递函数变换

stabil 稳定性计算

tf2ss 传递函数到状态空间变换time_id SISO系统最小方差辨识22. 鲁棒控制

augment 被控对象增广操作

bstap Hankel 矩阵近似

ccontrg H∞控制器

dhnorm 离散H∞范数

h2norm H2 范数

h_cl 闭环矩阵

h_inf H∞控制器

h_norm H∞范数

hankelsv Hankel 矩阵奇异值

leqr H∞控制器的LQ增益

linf 无穷范数

riccati Riccati 矩阵

sensi 敏感函数

23. 动态系统

arma ARMA 模型

arma2p 基于AR模型中获得多项式矩阵armac ARMAX 辨识

arsimul ARMAX系统仿真

noisegen 噪声信号发生器

odedi 常微分方程仿真检测

prbs_a 伪随机二进制序列发生器

reglin 线性拟合

24. 系统与控制实例

artest Arnold 动态系统

bifish 鱼群人口发展的离散时域模型boucle 具有观测器的动态系统相位图chaintest 生物链模型

gpech 渔业模型

fusee 登陆火箭问题

lotest Lorennz 吸引子

mine 采矿问题

obscontl 可控可观系统

portr3d 三维相位图

portrait 二维相位图

recur 双线性回归方程

systems 动态系统

tangent 动态系统的线性化

tadinit 动态系统的交互初始化

25. 非线性工具(优化与仿

真〕

bvode 边界值问题的常微分方程

dasrt 隐式微分方程过零解

dassl 代数微分方程

datafit 基于测量数据的参数辨识derivative 导数计算

fsolve 非线性函数过零解

impl 线性微分方程

int2d 二维定积分

int3d 三维定积分

intg 不定积分

leastsq 非线性最小二乘法

linpro 线性规划

lmisolver 线性不等矩阵

ode 常微分方程

ode_discrete 离散常微分方程ode_root 常微分方程根解

odedc 连续/离散常微分方程optim 非线性优化

quapro 线性二次型规划semidef 半正定规划

26. 多项式计算coeff 多项式系数coffg 多项式矩阵逆

degree 多项式阶数

denom 分母项

derivat 有理矩阵求导

determ 矩阵行列式值

factors 因式分解

hermit Hermit 型

horner 多项式计算

invr 有理矩阵逆

lcm 最小公倍数

ldiv 多项式矩阵长除

numer 分子项

pdiv 多项式矩阵除

pol2des 多项式矩阵到表达式变换pol2str 多项式到字符串变换polfact 最小因式

residu 余量

roots 多项式根

simp 多项式化简

systmat 系统矩阵

27. 信号处理

%asn 椭圆积分

%k Jacobi 完全椭圆积分

%sn Jacobi 椭圆函数

analpf 模拟量低通滤波器

buttmag Butterworth 滤波器响应cepstrum 倒谱计算

cheb1mag Chebyshev 一型响应cheb2mag Chebyshev 二型响应chepol Chebyshev 多项式

convol 卷积

corr 相关, 协方差

cspect 谱估计(应用相关法)

dft 离散富立叶变换

fft 快速富立叶变换

filter 滤波器建模

fsfirlin FIR滤波器设计

hank 协方差矩阵到Hankel矩阵变换hilb Hilbert 变换

iir IIR数字滤波器

intdec 信号采样率更改

kalm Kalman 滤波器更新

mese 最大熵谱估计

mfft 多维快速富立叶变换

mrfit 频率响应拟合

phc Markov 过程

srkf Kalman 滤波器平方根

sskf 稳态Kalman 滤波器

system 观测更新

wfir 线性相位FIR滤波器

weiener Weiener(维纳)滤波器window 对称窗函数

yulewalk 最小二乘滤波器

zpbutt Buthererworth 模拟滤波器

zpch1 Chebyshev 模拟滤波器

28. 音频信号

analyze 音频信号频域图

auread 读*.au 音频文件

auwrite 写*.au 音频文件

lin2mu 将线性信号转换为μ率码信号loadwave 取*.wav 音频文件

mapsound 音频信号图示

mu2lin 将μ率码信号转换为线性信号

playsnd 音频信号播放

savewave 存*.wav 音频文件

wavread 读*.wav 音频文件

wavwrite 写*.wav 音频文件

29. 语言与数据转换工具ascii 字符串的ASCII码excel2sci 读ASCII 格式的Excel 文件

fun2string 将SCILAB 函数生成ASCII 码

mfile2sci 将MATLAB 的M 格式文件转换为SCI格式文件

mtlb_load 取MATLAB第4版本文件中变量matlb_save 按MATLAB 第4 版本文件格式存

变量

pol2tex 将多项式转换为TeX格式

sci2for 将SCILAB 函数转换为FORTRAN

格式文件

texprint 按TeX 格式输出SCILAB 对象translatepaths 将子目录下的所有MATLAB文件转换为SCI文件格式

FORTRAN内部函数库

FORTRAN内部函数 用FORTRAN解题往往要用到一些专门运算,如求三角函数sinx, cosx,对数lnx,指数ex,求一组数中最大数和最小数等。 FORTRAN提供了一些系统函数(称为内部函数)来完成这些运算。程序设计者不必自己设计进行这些运算的语句组(即程序段或子程序),只需写出一个函数的名字以及给出一个或若干个自变量,就可以得到所需的值,例如: SQRT(4.0)求出4.0的平方根, SIN(2.0)求出2(弧度)的正弦值, EXP(3.5)求出e3.5, LOG(3.0)求出3, 常用的函数如下表,FORTRAN77提供的全部函数明细见FORTRAN77内部函数。 函数名含义应用例子相当于数学上的运算 ABS 求绝对值ABS(A) |a| EXP 指数运算EXP(A) e^a SIN 正弦值SIN(X) sin x COS 余弦值COS(X) cos x ASIN 反正弦ASIN(X) sin^(-1)a ACOS 反余弦ACOS(X) cos-1a TAN 正切TAN(X) tan x ATAN 反正切ATAN(A) tan^(-1)a LOG 自然对数LOG(A) lna,或loge(a) LOG10 常用对数LOG10(A) log10a INT 取整INT(A) int(a),取a的整数部分 MOD 求余MOD(A1,A2) a - int(a1/a2)*a2 SIGN 求符号SIGN(A1,A2) |a1|(若a2>0) -|a1|(若a2<0) REAL 转换为实型REAL(I) MAX 求最大值MAX(A1,A2,A3) max(a1,a2,a3) MIN 求最小值 MIN(A1,A2,A3) min(a1,a2,a3) 说明: (1)FORTRAN77将这些系统函数分别编成一个个子程序,组成函数库,存贮于外部介质(如磁盘)上。在完成源程序的编译之后,用LINK命令实现连接,即将已翻译成二进制指令的目标程序与函数库连接。也就是将程序中出现函数名的地方用函数库中相应的一组指令代入之,组成一个统一的“可执行目标块”。例如,程序中出现一个SIN函数,在连接时就将一组二进制指令(它们是实现求正弦值的运算的)直接插入到程序中出现SIN的地方。由于是插入到程序内部的,所以称为“内部函数”。 (2)一个内部函数要求一个或多个自变量。例如,SQRT函数只能有一个自变量SQRT(4.6),MOD函数要求两个自变量MOD(8,3),MAX和MIN函数要求两个以上自变量MAX(6,-8,10),MIN(-6,8,0)。当自变量个数规定为2个时,自变量的顺序不应任意颠倒,MOD(8,3)表示8被3除的余数,其值为2,而MOD(3,8)则表示3被8除的余数,其值为3。当自变量个数>2时,自变量的顺序无关,MAX(6,8,10)和MAX(8,10,6)结果是一样的。

fortran语法手册

1 FORTRAN77四则运算符 + - * / ** (其中**表示乘方) 在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→() 2 FORTRAN77变量类型 2.1 隐含约定:I-N规则 凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。 如IMPLICIT REAL (I,J) 三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。 2.4 数组的说明与使用 使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例: DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3) REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2) 10FORMAT(1X,5(A2,I2,1X,A2,I4)) 2.5 使用DATA语句给数组赋初值 变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如 DATA A,B,C/-1.0,-1.0,-1.0/ DATA A/-1.0/,B/-1.0/,C/-1.0/ DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)

DATA CHN/10*' '/INTEGER NUM(1000) DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/ 3 FORTRAN77程序书写规则 程序中的变量名,不分大小写; 变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效; 一行只能写一个语句; 程序的第一个语句固定为PROGRAM 程序名称字符串 某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容; 某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容; 某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行; 某行的第7至72字符位为语句区,语句区内可以任加空格以求美观; 某行的第73至80字符位为注释区,80字符位以后不能有内容。 4 FORTRAN77关系运算符 .GT. 大于 .GE. 天于或等于 .LT. 小于 .LE. 小于或等于 .EQ. 等于 .NE. 不等于 .AND. 逻辑与 .OR. 逻辑或 .NOT. 逻辑非 .EQV. 逻辑等 .NEQV. 逻辑不等 运算符优先级由高到低顺序为:()→**→*或/→+或-→.GT.或.GE.或.LT. 或.LE.或.EQ.或.NE.→.NOT.→.AND.→.OR.→.EQV.或.NEQV 5 FORTRAN77语句

codeblocksideforfortranwindows上的完整使用心得

CodeBlocks IDE for Fortran windows上的完整使用心得 Code::Blocks IDE for Fortran windows上的完整使用心得作者: 锐利的碎片(站内联系TA) 发布: 2011-12-13 其实这个ide我以前有发过,不过最近还是很多人问windows上的fortran ide。emacs和vim是很好了,不过怕麻烦的人也还很多。于是再开帖介绍一下这个ide以及在windows下的使用。顺便为最近某事情攒下人品。1 介绍:Code::Blocks IDE for Fortran 是基于Code::Blocks添加fortran支持得到的一个分支版本。不过原本CB就对gfortran 支持很好,只是需要一些配置。而修改版加强了对fortran 的支持并基本完整的包含了fortran03和08语法的高亮和提示(这个看各人习惯了,我觉得还不是很烦就是了)。对c 和fortran的混合编程也有很好的支持。2 安装使用首先安装mingw,在https://www.sodocs.net/doc/9a15108615.html,/projects/mingw/files/下载网络安装程序后安装,安装时选择所需的编译器,推荐同时安装msys,最简单的就是全装。然后安装ide,cbf可以从http://darmar.vgtu.lt/index.php这里下载,下载得到的是一个压缩文件,解压安装后执行主程序即可,默认程序配置在系统用户目录下,可以使用portable脚本在程序目录下保存配置。安装后运行程序,会提示选择默认编译器,这个是全局的默认编译器,如果程序探测到支持的编译器会显示

CALYPSO教程

U s e r' s G u i d e CALYPSO version 1.3.0 October 28, 2011 Written by Yanming Ma, Yanchao Wang, Jian Lv and Li zhu State Key Laboratory of Superhard Materials, Jilin University, Changchun 130012, China Please contact with Yanchao Wang (wyc09@https://www.sodocs.net/doc/9a15108615.html,), Jian Lv (jianlv10@https://www.sodocs.net/doc/9a15108615.html,), Li Zhu (zhuli10@https://www.sodocs.net/doc/9a15108615.html,) and Yanming Ma (mym@https://www.sodocs.net/doc/9a15108615.html,) for any technical questions or any bugs. https://www.sodocs.net/doc/9a15108615.html,/YanmingMa/mym.htm Copyright ? 2011 Jilin University. All Rights Reserved.

CONTENTS 1. INTRODUCTION (3) 2. COMPILATION (4) 3. EXECUTION OF THE PROGRAM (4) 4. INPUT FILE (5) 5. OUTPUT FILES (11) 6. THE RESULTS ANALYSIS (12) 7. SOME PUBLICATIONS FROM USE OF CALYPSO (13) 8. FUTURE DEVELOPMENT (13) 9. ACKNOWLEDGMENTS (13)

(完整)Fortran经典编程语言笔记(你值得拥有)

FORTRAN笔记 2014.10.07 目录 第七讲_FORTRAN的基本知识.ppt (2) FORTRAN语言程序设计初步 (2) FORTRAN源程序的书写格式(以77为例) (2) 变量 (2) 变量类型 (2) 算术运算符和运算优先级 (3) 赋值语句 (3) 参数语句(PARAMETER语句) (3) END语句 (3) PAUSE语句 (3) 逻辑运算和选择结构 (4) 关系表达式 (4) FORTRAN中数组的定义及使用 (4) 其他 (5) 1. fortran语言定义CHARACTER*6 TTL(14,3),CNAM(400)是什么意思? (5) 2. fortran里character*10 是什么意思 (5) 3. Fortran中kind是什么函数? (5)

第七讲_FORTRAN的基本知识.ppt FORTRAN语言程序设计初步 FORTRAN是Formula Translation的缩写,意为“公式翻译”,它是为科学、工程问题或企事业管理中的那些能够用 数学公式表达的问题而设计的,其数值计算的功能较强。 常用的是FORTRAN77和FORTRAN90两种标准。 1、一个程序由若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。 2、每一个程序单位都是以“END”结束的。 3、一个程序单位包括若干行。 1)语句行。由一个FORTRAN语句组成。 2)非语句行,即注释行。 4、FORTRAN程序中的语句可以没有标号,也可以有标号,根据需要而定。标号的作用是标志一个语句以便被其 他语句引用。 5、一个程序单位中各类语句的位置是有一定规定的。 6、FORTRAN源程序必须按一定的格式书写。 FORTRAN源程序的书写格式(以77为例) 每一行有80列,分别如下: 1、第1-5列为标号区。一行中第一列为“C”或“*”,该行即被认为是注释行。 2、第6列为“续行标志区”,如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。 3、第7-72列为语句区。 4、第73-80列,注释区。 变量 变量名:一个变量需要用一个名字(变量名)来识别。在同一个程序单位中不能用同一个变量名代表两个不同的变 量。 FORTRAN的变量名按以下规则选定: 1)第一个字符必须是字母,即变量名必须以字母开头; 2)在一个字母后面可以跟1-5为数字或字母。 如果选定的变量名超过6个字符,则只有前面6个字符有效。 注:在变量名中大写与小写字母是等价的。 变量类型 整型变量Integer、实型变量Real、双精度变量Double Precision、复型变量Complex、逻辑型变量Logical和字符型变量Character。 1、隐含约定(I-N规则) FORTRAN规定:在程序中的变量名,凡以字母I,J,K,L,M,N六个字母开头的,即认为该变量为整型变量。 在程序中,凡是变量名以字母I,J,K,L,M,N,i,j,k,l,m,n开头的变量被默认为整型变量,以其他字母开头的变量被 默认为实型变量。 2、用类型说明语句确定变量类型 1)INTEGER语句(整型说明语句) 2)REAL语句(实型说明语句) 3)DOUBLE PRECISION语句(双精度说明语句) 4)COMPLEX语句(复型说明语句) 5)LOGICAL语句(逻辑型说明语句)

FORTRAN知识点总结

F O R T R A N 第2章FORTRAN90基础知识: 程序单元的概念: fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。每个程序只有一个主程序单元。各单元体的程序体形式上相同。 程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。 语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。 字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。 数据结构: 整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回; 实型REAL ,小数形式和指数形式;复型COMPLEX (种别类

型参数值取实部与虚部中较大者); 字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成; 逻辑型LOGICAL。 派生数据类型TYPE; 数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A); 字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。 变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。 第3章基本语句: 类型说明语句:类型说明(种别说明),属性说明::变量名表 尽量避免把两个实数作相等或不相等的比较。淘汰隐式说明IMPLICIT NONE 种别说明:种别参数即对可移植数据精度和范围进行选择的机制 KIND(X) 返回变元X的种别参数值 SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。N指十进制有效位数,m指明值范围内以10为底的幂次。

fortran心得

Read 的规则: 按行读取,每次读一行,读完后光标自动跳到下一行的开头,空格和逗号代表结束(所以空格和逗号也是读取的一部分的话,需要使用“输入输出格式”) 如果想要将一行数据读入数组,代码为: Read(10,*) s(:,:,:) 不用规定输入输出格式,因为会根据s(:,:,:)确定需要读入的数字的个数,然后fortran会按部就班的读取,甚至文件中当前这一行的数字个数不足以填满s(:,:,:)的时候,read会自动跳到下一行继续搜索数字,直到填满s(:,:,:)为止。 但是需要注意给数组赋值的顺序:read会把它搜索到的第一个数字给s(1,1,1),第二个给s(2,1,1),第三个给s(3,1,1)… 程序9 1: 将read(unit=field,fmt="(A79)",iostat=status)buffer 中的A79改为A2,结果只输出每行的前两个字符,说明read是按整行整行读取的。 中间空了几行之后,空行之后的内容还是能被读取和输出,这说明,空行和空白是不一样的:空行也算是一种文本内容,因此不会终止读取,而空白意味着结束。 !读取文件 program main implicit none character(len=79)::filename="number.txt",buffer integer,parameter::field=10 integer::status=0 logical alive inquire(file=filename,exist=alive) if(alive)then open(unit=field,file=filename) do while(.true.) read(unit=field,fmt="(A79)",iostat=status)buffer if(status/=0)exit write(*,"(A79)")buffer end do else write(*,*)filename,"does't exist." end if pause stop end program main ============================================= 附number.txt =============================== 1234555666

fortran基本函数

FORTRAN 90标准函数(一) (2012-07-03 17:14:57) 转载▼ 分类:学习 标签: fortran 函数 教育 符号约定: ●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 ●s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 ●[…]表示可选参数。 ●*表示常用函数。

注:三角函数名前有C、D的函数为复数、双精度型函数。 注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。 表4 参数查询函数

atan2函数的值域是多少?我从网上找到一个fortran函数的日志,说此值域是-π~π,但正常反正切函数的值域应该是-π/2~π/2。对atan2函数不够了解,所以不知道你的答案对不对,我个人认为不对。我是用正常的反正切函数atan(v/u)来算的: FORTRAN: if (u>0..and.v>0.) dir=270-atan(v/u)*180/pi if (u<0..and.v>0.) dir=90-atan(v/u)*180/pi if (u<0..and.v<0.) dir=90-atan(v/u)*180/pi if (u>0..and.v<0.) dir=270-atan(v/u)*180/pi if (u==0..and.v>0.) dir=180 if (u==0..and.v<0.) dir=0 if (u>0..and.v==0.) dir=270 if (u<0..and.v==0.) dir=90 if (u==0..and.v==0.) dir=999 其中uv等于零的五种情况要单独挑出来,不然程序会有瑕疵。atan函数换成atand函数的话直接是度数,不用*180/pi 我四个象限和轴都试了,应该没错。 最需要注意的问题,一个是函数值域,另一个是uv矢量方向和风向是反着的,并且风向角度数是从正Y轴开始顺时针算,和三角函数里度数从正X轴开始逆时针算不一样。

Fortran中批量处理文件的方法总结

Fortran中批量处理文件的方法总结 —循环读取目录下的所有符合条件的文件 一、简单的介绍 在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。 对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦! 这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。 我总结的批处理方法大概可以用下面这个示意图来说明: | | |将文件目录写入一个文本文件,供fortran循环读取 |————手动输入文件名 |————运行程序之前命令行工具导出文件名 |————程序运行后,未开始计算之前,生成文件名 | ————调用CMD命令生成 | ————GETFILEINFOQQ方法生成 | ————调用WIN32API生成 | |在程序运行时动态生成文件名 | | 对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。第二种方法主要是说明其思路。 二、方法的介绍 1、将文件目录写入一个文本文件,供fortran循环读取

1.1、手动输入文件名 这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。 1.2、运行程序之前命令行工具导出文件名 这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。 a、从运行工具打开你的CMD窗口; b、转到要处理的当前目录(可省略):CD /d 路径,如: CD /d e:\test 这样可以快速到达e:\test目录 c、使用DIR命令列出文件目录信息到指定的文件,通常使用的 Dir *.*>新文件名这个命令在这里已经不能满足要求,因为会列出一堆对于我们处理而言无用的信息,现在要使用的命令是: DIR /b filter>newfile 注意,其中的filter为文件筛选,必须自己修改为所需的,比如你可以把它改成*.txt,这样,就会列出当前目录下的所有txt结尾的文件了。 Newfile就是你需要存放文件名的那个文件,比如可以是 dir.txt,这样就成了 dir /b*.txt>dir.txt,就会把当前目录下的所有文件都列出到dir.txt文件中,当然,由于dir.txt也在当前目录,所以也会被算进去,这在处理的时候是需要注意的,下面几种方法中同样考虑了这个问题。你可以选择手动删掉,或者把dir.txt这个文件存到其他地方去,或者,不要和你需要的文件具有相同的后缀也行,比如:dir /b *.txt>e:\dir.txt (假设当前目录是e:\test) 如果省略了第二步中的转到当前目录的话,就需要在dir命令后输入完整的路径了,而且新生成的文件也要选择有权限建立新文件的地方存放,比如你在c:\users目录下输入:dir /b e:\test\*.txt>e:\dir.txt,这个命令和上面先转到e:\test目录下的效果是一样的。 现在你是不是比较好奇,/b 是干嘛的,其实就是只列出文件名,不要其他的附件信息,比如创建时间,文件大小等等这些对于我们批处理无关的信息。 如果你想包含某个目录下的子目录,那么,就可以这样写: Dir /b/s filter>newfile /s就表示包含子目录,但是,这样会有一个问题,那就是,批处理的时候必须获得正确的路径才能操作,这样得到的子目录里面的文件不会有任何标志说

fortran95教程4章

第2篇. 计算的叙述 算法的每一个步骤,都必须给予确切的定义。对于算法当中所 考虑的每一种情况,每一个有待执行的动作,都必须严格地和 不含混地加以规定。…对于以描述算法作为目的而设计出来 的,采用了形式的定义的程序设计语言,或者说计算机语言, 它的每一个语句都必须有非常确切的意义。 ---- D.E.Knuth[1]《The Art of Computer Programming》 本质上FORTRAN就是一门语言,一门人与计算机赖以进行有效交流的语言,在这个意义上和我们使用的中文,英文等没有本质差别。现在假设要来描述一种大家都陌生的语言,那么总是要分成两个方面来描述,即一方面要描述这门语言的表象和形态,也就是它使用哪些符号,哪些词汇,一般的句式如何,怎样才能完整叙述一个任务之类;另一方面需要说明这门语言的语义,也就是说这门语言是如何用来表达我们需要它表达的意思的。 第4章基本上就是描述FORTRAN作为一种语言的基本形态,也就是书写这种语言的书写规则。 接下来几章则逐步说明如何用FORTRAN来表达我们的要求,或者反过来说,FORTRAN提供了些什么表达方式,以便我们用来向计算机提出合理的任务: ● 表达基本数据; ● 表达数据的结构; ● 完整地描述数据; ● 构造表达式; ● 驱动计算的赋值; ● 计算过程的结构控制; 在整个第二篇,我们将领略到FORTRAN 95是如何能够做到精致地描述计算的,而把一个问题阐述清楚了,就意味着问题已经解决了一大半。

[1]Donald E. Knuth (高纳德),Stanford University的The Art of Computer Programming荣休教授,而The Art of Computer Programming(计算机程序设计技巧)正是他的伟大著作的名称。洋洋七大卷的《The Art of Computer Programming》是当今全世界每一个计算机科学家所膜拜的圣经。1974年在该书刚完成前面很少一部分时,就给他带来了计算机科学家们梦寐以求的图灵奖。 第4章FORTRAN 95语言的形貌 要说明一门语言的形态,必须回答以下问题: ●它使用哪些符号来表达信息? ●它的词汇如何构成? ●它的语句如何构成? ●如何表达一个完整的任务? 具体的对于一门计算机语言,把这几个问题更加明确地转换过来,就是: ●它使用键盘上的哪些符号,各个符号有哪些用途? ●它的词汇如何由键盘字符构成?含有哪些固定的词汇?以及容许自由构成合法词汇 的规则是什么? ●它具有哪些固定的语句格式?以及容许自由构成合法语句的规则是什么? ●我们交待给计算机的任何任务,都必须明确说明任务的开始,执行步骤和完成,因 此一段完整的源代码应该具备什么样的形式?以及应该具备哪些要素? 本章就是要回答这些问题。 4.1 FORTRAN语言所使用的字符 从最抽象的层面来看,人与计算机的交流只是信息的交流,而信息总是需要依靠某种信号来表示,对于人来说,最方便的就是字符。而对于计算机来说,自然就是键盘所能敲出的那些字符(信号),因此下面就是要说明: ●FORTRAN 95能识别键盘上敲出的哪些字符? ●每个字符对于FORTRAN 95来说又意味着什么? 4.1.1 FORTRAN 95所使用的基本字符 按照FORTRAN 95标准的规定,一切FORTRAN 95的实现平台都必须使用下面表4-1所列出来的这个基本的字符集,或者说,这个字符集是所有遵循FORTRAN 95标准的编译

FORTRAN学习中的一些小心得

F O R T R A N学习中的一些小心 得 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

FORTRAN 心得 第一部分:一些小心得 1 Fortran不区分大小写 2 Fortran有5种基本数据类型,integer,real, character, logical, complex 3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用:: 4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用 real*8或real(8) 5 FORTRAN中FREE与FIXED两种格式do循环的区别: Fortran 95使用end do来结束循环。 Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。 Fortran 77中,经常会使用CONTINUE这个命令来结束循环。因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。 6 循环的流程控制: 循环中的cycle命令相当于c++里的continue命令,用于结束一次循环 循环中的exit命令好比c里面的break,用于结束循环 7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO 语句 7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。 8 fortran77中只能用单引号。(还有疑问,因为fixed format能用双引号) 9 逻辑运算符 == /= > >= < <= !Fortran90用法 .EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法 9 PAUSE,CONTINUE,STOP pause 暂停程序执行,按enter可继续执行 continue 貌似没什么用处,可用作封装程序的标志 STOP 命令用来结束程序,要谨慎使用 10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran的数组元素之间不能用空格。 11 数组的声明: Fortran 77中数组的声明,必须使用DIMENSION命令 Integer a; !先声明a是整型 Dimension a(10) !再声明a是大小为10的数组 Fortran 95中可以用简单的方法: Integer a(10) !最简单的方法

fortran安装

Intel Visual Fortran 2013 sp1 完整版下载及安装教程(windows) 10月16日版:更新支持win8.1、VS2013下载地址 【完整安装包】https://www.sodocs.net/doc/9a15108615.html,/akdlm/irc_nas/3651/w_fcompxe_ novsshell_2013_sp1.1.139.exe 【联网安装包】https://www.sodocs.net/doc/9a15108615.html,/akdlm/irc_nas/3651/w_fcompxe_ novsshell_online_2013_sp1.1.139.exe 【百度云副本】https://www.sodocs.net/doc/9a15108615.html,/s/18E41z 更新内容(翻译自官网,不妥之处恳请指正): 1.Intel? Fortran Compiler 更新至14.0.1 --增加/assume:std_value 编译选项 --增加/Q[a]xMIC-AVX512 编译选项 --增加/Qopt-gather-scatter-unroll=n 编译选项 2.Intel? Math Kernel Library 更新至11.1 Update 1 3.增加对Microsoft Windows 8.1*的支持 4.增加对日语的支持 5.修正问题 --https://www.sodocs.net/doc/9a15108615.html,/en-us/articles/intel-composer-xe-2013-compilers-sp1-fixes-list --https://www.sodocs.net/doc/9a15108615.html,/en-us/articles/intel-mkl-111-bug-fixes/ 安装说明: 1、下载安装包中的任意一个,前两个为官方地址,第三个为百度云副本(完整安装包) 2、运行w_fcompxe_novsshell_2013_sp1.0.103.exe 3、点击extract,解压安装包,解压完毕程序会自动运行安装向导 4、在第三步(Activation)中选择Choose alternative activation,点击下一步 5、选择Use a license file 6、选择你的授权许可文件(lib文件) 7、继续安装过程 备注: 1、安装Intel Visual Fortran Composer前,请确保已经安装了Microsoft Visual Studio 2010/2012/2013。若使用其他编辑器,需要手动配置编译环境。 Visual Studio官网:https://www.sodocs.net/doc/9a15108615.html,/。 微软旗下的DreamPark计划为在校大学生免费提供VS2013Pro版,地址:https://https://www.sodocs.net/doc/9a15108615.html, 2、安装过程中没有加以说明的步骤,请直接点击下一步。

Fortran常用函数

1、RANDOM_NUMBER Syntax ['sint?ks] n. 语法 CALL RANDOM_NUMBER (harvest结果) Intrinsic Subroutine(固有子程序):Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数 2、RNNOA/ DRNNOA (Single/Double precision) Generate pseudorandom numbers from a standard normal distribution using an acceptance/rejection method. 产生服从标准正态分布的随机数 Usage(用法) CALL RNNOA (NR, R) Arguments(参数) NR— Number of random numbers to generate. (Input) 要产生随机数的个数 R— Vector of length NR containing the random standard normal deviates. (Output) 输出长度为NR,随机正态分布的向量 Comments(注解) The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator. 程序RNSET可以用来初始化随机数发生器的种子 Example In this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution. INTEGER ISEED, NOUT, NR REAL R(5) EXTERNAL RNNOA, RNSET, UMACH C CALL UMACH (2, NOUT) NR = 5 ISEED = 123457 CALL RNSET (ISEED) CALL RNNOA (NR, R) WRITE (NOUT,99999) R 99999 FORMAT (' Standard normal random deviates: ', 5F8.4) END Output Standard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.2260

MATLAB课程设计实验体会

课程设计实验体会 学生姓名:李祥胜 学生学号:20120704 专业班级:光信息科学与技术 指导老师:miss Chen 学院:信息工程学院 题目: MATLAB学期实验总结

MATLAB概念及介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB集成环境主要包括五个部分:MATLAB语言、MATLAB工作环境、句柄图形、MATLAB数学函数库和数学建模、小波分析、MATLAB API(App lication Program Interface)。MATLAB语言是以数组为基本数据单位,包括控制流程语句、函数、数据结构、输人输出及面向对象等特点的高级语言。利用SIMULINK对系统进行仿真与分析,在进入虚拟实验环境后,不需要书写代码,只需使用鼠标拖动库中的功能模块并将它们连接起来,再按照实验要求修改各元器件的参数。通过虚拟实验环境建立实验仿真电路模型,可使一些枯燥的电路变得有趣味,复杂的波形变得形象生动,使得各种复杂的能量转换过程比较直观地呈现。 1.1、MATLAB语言特点及优势 1.1.1、语言特点 MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB的最突出的特点就是简洁。MATLAB用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB 给用户带来的是最直观、最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。 (1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。 (2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短,具体运算符见附表。 (3)MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。 (4)语法限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。 (5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

fortran编译器操作

关于fortran语言的编译器使用问题 此文是一个简明教程,仅适合初学者来使用。老鸟们大牛们就不用在看了。本文档的目的是为了方便初学者快速的掌握基本的fortran编译器的使用。 一、关于cvf(compaq virtual fortran) CVF操作方便,限制不多。一般常用的有两种新建工程的方法: a)打开cvf,点击新建file----new,弹出选择对话框,简单的程序可以选择fortran console application。在左侧project name处填写工程名字,在location处填写(选择)工程保存路径。注意cvf中要求不允许出现汉语路径。操作顺序图如下 第一步: 第二步:

第三步: 第四步:运行

至此,所有步骤完成。 b)直接打开cvf,点击新建文档(new)然后单击保存,弹出保存对话框,选择保存路径及文件夹, 文件名改为“工程名.f90”格式此处注意如果是fortran自由格式,请保存为*.f90或*.f95格式,如果是固定格式请保存为*.for或*.f格式。因为编译器是根据后缀的不同调用不同的语言编译器,否则将出错。保存文件的路径和文件夹即为该工程所在的路径和文件夹。同样不能有汉语。示意图如下:第一步 第二步、

第三步、 至此,所有的工程完成。

二、关于CVF的调试(debug) 在相应代码编辑框左侧发灰色的竖线部分,鼠标变为反三角方向的形状时即可右键鼠标,选择insert/remove BreakPoint选项,在代码左侧可以看到一个红色的标示(代码行尽量不要设在代码最后。可以设置到自认为可能发生错误的地方。或者尽量靠前设置),此时就可以按F5进入调试状态。可以在watch窗口查看各个变量,数组的值与内容。按F11进行单步运行。查看错误出处。具体的更细致的调试,请参看相关文献或书籍。这类书籍不少。 具体操作如下:

常用基本函数

R语言基本函数 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 length:求长度 subset:求子集 seq,from:to,sequence:等差序列 rep:重复 NA:缺失值 NULL:空对象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:对象属性 mode,typeof:对象存储模式与类型 names:对象的名字属性 二、字符串处理 character:字符型向量 nchar:字符数 substr:取子串 format,formatC:把对象用格式转换为字符串paste,strsplit:连接或拆分 charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换 三、复数 complex,Re,Im,Mod,Arg,Conj:复数函数 四、因子 factor:因子 codes:因子的编码 levels:因子的各水平的名字 nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子 table:交叉频数表 split:按因子分组 aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数 数学 一、计算 +, -, *, /, ^, %%, %/%:四则运算 ceiling,floor,round,signif,trunc,zapsmall:舍入 max,min,pmax,pmin:最大最小值 range:最大值和最小值 sum,prod:向量元素和,积 cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx fun:插值 diff:差分 sign:符号函数 二、数学函数 abs,sqrt:绝对值,平方根 log, exp, log10, log2:对数与指数函数 sin,cos,tan,asin,acos,atan,atan2:三角函数 sinh,cosh,tanh,asinh,acosh,atanh:双曲函数 beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数 fft,mvfft,convolve:富利叶变换及卷积 polyroot:多项式求根 poly:正交多项式 spline,splinefun:样条差值 besselI,besselK,besselJ,besselY,gammaCody:Bessel函数 deriv:简单表达式的符号微分或算法微分

相关主题