fortran基本函数

合集下载

fortran函数 -回复

fortran函数 -回复

fortran函数-回复Fortran (Formula Translation)是一种编程语言,被广泛用于科学和工程领域的高性能计算。

它的诞生可以追溯到上世纪50年代,当时由IBM 的John Backus领导的团队开发出了这个语言。

Fortran的设计目标是为科学计算提供一个强大而高效的编程工具,让科学家和工程师能够更方便地进行数值计算和数学模拟。

在本文中,我们将一步一步回答关于Fortran函数的问题,包括其语法、特性和如何使用它们来解决实际的科学计算问题。

第一步:了解Fortran函数的语法Fortran函数的语法遵循一定的规则,包括函数名称、参数列表和返回值类型。

一个基本的Fortran函数的语法如下:fortranfunction 函数名(参数列表) 结果类型! 函数体statements...end function在函数体内,你可以编写各种语句来实现特定的功能。

函数名可由字母、数字和下划线组成,并且不区分大小写。

参数列表指定了函数所需的输入变量,可以是任何Fortran数据类型,包括整数、实数和复数等。

结果类型定义了函数的返回值类型。

第二步:学习Fortran函数的特性Fortran函数具有许多有用的特性,使其成为科学计算中的瑞士军刀。

以下是一些Fortran函数的特性:1. 强大的数学库:Fortran内置了丰富的数学函数库,包括三角函数、指数函数、对数函数和特殊函数等。

这些函数提供了高精度和高效率的数学计算能力。

2. 数组操作:Fortran是一种面向科学计算的语言,对数组操作提供了很好的支持。

你可以在函数中传递数组作为参数,并对其进行各种运算和处理。

3. 模块化编程:Fortran支持模块化编程,可以把函数组织成模块,使得代码更加可读和易于维护。

模块化编程还可以提高代码的复用性,减少重复工作。

4. 高性能计算:Fortran被设计为一种高性能计算语言,具有出色的执行速度和内存管理能力。

fortran里的exp用法

fortran里的exp用法

fortran里的exp用法Fortran是一种高级编程语言,经常用于科学计算和数值分析。

其中一个常用的内置函数是exp(),用于计算以自然对数底e为底的指数函数。

在Fortran中,exp()函数的语法如下所示:```result = EXP(x)```其中,x是作为指数的实数或复数,result是计算结果。

exp()函数返回e的x次幂,即e^x。

该函数的返回值类型与x的类型相同,可以是实数或复数。

当x为实数时,计算结果也为实数;当x为复数时,计算结果为复数。

下面是一些使用exp()函数的示例:1. 计算e的平方:```fortranprogram exp_exampleimplicit nonereal :: x, resultx = 2.0result = EXP(x)write(*,*) "e的平方 = ", resultend program exp_example```输出结果:e的平方 = 7.3890562. 计算e的负数次幂:```fortranprogram exp_exampleimplicit nonereal :: x, resultx = -1.0result = EXP(x)write(*,*) "e的负一次幂 = ", result end program exp_example```输出结果:e的负一次幂 = 0.3678794 3. 计算复数的指数函数:```fortranprogram exp_exampleimplicit nonecomplex :: z, resultz = (1.0, 1.0)result = EXP(z)write(*,*) "复数的指数函数 = ", resultend program exp_example```输出结果:复数的指数函数 = 1.468693+2.287355i在Fortran中,exp()函数可以非常方便地进行指数计算。

fortran常用函数表

fortran常用函数表
ZEXT(x)
用0向左侧扩展x。x:I、L,结果:I
表2三角函数
函数名
说明
ACOS(x)*
求x的反余弦arccos(x)。x:R,结果类型同x,结果值域:0~π
ACOSD(x)*
求x的反余弦arccos(x)。x:R,结果类型同x,结果值域:0~180°
ASIN(x)*
求x的反正弦arcsin(x)。x:R,结果类型同x,结果为弧度,值域:0~π
表5实数检测和控制函数
函数名
说明
EXPONENT(x)*
求实数x机内编码表示的指数值。x:R,结果:I
FRACTION(x)*
求实数x机内编码表示的小数值。x:R,结果类型同x
NEAREST(x,s)
根据s的正负号求最接近x的值。x:R,结果:R,且不为0
RRSPACING(x)
求x与系统最大数之间的差值。x:R,结果类型同x
ATAN2(y,x)
求x的反正切arctg(y/x)。y:R,x和结果类型同x,结果值域:-π~π
ATAN2D(y,x)
求x的反正切arctg(y/x)。y:R,x和结果类型同x,结果值域:-180~180°
COS(x)*
求x的余弦cos(x)。x:R、C,x取值弧度,结果类型同x
COSD(x)*
求x的余弦cos(x)。x:R,x取值度,结果类型同x
COSH(x)
求x的双曲余弦ch(x)。x:R,结果类型同x
COTAN(x)*
求x的余切ctg(x)。x:R,x取值度,结果类型同x
SIN(x)*
求x的正弦sin(x)。x:R、C,x取值弧度,结果类型同x
SIND(x)*
求x的正弦sin(x)。x:R,x取值度,结果类型同x

Fortran常用函数

Fortran常用函数

1、RANDOM_NUMBERSyntax ['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可以用来初始化随机数发生器的种子ExampleIn this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution.INTEGER ISEED, NOUT, NRREAL R(5)EXTERNAL RNNOA, RNSET, UMACHCCALL UMACH (2, NOUT)NR = 5ISEED = 123457CALL RNSET (ISEED)CALL RNNOA (NR, R)WRITE (NOUT,99999) R99999 FORMAT (' Standard normal random deviates: ', 5F8.4)ENDOutputStandard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.22603、RESHAPEIntrinsic Function(内部函数)Constructs an array of a specified shape from the elements of another array. 构造规定形式的数组Syntax(语法)result = RESHAPE (source, shape [ , pad][ , order])source(Input) Any type. Array whose elements will be taken in standard Fortran array order (see Remarks), and then placed into a new array.shape(Input) Integer. One-dimensional array that describes the shape of the output array created from elements of source. 描述输出数组的大小的一维数组,The elements of shape are the sizes of the dimensions of the reshaped array in order. If pad is omitted 省略, the total size specified by shape must be less than or equal to source.pad 可选参数(Optional; input) Same type as source. Must be an array. If there are not enough elements in source to fill the result array, elements of pad are added in standardFortran array order. If necessary, extra copies of pad are used to fill the array.order 可选参数(Optional; input) Integer. One-dimensional array. Must be the same length as shape.Permutes the order of dimensions in the result array. The value of order must be a permutation of (1, 2,...n) where n is the size of shape.Return Value(返回值)The result is an array the same data type and kind as source and a shape as defined in shape.ExamplesINTEGER AR1( 2, 5)REAL F(5,3,8)REAL C(8,3,5)AR1 = RESHAPE((/1,2,3,4,5,6/),(/2,5/),(/0,0/),(/2,1/))! returns 1 2 3 4 5! 6 0 0 0 0!! Change Fortran array order to C array orderC = RESHAPE(F, (/8,3,5/), ORDER = (/3, 2, 1/))END4、SUMIntrinsic Function(内部函数)Sums elements of an array or the elements along an optional dimension. The elements summed can be selected by an optional mask.将数组中的元素求和Syntax(语法)result = SUM (array [ , dim] [ , mask])array(Input) Integer, real, or complex. Array whose elements are to be summed.dim 可选参数(Optional; input) Integer. Dimension along which elements are summed.1 ≤dim≤n, where n is the number of dimensions in array.mask 可选参数(Optional; input) Logical. Must be same shape as array. If mask is specified, only elements in array that correspond to .TRUE. elements in mask are summed.Return Value(返回值)Same type and kind as array and equal to the sum of all elements in array or the sum of elements along dimension dim. If mask is specified, only elements that correspondto .TRUE. elements in mask are summed. Returns a scalar if dim is omitted or array is one-dimensional. Otherwise, returns an array one dimension smaller than array.ExamplesINTEGER array (2, 3), i, j(3)array = RESHAPE((/1, 2, 3, 4, 5, 6/), (/2, 3/))! array is 1 3 5! 2 4 6i = SUM((/ 1, 2, 3 /)) ! returns 6j = SUM(array, DIM = 1) ! returns [3 7 11]WRITE(*,*) i, jEND5、SEEDRun-Time Subroutine Changes the starting point of the pseudorandom number generator. 改变随机数发生器的起始点ModuleUSE MSFLIBSyntax(语法)CALL SEED (iseed)iseed(Input) INTEGER(4). Starting point for RANDOM.Remarks(注解)SEED uses iseed to establish the starting point of the pseudorandom number generator.A given seed always produces the same sequence of values from RANDOM.If SEED is not called before the first call to RANDOM, RANDOM always begins with a seed value of one. If a program must have a different pseudorandom sequence each time it runs, pass the constant RND$TIMESEED (defined in MSFLIB.F90) to the SEED routine before the first call to RANDOM.ExampleUSE MSFLIBREAL randCALL SEED(7531)CALL RANDOM(rand)6、RANDOMPurposeRun-Time Subroutine Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数ModuleUSE MSFLIBSyntaxCALL RANDOM (ranval)ranval(Output) REAL(4). Pseudorandom number, 0 ≤ranval< 1, from the uniformdistribution.RemarksA given seed always produces the same sequence of values from RANDOM.If SEED is not called before the first call to RANDOM, RANDOM begins with a seed value of one. If a program must have a different pseudorandom sequence each time it runs, pass the constant RND$TIMESEED (defined in MSFLIB.F90) to SEED before the first call to RANDOM.All the random procedures (RANDOM, RAN, and RANDOM_NUMBER, and the PortLib functions DRAND, DRANDM, RAND, IRANDM, RAND, and RANDOM) use the same algorithms and thus return the same answers. They are all compatible and can be used interchangeably. (The algorithm used is a “Prime Modulus M Multiplicative Linear Congruential Generator,” a modified version of t he random number generator by Park and Miller in “Random Number Generators: Good Ones Are Hard to Find,” CACM, October 1988, Vol. 31, No. 10.)CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBExampleUSE MSFLIBREAL(4) ranCALL SEED(1995)CALL RANDOM(ran)7、FFT2BCompute the inverse Fourier transform of a complex periodic two-dimensional array.计算二维复数数组的逆傅里叶变换Usage(用法)CALL FFT2B (NRCOEF, NCCOEF, COEF, LDCOEF, A, LDA)Arguments(参数)NRCOEF— The number of rows of COEF. (Input) 数组COEF的行数NCCOEF— The number of columns of COEF. (Input) 数组COEF的列数COEF—NRCOEF by NCCOEF complex array containing the Fourier coefficients to be transformed. (Input) NRCOEF行NCCOEF列数组LDCOEF— Leading dimension of COEF exactly as specified in the dimension statement of the calling program. (Input)A—NRCOEF by NCCOEF complex array containing the Inverse Fourier coefficients of COEF. (Output) NRCOEF行NCCOEF列复数数组,包含数组COEF的逆傅里叶系数LDA— Leading dimension of A exactly as specified in the dimension statement of the calling program. (Input)Comments(注解)1.Automatic workspace usage isFFT2B4 * (NRCOEF + NCCOEF) + 32 + 2 *MAX(NRCOEF, NCCOEF) units, orDFFT2B8 * (NRCOEF + NCCOEF ) + 64 + 4 *MAX(NRCOEF, NCCOEF) units.Workspace may be explicitly provided, if desired, by use of F2T2B/DF2T2B. The reference isCALL F2T2B (NRCOEF, NCCOEF, A, LDA, COEF, LDCOEF,WFF1, WFF2, CWK, CPY)The additional arguments are as follows:WFF1— Real array of length 4 *NRCOEF + 15 initialized by FFTCI. The initialization depends on NRCOEF. (Input)WFF2— Real array of length 4 *NCCOEF + 15 initialized by FFTCI. The initialization depends on NCCOEF. (Input)CWK— Complex array of length 1. (Workspace)CPY— Real array of length 2 *MAX(NRCOEF, NCCOEF). (Workspace)2.The routine FFT2B is most efficient when NRCOEF and NCCOEF are the product of small primes.3.The arrays COEF and A may be the same.4.If FFT2D/FFT2B is used repeatedly, with the same values for NRCOEF and NCCOEF, then use FFTCI to fill WFF1(N = NRCOEF) and WFF2(N = NCCOEF). Follow this with repeated calls to F2T2D/F2T2B. This is more efficient than repeated calls toFFT2D/FFT2B.AlgorithmThe routine FFT2B computes the inverse discrete complex Fourier transform of a complex two-dimensional array of size (NRCOEF = N) ⨯ (NCCOEF = M). The method used is a variant of the Cooley-Tukey algorithm , which is most efficient when N and M are both products of small prime factors. If N and M satisfy this condition, then the computational effort is proportional to N M log N M. This considerable savings has historically led people to refer to this algorithm as the "fast Fourier transform" or FFT.Specifically, given an N⨯M array c = COEF, FFT2B returns in aFurthermore, a vector of Euclidean norm S is mapped into a vector of normFinally, note that an unnormalized inverse is implemented in FFT2D. The routine FFT2B is based on the complex FFT in FFTPACK. The package FFTPACK was developed by Paul Swarztrauber at the National Center for Atmospheric Research.ExampleIn this example, we first compute the Fourier transform of the 5 ⨯ 4 arrayfor 1 ≤n≤ 5 and 1 ≤m≤ 4 using the IMSL routine FFT2D. The resultis then inverted by a call to FFT2B. Note that the result is an array a satisfying a = (5)(4)x = 20x. In general, FFT2B is an unnormalized inverse with expansion factor N M.INTEGER LDA, LDCOEF, M, N, NCA, NRACOMPLEX CMPLX, X(5,4), A(5,4), COEF(5,4)CHARACTER TITLE1*26, TITLE2*26, TITLE3*26INTRINSIC CMPLXEXTERNAL FFT2B, FFT2D, WRCRNCTITLE1 = 'The input matrix is below 'TITLE2 = 'After FFT2D 'TITLE3 = 'After FFT2B 'NRA = 5NCA = 4LDA = 5LDCOEF = 5C Fill X with initial dataDO 20 N=1, NRADO 10 M=1, NCAX(N,M) = CMPLX(FLOAT(N+5*M-5),0.0)10 CONTINUE20 CONTINUECCALL WRCRN (TITLE1, NRA, NCA, X, LDA, 0)CCALL FFT2D (NRA, NCA, X, LDA, COEF, LDCOEF)CCALL WRCRN (TITLE2, NRA, NCA, COEF, LDCOEF, 0)CCALL FFT2B (NRA, NCA, COEF, LDCOEF, A, LDA)CCALL WRCRN (TITLE3, NRA, NCA, A, LDA, 0)CENDOutputThe input matrix is below1 2 3 41 ( 1.00, 0.00) ( 6.00, 0.00) ( 11.00, 0.00) ( 16.00, 0.00)2 ( 2.00, 0.00) ( 7.00, 0.00) ( 12.00, 0.00) ( 17.00, 0.00)3 ( 3.00, 0.00) ( 8.00, 0.00) ( 13.00, 0.00) ( 18.00, 0.00)4 ( 4.00, 0.00) ( 9.00, 0.00) ( 14.00, 0.00) ( 19.00, 0.00)5 ( 5.00, 0.00) ( 10.00, 0.00) ( 15.00, 0.00) ( 20.00, 0.00) After FFT2D1 2 3 41 ( 210.0, 0.0) ( -50.0, 50.0) ( -50.0, 0.0) ( -50.0, -50.0)2 ( -10.0, 13.8) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)3 ( -10.0, 3.2) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)4 ( -10.0, -3.2) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)5 ( -10.0, -13.8) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0) After FFT2B1 2 3 41 ( 20.0, 0.0) ( 120.0, 0.0) ( 220.0, 0.0) ( 320.0, 0.0)2 ( 40.0, 0.0) ( 140.0, 0.0) ( 240.0, 0.0) ( 340.0, 0.0)3 ( 60.0, 0.0) ( 160.0, 0.0) ( 260.0, 0.0) ( 360.0, 0.0)4 ( 80.0, 0.0) ( 180.0, 0.0) ( 280.0, 0.0) ( 380.0, 0.0)5 ( 100.0, 0.0) ( 200.0, 0.0) ( 300.0, 0.0) ( 400.0, 0.0)8、TIMEFPurposePortLib Function Returns the number of seconds since the first time it is called, or zero.ModuleUSE PORTLIBSyntaxresult=TIMEF ( )Return ValueREAL(8). Number of seconds that have elapsed since the first time TIMEF( ) was called. The first time called, TIMEF returns 0.0D0.CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBExampleUSE PORTLIBINTEGER i, jREAL(8) elapsed_timeelapsed_time = TIMEF() DO i = 1, 100000j = j + 1END DOelapsed_time = TIMEF() PRINT *, elapsed_time END。

fortran基本函数

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/piif (u<0..and.v>0.) dir=90-atan(v/u)*180/piif (u<0..and.v<0.) dir=90-atan(v/u)*180/piif (u>0..and.v<0.) dir=270-atan(v/u)*180/piif (u==0..and.v>0.) dir=180if (u==0..and.v<0.) dir=0if (u>0..and.v==0.) dir=270if (u<0..and.v==0.) dir=90if (u==0..and.v==0.) dir=999其中uv等于零的五种情况要单独挑出来,不然程序会有瑕疵。

atan函数换成atand函数的话直接是度数,不用*180/pi我四个象限和轴都试了,应该没错。

fortran 三角函数

fortran 三角函数

fortran 三角函数Fortran是一门古老的编程语言,最初由IBM公司在20世纪50年代开发。

它的全称是Formula Translation,因为最初它是用来进行科学和工程计算,特别是数值计算的语言。

Fortran具有很强的数学运算能力,自然而然地也就包含了各种三角函数的计算。

在Fortran中,三角函数可以使用数学库函数来计算。

Fortran的数学库包含了许多用于科学计算的函数,包括三角函数,对数函数,指数函数等等。

下面是Fortran中常见的三角函数及其用法:1. sin函数Sin函数可用于计算给定角度的正弦值。

Fortran命令为sin(x),其中x是以弧度为单位的角度。

要计算30度的sin值,可以使用以下Fortran代码:program sin_exampleimplicit nonereal :: sin30sin30 = sin(30*3.14159/180)write(*,*) sin30end program sin_example在这个例子中,我们将30度的值转换为弧度,并将结果存储在sin30变量中。

我们输出sin30的值。

2. cos函数Cos函数可用于计算给定角度的余弦值。

Fortran命令为cos(x),其中x是以弧度为单位的角度。

要计算60度的cos值,可以使用以下Fortran代码:program cos_exampleimplicit nonereal :: cos60cos60 = cos(60*3.14159/180)write(*,*) cos60end program cos_example在这个例子中,我们将60度的值转换为弧度,并将结果存储在cos60变量中。

我们输出cos60的值。

3. tan函数Tan函数可用于计算给定角度的正切值。

Fortran命令为tan(x),其中x是以弧度为单位的角度。

要计算45度的tan值,可以使用以下Fortran代码:program tan_exampleimplicit nonereal :: tan45tan45 = tan(45*3.14159/180)write(*,*) tan45end program tan_example在这个例子中,我们将45度的值转换为弧度,并将结果存储在tan45变量中。

Fortran标准函数库

Fortran标准函数库

附录 FORTRAN 90标准函数符号约定:●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。

●s:P表示s类型为P类型(任意kind值)。

s:P(k)表示s类型为P类型(kind 值=k)。

●[…]表示可选参数。

●*表示常用函数。

表1 数值和类型转换函数函数名 说明ABS(x)* 求x的绝对值∣x∣。

x:I、R, 结果类型同x; x:C, 结果:RAIMAG(x) 求x的实部。

x:C, 结果:RAINT(x[,kind])* 对x取整,并转换为实数(kind)。

x:R, kind:I, 结果:R(kind)AMAX0(x1,x2,x3,…)* 求x1,x2,x3,…中最大值。

x I:I, 结果:RAMIN0(x1,x2,x3,…)* 求x1,x2,x3,…中最小值。

x I:I, 结果:RANINT(x[,kind])* 对x四舍五入取整,并转换为实数(kind)。

x:R, kind:I, 结果:R(kind) CEILING(x)* 求大于等于x的最小整数。

x:R, 结果:ICMPLX(x[,y][,kind])) 将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R,kind:I, 结果:C(kind) CONJG(x) 求x的共轭复数。

x:C, 结果:CDBLE(x)* 将x转换为双精度实数。

x:I、R、C, 结果:R(8)DCMPLX(x[,y]) 将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R, 结果:C(8) DFLOAT(x) 将x转换为双精度实数。

x:I, 结果:R(8)DIM(x,y)* 求x-y和0中最大值, 即MAX(x-y,0)。

x:I、R, y的类型同x,结果类型同x DPROD(x,y) 求x和y的乘积,并转换为双精度实数。

x:R, y:R, 结果:R(8)FLOAT(x)* 将x转换为单精度实数。

Fortran常用函数

Fortran常用函数

1、RANDOM_NUMBERSyntax ['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可以用来初始化随机数发生器的种子ExampleIn this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution.INTEGER ISEED, NOUT, NRREAL R(5)EXTERNAL RNNOA, RNSET, UMACHCCALL UMACH (2, NOUT)NR = 5ISEED = 123457CALL RNSET (ISEED)CALL RNNOA (NR, R)WRITE (NOUT,99999) R99999 FORMAT (' Standard normal random deviates: ', 5F8.4)ENDOutputStandard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.22603、RESHAPEIntrinsic Function(内部函数)Constructs an array of a specified shape from the elements of another array. 构造规定形式的数组Syntax(语法)result = RESHAPE (source, shape [ , pad][ , order])source(Input) Any type. Array whose elements will be taken in standard Fortran array order (see Remarks), and then placed into a new array.shape(Input) Integer. One-dimensional array that describes the shape of the output array created from elements of source. 描述输出数组的大小的一维数组,The elements of shape are the sizes of the dimensions of the reshaped array in order. If pad is omitted 省略, the total size specified by shape must be less than or equal to source.pad 可选参数(Optional; input) Same type as source. Must be an array. If there are not enough elements in source to fill the result array, elements of pad are added in standardFortran array order. If necessary, extra copies of pad are used to fill the array.order 可选参数(Optional; input) Integer. One-dimensional array. Must be the same length as shape.Permutes the order of dimensions in the result array. The value of order must be a permutation of (1, 2,...n) where n is the size of shape.Return Value(返回值)The result is an array the same data type and kind as source and a shape as defined in shape.ExamplesINTEGER AR1( 2, 5)REAL F(5,3,8)REAL C(8,3,5)AR1 = RESHAPE((/1,2,3,4,5,6/),(/2,5/),(/0,0/),(/2,1/))! returns 1 2 3 4 5! 6 0 0 0 0!! Change Fortran array order to C array orderC = RESHAPE(F, (/8,3,5/), ORDER = (/3, 2, 1/))END4、SUMIntrinsic Function(内部函数)Sums elements of an array or the elements along an optional dimension. The elements summed can be selected by an optional mask.将数组中的元素求和Syntax(语法)result = SUM (array [ , dim] [ , mask])array(Input) Integer, real, or complex. Array whose elements are to be summed.dim 可选参数(Optional; input) Integer. Dimension along which elements are summed.1 ≤dim≤n, where n is the number of dimensions in array.mask 可选参数(Optional; input) Logical. Must be same shape as array. If mask is specified, only elements in array that correspond to .TRUE. elements in mask are summed.Return Value(返回值)Same type and kind as array and equal to the sum of all elements in array or the sum of elements along dimension dim. If mask is specified, only elements that correspondto .TRUE. elements in mask are summed. Returns a scalar if dim is omitted or array is one-dimensional. Otherwise, returns an array one dimension smaller than array.ExamplesINTEGER array (2, 3), i, j(3)array = RESHAPE((/1, 2, 3, 4, 5, 6/), (/2, 3/))! array is 1 3 5! 2 4 6i = SUM((/ 1, 2, 3 /)) ! returns 6j = SUM(array, DIM = 1) ! returns [3 7 11]WRITE(*,*) i, jEND5、SEEDRun-Time Subroutine Changes the starting point of the pseudorandom number generator. 改变随机数发生器的起始点ModuleUSE MSFLIBSyntax(语法)CALL SEED (iseed)iseed(Input) INTEGER(4). Starting point for RANDOM.Remarks(注解)SEED uses iseed to establish the starting point of the pseudorandom number generator.A given seed always produces the same sequence of values from RANDOM.If SEED is not called before the first call to RANDOM, RANDOM always begins with a seed value of one. If a program must have a different pseudorandom sequence each time it runs, pass the constant RND$TIMESEED (defined in MSFLIB.F90) to the SEED routine before the first call to RANDOM.ExampleUSE MSFLIBREAL randCALL SEED(7531)CALL RANDOM(rand)6、RANDOMPurposeRun-Time Subroutine Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数ModuleUSE MSFLIBSyntaxCALL RANDOM (ranval)ranval(Output) REAL(4). Pseudorandom number, 0 ≤ranval< 1, from the uniformdistribution.RemarksA given seed always produces the same sequence of values from RANDOM.If SEED is not called before the first call to RANDOM, RANDOM begins with a seed value of one. If a program must have a different pseudorandom sequence each time it runs, pass the constant RND$TIMESEED (defined in MSFLIB.F90) to SEED before the first call to RANDOM.All the random procedures (RANDOM, RAN, and RANDOM_NUMBER, and the PortLib functions DRAND, DRANDM, RAND, IRANDM, RAND, and RANDOM) use the same algorithms and thus return the same answers. They are all compatible and can be used interchangeably. (The algorithm used is a “Prime Modulus M Multiplicative Linear Congruential Generator,” a modified version of t he random number generator by Park and Miller in “Random Number Generators: Good Ones Are Hard to Find,” CACM, October 1988, Vol. 31, No. 10.)CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBExampleUSE MSFLIBREAL(4) ranCALL SEED(1995)CALL RANDOM(ran)7、FFT2BCompute the inverse Fourier transform of a complex periodic two-dimensional array.计算二维复数数组的逆傅里叶变换Usage(用法)CALL FFT2B (NRCOEF, NCCOEF, COEF, LDCOEF, A, LDA)Arguments(参数)NRCOEF— The number of rows of COEF. (Input) 数组COEF的行数NCCOEF— The number of columns of COEF. (Input) 数组COEF的列数COEF—NRCOEF by NCCOEF complex array containing the Fourier coefficients to be transformed. (Input) NRCOEF行NCCOEF列数组LDCOEF— Leading dimension of COEF exactly as specified in the dimension statement of the calling program. (Input)A—NRCOEF by NCCOEF complex array containing the Inverse Fourier coefficients of COEF. (Output) NRCOEF行NCCOEF列复数数组,包含数组COEF的逆傅里叶系数LDA— Leading dimension of A exactly as specified in the dimension statement of the calling program. (Input)Comments(注解)1.Automatic workspace usage isFFT2B4 * (NRCOEF + NCCOEF) + 32 + 2 *MAX(NRCOEF, NCCOEF) units, orDFFT2B8 * (NRCOEF + NCCOEF ) + 64 + 4 *MAX(NRCOEF, NCCOEF) units.Workspace may be explicitly provided, if desired, by use of F2T2B/DF2T2B. The reference isCALL F2T2B (NRCOEF, NCCOEF, A, LDA, COEF, LDCOEF,WFF1, WFF2, CWK, CPY)The additional arguments are as follows:WFF1— Real array of length 4 *NRCOEF + 15 initialized by FFTCI. The initialization depends on NRCOEF. (Input)WFF2— Real array of length 4 *NCCOEF + 15 initialized by FFTCI. The initialization depends on NCCOEF. (Input)CWK— Complex array of length 1. (Workspace)CPY— Real array of length 2 *MAX(NRCOEF, NCCOEF). (Workspace)2.The routine FFT2B is most efficient when NRCOEF and NCCOEF are the product of small primes.3.The arrays COEF and A may be the same.4.If FFT2D/FFT2B is used repeatedly, with the same values for NRCOEF and NCCOEF, then use FFTCI to fill WFF1(N = NRCOEF) and WFF2(N = NCCOEF). Follow this with repeated calls to F2T2D/F2T2B. This is more efficient than repeated calls toFFT2D/FFT2B.AlgorithmThe routine FFT2B computes the inverse discrete complex Fourier transform of a complex two-dimensional array of size (NRCOEF = N) ⨯ (NCCOEF = M). The method used is a variant of the Cooley-Tukey algorithm , which is most efficient when N and M are both products of small prime factors. If N and M satisfy this condition, then the computational effort is proportional to N M log N M. This considerable savings has historically led people to refer to this algorithm as the "fast Fourier transform" or FFT.Specifically, given an N⨯M array c = COEF, FFT2B returns in aFurthermore, a vector of Euclidean norm S is mapped into a vector of normFinally, note that an unnormalized inverse is implemented in FFT2D. The routine FFT2B is based on the complex FFT in FFTPACK. The package FFTPACK was developed by Paul Swarztrauber at the National Center for Atmospheric Research.ExampleIn this example, we first compute the Fourier transform of the 5 ⨯ 4 arrayfor 1 ≤n≤ 5 and 1 ≤m≤ 4 using the IMSL routine FFT2D. The resultis then inverted by a call to FFT2B. Note that the result is an array a satisfying a = (5)(4)x = 20x. In general, FFT2B is an unnormalized inverse with expansion factor N M.INTEGER LDA, LDCOEF, M, N, NCA, NRACOMPLEX CMPLX, X(5,4), A(5,4), COEF(5,4)CHARACTER TITLE1*26, TITLE2*26, TITLE3*26INTRINSIC CMPLXEXTERNAL FFT2B, FFT2D, WRCRNCTITLE1 = 'The input matrix is below 'TITLE2 = 'After FFT2D 'TITLE3 = 'After FFT2B 'NRA = 5NCA = 4LDA = 5LDCOEF = 5C Fill X with initial dataDO 20 N=1, NRADO 10 M=1, NCAX(N,M) = CMPLX(FLOAT(N+5*M-5),0.0)10 CONTINUE20 CONTINUECCALL WRCRN (TITLE1, NRA, NCA, X, LDA, 0)CCALL FFT2D (NRA, NCA, X, LDA, COEF, LDCOEF)CCALL WRCRN (TITLE2, NRA, NCA, COEF, LDCOEF, 0)CCALL FFT2B (NRA, NCA, COEF, LDCOEF, A, LDA)CCALL WRCRN (TITLE3, NRA, NCA, A, LDA, 0)CENDOutputThe input matrix is below1 2 3 41 ( 1.00, 0.00) ( 6.00, 0.00) ( 11.00, 0.00) ( 16.00, 0.00)2 ( 2.00, 0.00) ( 7.00, 0.00) ( 12.00, 0.00) ( 17.00, 0.00)3 ( 3.00, 0.00) ( 8.00, 0.00) ( 13.00, 0.00) ( 18.00, 0.00)4 ( 4.00, 0.00) ( 9.00, 0.00) ( 14.00, 0.00) ( 19.00, 0.00)5 ( 5.00, 0.00) ( 10.00, 0.00) ( 15.00, 0.00) ( 20.00, 0.00) After FFT2D1 2 3 41 ( 210.0, 0.0) ( -50.0, 50.0) ( -50.0, 0.0) ( -50.0, -50.0)2 ( -10.0, 13.8) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)3 ( -10.0, 3.2) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)4 ( -10.0, -3.2) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0)5 ( -10.0, -13.8) ( 0.0, 0.0) ( 0.0, 0.0) ( 0.0, 0.0) After FFT2B1 2 3 41 ( 20.0, 0.0) ( 120.0, 0.0) ( 220.0, 0.0) ( 320.0, 0.0)2 ( 40.0, 0.0) ( 140.0, 0.0) ( 240.0, 0.0) ( 340.0, 0.0)3 ( 60.0, 0.0) ( 160.0, 0.0) ( 260.0, 0.0) ( 360.0, 0.0)4 ( 80.0, 0.0) ( 180.0, 0.0) ( 280.0, 0.0) ( 380.0, 0.0)5 ( 100.0, 0.0) ( 200.0, 0.0) ( 300.0, 0.0) ( 400.0, 0.0)8、TIMEFPurposePortLib Function Returns the number of seconds since the first time it is called, or zero.ModuleUSE PORTLIBSyntaxresult=TIMEF ( )Return ValueREAL(8). Number of seconds that have elapsed since the first time TIMEF( ) was called. The first time called, TIMEF returns 0.0D0.CompatibilityCONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIBExampleUSE PORTLIBINTEGER i, jREAL(8) elapsed_timeelapsed_time = TIMEF() DO i = 1, 100000j = j + 1END DOelapsed_time = TIMEF() PRINT *, elapsed_time END。

FORTRAN_90标准函数

FORTRAN_90标准函数

附录 FORTRAN 90标准函数符号约定:
●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。

●s:P表示s类型为P类型(任意kind值)。

s:P(k)表示s类型为P类型(kind值=k)。

●[…]表示可选参数。

●*表示常用函数。

表1 数值和类型转换函数
FORTRAN 90程序设计
表2 三角函数
注:三角函数名前有C、D的函数为复数、双精度型函数。

表3 指数、平方根和对数函数
-394-
附录 FORTRAN 90标准函数简表
表4 参数查询函数
表5 实数检测和控制函数
表6 字符处理函数
­395­
FORTRAN 90程序设计
表7 二进制位操作函数
表8 数组运算、查询和处理函数
-396-
附录 FORTRAN 90标准函数简表
注: 参数m指逻辑型掩码数组,指明允许操作的数组元素。

缺省掩码数组指对数组所有元素进行操作。

­397­。

fortran atan函数

fortran atan函数

fortran atan函数Fortran是一种编程语言,拥有丰富的数学函数库。

其中,atan函数是Fortran中的一个重要函数,用于计算反正切值。

本文将介绍Fortran的atan函数及其相关知识。

一、什么是反正切函数?反正切函数,又称为反正切值,是数学中的一种三角函数。

它表示的是一个角的正切值等于某一给定值时,该角的度数。

在数学中,反正切函数常用arctan表示,其定义域为实数集,值域为区间[-π/2, π/2]。

二、Fortran中的atan函数Fortran中的atan函数用于计算给定值的反正切值。

它的函数原型为:```real(Kind=dp) function atan(x)real(Kind=dp), intent(in) :: x```其中,x为输入参数,表示要计算反正切值的数值。

函数返回值为反正切值,类型为实数。

三、使用Fortran计算反正切值的示例下面以一个简单的示例来演示如何使用Fortran中的atan函数计算一个数的反正切值。

假设我们要计算数字0.5的反正切值,代码如下:```program atan_exampleimplicit nonereal(Kind=dp) :: x, resultx = 0.5result = atan(x)write(*,*) 'The arctan of', x, 'is', resultend program atan_example```上述代码首先声明了一个实数类型的变量x和result,分别用于存储输入参数和计算结果。

然后,将要计算的数值赋给变量x,并调用atan函数计算反正切值,将结果存储在result变量中。

最后,使用write语句输出计算结果。

四、atan函数的注意事项在使用Fortran中的atan函数时,需要注意以下几点:1. 函数的输入参数x可以是任意实数,包括正数、负数和零。

2. atan函数的返回值为反正切值,类型为实数。

FORTRAN内存函数

FORTRAN内存函数
1
參數 Integer Real*4 Real*4 Real*8 Character*1 Integer Real*4 Integer Real*8 Integer Real*4 Real*8 Integer(0-255) Real*4 Real*8
Integer Real*4 Real*4 Real*8 Character*1 Real*4 Real*8 Integer Real*4 Integer Real*8 Integer Real*4 Real*8 Integer Real*4 Real*8 Integer Real*4 Real*8 Integer Real*4 Real*8 Integer Real*4 Real*4 Integer Real*8 Integer
FORTRAN 編譯軟體之內存函數
功 能 與 定 義 函數名稱 INT(X) 轉換為整數型態 IFIX(X) IDINT(X) ICHAR(C) REAL(X) FLOAT(I) SNGL(X) DBLE(X) 資料型態 函數值
資料型 態轉換 轉換為實數型態
轉換為倍準數型態 轉換為字元型態 刪除小數部份
四捨五入之近似值
絕對值 求取 餘數 符號 轉換 取正 差值 I-INT(I/J)*J X-INT(X/Y)*Y X-IDINT(X/Y)*Y IF y 0 then = x IF y<0 then = - x If x>y, then = x-y If x y, then = 0
選擇最大值
資料型態 函數值 Real*4 Real*4 Integer Real*8 Real*4 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Real*4 Real*8 Logical Logical Logical Logical Logical

Fortran函数大全(1)

Fortran函数大全(1)

Fortran函数大全(1)Fortran库参考SunStudio11SunMicrosystems,文件号码819-4757-102005年11月, 修订版A请将有关本文档的意见和建议提交至:/hwdocs/feedback版权所有#169;2005SunMicrosystems,Inc.,4150NetworkCircle,SantaCla ra,California95054,U.S.A.保留所有权利.美国政府权利-商业用途. 政府用户应遵循SunMicrosystems,Inc.的标准许可协议, 以及FAR (FederalAcquisitionRegulations, 即“联邦政府采购法规”)的适合条款及其补充条款. 必须依据许可证条款使用. 本发行版可能包含由第三方开辟的内容.本产品的某些部份可能是从BerkeleyBSD系统衍生出来的, 并获得了加利福尼亚大学的许可. UNIX是X/OpenCompany,Ltd.在美国和其他国家/地区独家许可的注册商标.Sun、SunMicrosystems、Sun徽标、Java和JavaHelp是SunMicrosystems,Inc.在美国和其他国家/地区的商标或者注册商标. 所有的SPARC商标的使用均已获得许可, 它们是SPARCInternational,Inc.在美国和其他国家/地区的商标或者注册商标. 标有SPARC商标的产品均基于由SunMicrosystems,Inc.开辟的体系结构.本服务手册所介绍的产品以及所包含的信息受美国出口控制法制约, 并应遵守其他国家/地区的进出口法律. 严禁将本产品直接或者间接地用于核设施、导弹、生化武器或者海上核设施, 也不能直接或者间接地出口给核设施、导弹、生化武器或者海上核设施的最终用户. 严禁出口或者转口到美国禁运的国家/地区以及美国禁止出口清单中所包含的实体, 包括但不限于被禁止的个人以及特殊指定的国家/地区的公民. 本文档按“原样”提供, 对于所有明示或者默示的条件、陈述和担保, 包括对适销性、适合性或者非侵权性的默示保证, 均不承担任何责任, 除非此免责声明的适合范围在法律上无效.目录阅读本书之前印刷约定xixiShell提示符支持的平台xiixiiixiii访问SunStudio软件和手册页访问编译器和工具文档访问相关的Solaris文档开辟者资源xviiixixxixxvixviii联系Sun技术支持Sun欢迎您提出意见1. Fortran库例程1.11.21.31–1数据类型注意事项64位环境1–21–1Fortran数学函数1.3.11.3.21.3.3单精度函数1–31–3双精度函数1–6四倍精度函数1–91–111–11iii1.4Fortran库例程参考1.4.1abort:终止和写入核心文件1.4.21.4.31.4.41.4.51.4.61.4.71.4.81.4.91.4.101.4.111.4. 121.4.131.4.141.4.151.4.161.4.171.4.181.4.191.4.201.4.21 1.4.221.4.231.4.241.4.251.4.261.4.271.4.281.4.29access:检查文件权限或者存在性1–11alarm:在指定的时间后调用子例程1–12bit:位函数:and、or、…、bit、setbit、…chdir:更改默认目录chmod:更改文件的模式1–131–161–171–18date:获取以字符串表示的当前日期dtime, etime:经过的执行时间exit:终止进程并设置状态1–201–231–23fdate:以ASCII字符串返回日期和时间flush:刷新逻辑单元的输出1–24fork:创建当前进程的副本1–25fseek,ftell:确定文件的位置以及重新确定文件的位置1–25fseeko64, ftello64:确定大文件的位置以及重新确定大文件的位置1–271–29getarg, iargc:获取命令行参数getc, fgetc:获取下一个字符1–301–32getcwd:获取当前工作目录的路径getenv:获取环境变量的值1–33getfd:获取外部单元编号的文件描述符getfilep:获取外部单元编号的文件指针getlog:获取用户的登录名getpid:获取进程ID1–341–341–361–361–36getuid, getgid:获取进程的用户ID或者组IDhostnm:获取当前主机的名称1–37idate:返回当前日期1–381–38ieee_flags, ieee_handler,sigfpe:IEEE算术index, rindex, lnblnk:子串的索引或者长度. 1–44inmax:返回最大正整数1–45itime:当前时间1–46ivFortran库参考2005年11月1.4.301.4.311.4.321.4.331.4.341.4.35kill:将信号发给进程1–471–47link, symlnk:链接到现有的文件loc:返回对象的地址1–491–491–50long, short:整型对象转换longjmp,isetjmp:返回至isetjmp设置的位置malloc, malloc64, realloc, free:分配/重新分配/释放内存1–521.4.36mvbits:挪移位字段1–561.4.37perror, gerror, ierrno:获取系统错误消息1–571.4.38putc, fputc:将字符写入逻辑单元1–581.4.39qsort, qsort64:对一维数组的元素进行排序1–601.4.40ran:生成一个介于0和1之间的随机数1–621.4.41rand, drand, irand:返回随机值1–631.4.42rename:重命名文件1–641.4.43secnds:获取以秒数表示的系统时间并减去参数1–651.4.44set_io_err_handler, get_io_err_handler:设置并获取I/O错误处理程序1–651.4.45sh:快速执行sh命令1–681.4.46signal:更改信号的操作1–691.4.47sleep:一段时间暂停执行1–701.4.48stat, lstat, fstat:获取文件状态1–701.4.49stat64, lstat64, fstat64:获取文件状态1–731.4.50system:执行系统命令1–731.4.51time, ctime, ltime, gmtime:获取系统时间1–741.4.52ttynam, isatty:获取终端端口的名称1–781.4.53unlink:删除文件1–791.4.54wait:等待进程终止1–802.Fortran95内部函数2–12.1标准Fortran95的通用内部函数2–1v目录2.1.12.1.22.1.32.1.42.1.52.1.62.1.72.1.82.1.92.1.102.1.1 12.1.122.1.132.1.142.1.152.1.162.1.172.1.182.1.192.1.202 .1.212.1.222.1.232.2参数存在查询函数数值函数数学函数字符函数。

Fortran中常用函数列表

Fortran中常用函数列表

Fortran中常⽤函数列表Y=INT(X) 转换为整数 ALL(所有型态) INTEGERY=REAL(X) 转换为实数 INTEGER REALY=DREAL(X) 取复数实部(倍精度) COMPLEX*16 REAL*8Y=DIMAG(X) 取复数虚部(倍精度) COMPLEX*16 REAL*8Y=CONJG(X) 共轭复数 COMPLEX COMPLEXY=DCONJG(X) 共轭倍精度复数 COMPLEX*16 COMPLEX*16Y=DBLE(X) 转换为倍精度实数 ALL REAL*8Y=CMPLX(X1,X2) 转换为复数 ALL,ALL COMPLEXY=DCMPLX(X1,X2) 转换为倍精度复数 ALL,ALL COMPLEX*16Y=IABS(X) 整数绝对值 INTEGER INTEGERY=DABS(X) 倍精度实数绝对值 REAL*8 REAL*8Y=CDABS(X) 倍精度复数绝对值 COMPLEX*16 REAL*8Y=MOD(X1,X2) 整数X1/X2之余数 INTEGER,INTEGER INTEGERY=DMOD(X1,X2) 倍精度实数X1/X2之余数 REAL*8,REAL*8 REAL*8Y=ISIGN(X1,X2) 取X1之值与X2之正负号 INTEGER,INTEGER INTEGERY=SIGN(X1,X2) 取X1之值与X2之正负号 REAL,REAL REALY=DSIGN(X,Y) 取X1之值与X2之正负号 REAL*8,REAL*8 REAL*8Y=DSQRT(X) X的倍精度平⽅根 REAL*8 REAL*8Y=CDSQRT(X) X的倍精度复数平⽅根 COMPLEX*16 COMPLEX*16Y=DEXP(X) X的倍精度指数 REAL*8 REAL*8Y=CDEXP(X) X的倍精度复数指数 COMPLEX*16 COMPLEX*16Y=DLOG(X) X的倍精度⾃然对数 REAL*8 REAL*8Y=CDLOG(X) X的倍精度复数⾃然对数 COMPLEX*16 COMPLEX*167Y=DLOG10(X) X的倍精度常⽤对数 REAL*8 REAL*8Y=DSIN(X) X的倍精度正弦函数 REAL*8 REAL*8Y=DCOS(X) X的倍精度余弦函数 REAL*8 REAL*8Y=DTAN(X) X的倍精度正切函数 REAL*8 REAL*8Y=DASIN(X) X的倍精度正弦反函数 REAL*8 REAL*8Y=DACOS(X) X的倍精度余弦反函数 REAL*8 REAL*8Y=DATAN(X) X的倍精度正切反函数 REAL*8 REAL*8Y=DSINH(X) X的倍精度双曲正弦函数 REAL*8 REAL*8Y=DCOSH(X) X的倍精度双曲余弦函数 REAL*8 REAL*8Y=DTANH(X) X的倍精度双曲正切函数 REAL*8 REAL*8。

fortran 字符串 比较函数

fortran 字符串 比较函数

fortran 字符串比较函数
在Fortran中,要比较字符串,可以使用内置的字符串比较函数。

Fortran中常用的字符串比较函数包括 `strcmp` 和
`strncmp`。

`strcmp` 函数用于比较两个字符串是否相等。

它返回一个整数值,如果两个字符串相等,则返回0;如果第一个字符串小于第二个字符串,则返回负值;如果第一个字符串大于第二个字符串,则返回正值。

`strncmp` 函数用于比较两个字符串的前n个字符是否相等。

它需要指定要比较的字符数目n,然后返回一个整数值,含义与
`strcmp`相似。

另外,在Fortran中,也可以使用逐字符比较的方式来比较字符串。

可以使用循环来逐个比较字符串中的字符,直到找到不相等的字符或者比较完所有字符为止。

除了以上提到的函数和方法,还可以使用Fortran的内置运算符进行字符串比较。

例如,使用 `==` 运算符来判断两个字符串是
否相等,使用 `/=` 运算符来判断两个字符串是否不相等。

总的来说,Fortran提供了多种方式来进行字符串比较,开发者可以根据具体的需求和情况选择合适的方法来进行字符串比较。

希望这些信息能够帮助到你,如果还有其他问题,请随时提出。

fortran语言内部函数及使用规范

fortran语言内部函数及使用规范

附录 FORTRAN 90标准函数符号约定:●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。

●s:P表示s类型为P类型(任意kind值)。

s:P(k)表示s类型为P类型(kind值=k)。

●[…]表示可选参数。

●*表示常用函数。

表1 数值和类型转换函数函数名说明ABS(x)*求x的绝对值∣x∣。

x:I、R,结果类型同x; x:C,结果:RAIMAG(x)求x的虚部。

x:C,结果:RAINT(x[,kind])*对x取整,并转换为实数(kind)。

x:R, kind:I,结果:R(kind)AMAX0(x1,x2,x3,…)*求x1,x2,x3,…中最大值。

x I:I,结果:RAMIN0(x1,x2,x3,…)*求x1,x2,x3,…中最小值。

x I:I,结果:RANINT(x[,kind])*对x四舍五入取整,并转换为实数(kind)。

x:R, kind:I,结果:R(kind) CEILING(x)*求大于等于x的最小整数。

x:R,结果:ICMPLX(x[,y][,kind]))将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R,kind:I,结果:C(kind) CONJG(x)求x的共轭复数。

x:C,结果:CDBLE(x)*将x转换为双精度实数。

x:I、R、C,结果:R(8)DCMPLX(x[,y])将参数转换为x、(x,0.0)或(x,y)。

x:I、R、C, y:I、R,结果:C(8)DFLOAT(x)将x转换为双精度实数。

x:I,结果:R(8)DIM(x,y)*求x-y和0中最大值,即MAX(x-y,0)。

x:I、R, y的类型同x,结果类型同x DPROD(x,y)求x和y的乘积,并转换为双精度实数。

x:R, y:R,结果:R(8)FLOAT(x)*将x转换为单精度实数。

x:I,结果:RFLOOR(x)*求小于等于x的最大整数。

fortran语言常用函数

fortran语言常用函数

fortran语⾔常⽤函数求绝对值的内部函数是abs,求数组最⼤值的内部函数是maxval,最⼩值minval,他们都⽀持数组运算,所以程序编起来相当简单。

⽐如⼀个数组为A(N),属实数域,其程序可写为integer,parameter :: N = 10real A(N)real A_abs_max, A_abs_min! set value for AA = (/ 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 resultsprint *, '绝对值最⼤数是:', A_abs_maxprint *, '绝对值最⼩数是:', A_abs_minend3. 编程语⾔结构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 dsqrt函数

fortran dsqrt函数

fortran dsqrt函数DSQRT函数是Fortran语言提供的双精度平方根函数。

Fortran是一种高级程序语言,用于科学计算和工程计算。

这种语言主要是为数值计算设计的,因此,它提供了一系列的常见数学函数。

DSQRT函数就是其中的一种,它用于计算双精度浮点数的平方根。

DSQRT函数的语法:double precision function dsqrt(x)real*8 x其中,x是一个双精度实数,它的平方根将被计算。

DSQRT函数返回一个双精度浮点数,它是参数x的平方根。

DSQRT函数可以在程序中任何地方使用,只需要在需要计算平方根的地方调用它即可。

例如,要计算一个双精度实数y的平方根,可以这样写程序:在上面的程序中,双精度实数y的值为16.0,DSQRT函数被调用来计算y的平方根,并将计算结果存储在另一个双精度变量y_sqrt中。

最后,程序使用WRITE语句将y和y_sqrt打印到标准输出设备上。

尽管DSQRT函数可以计算双精度实数的平方根,但是,它也有一些局限性。

首先,DSQRT函数只能处理正数。

如果传递给它的参数是负数,它将返回一个NaN值。

其次,DSQRT函数的计算精度有限,因此,在处理一些非常小或非常大的双精度实数时,它的计算结果可能会出现误差。

总之,DSQRT函数是Fortran语言提供的一个非常有用的数学函数。

它可以计算双精度实数的平方根,并在科学计算和工程计算中得到广泛应用。

然而,用户在使用DSQRT函数时,需要注意它的局限性,并且尽可能地选择算法和数据类型来避免误差。

fortran find函数

fortran find函数

fortran find函数Fortran是一种广泛用于科学计算和数值分析的编程语言,其内置了许多用于处理数组和矩阵操作的函数。

其中一个非常有用的函数就是find函数。

本文将详细介绍Fortran中的find函数以及其用法和特点。

在Fortran中,find函数用于在一个数组中搜索指定值或条件,并返回满足条件的元素的索引。

它可以帮助我们快速找到数组中满足我们需求的数据,从而进行进一步的处理和分析。

find函数的基本语法如下:```index = find(array, value [, dim])```其中,array是待搜索的数组,value是要搜索的值,dim是可选参数,用于指定在哪个维度上进行搜索。

如果不指定dim,则默认在整个数组上进行搜索。

find函数的返回值是一个整数,表示满足条件的元素在数组中的索引。

如果没有找到满足条件的元素,则返回0。

下面通过一个简单的例子来演示find函数的用法。

假设我们有一个包含10个元素的数组arr,我们想找到数组中值为5的元素的索引。

可以使用如下代码实现:```program find_exampleimplicit noneinteger, parameter :: n = 10integer :: arr(n) = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]integer :: indexindex = find(arr, 5)if (index == 0) thenprint *, "未找到满足条件的元素"elseprint *, "满足条件的元素在数组中的索引为:", indexend ifend program find_example```运行上述代码,输出结果为:```满足条件的元素在数组中的索引为: 5```可以看到,find函数成功找到了数组中值为5的元素,并返回了其在数组中的索引。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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轴开始逆时针算不一样。

相关文档
最新文档