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常用函数
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里的gamma函数
以下是一个使用Fortran中gamma函数的简单例子:
program
real(8)::result
!设置x的值
=5.0
!调用gamma函数计算gamma(x)
resulma('') = 'result
end program
在上述示例中,gamma函数接受一个实数作为参数,并返回对应的gamma函数值。请注意,gamma函数通常被设计为处理实数,因此参数可以是非整数。
在实际使用中,你可能需要根据你的编译器和Fortran版本查看相关文档,以确保gamma函数的可用性和正确用法。不同的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 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 find函数
Fortran Find函数1. 简介Fortran是一种高性能科学计算语言,广泛用于数值计算和科学工程。
在Fortran 中,有许多内置函数可用于数组和字符串的操作。
其中一个常用的函数是Find函数,用于查找数组中的元素。
2. Find函数的语法和用法Find函数的语法如下:index = Find(array, value [, dim])其中,array是要搜索的数组,value是要查找的元素,dim是可选参数,指定在哪个维度上进行查找。
如果不指定dim,则默认在整个数组中查找。
Find函数返回一个整数值,表示查找到的元素在数组中的位置。
如果找不到该元素,则返回0。
下面是一个示例代码,演示了Find函数的用法:program find_exampleimplicit noneinteger :: array(5) =[1, 3, 5, 7, 9]integer :: indexindex = Find(array, 5)if (index == 0) thenprint *, "Element not found"elseprint *, "Element found at index", indexend ifend program find_example上述代码中,我们定义了一个包含5个元素的整数数组array,并使用Find函数查找值为5的元素。
如果找到了该元素,则输出其在数组中的位置;如果未找到,则输出提示信息。
3. Find函数的工作原理Find函数的工作原理是通过遍历数组中的元素,逐个与要查找的元素进行比较,直到找到匹配的元素或遍历完整个数组。
在Fortran中,数组的索引是从1开始的。
因此,在查找过程中,Find函数会从数组的第一个元素开始比较,直到找到匹配的元素或遍历到最后一个元素。
4. Find函数的应用场景Find函数在很多情况下都可以派上用场。
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。
常用C语言标准库函数
常用C语言标准库函数C语言编译系统提供了众多的预定义库函数和宏。
用户在编写程序时,可以直接调用这些库函数和宏。
这里选择了初学者常用的一些库函数,简单介绍了各函数的用法和所在的头文件。
1.测试函数Isalnum原型:int isalnum(int c)功能:测试参数c是否为字母或数字:是则返回非零;否则返回零头文件:ctype.hIsapha原型:int isapha(int c)功能:测试参数c是否为字母:是则返回非零;否则返回零头文件:ctype.hIsascii原型:int isascii(int c)功能:测试参数c是否为ASCII码(0x00~0x7F):是则返回非零;否则返回零头文件:ctype.hIscntrl原型:int iscntrl(int c)功能:测试参数c是否为控制字符(0x00~0x1F、0x7F):是则返回非零;否则返回零头文件:ctype.hIsdigit原型:int isdigit(int c)功能:测试参数c是否为数字:是则返回非零;否则返回零。
头文件:ctype.hIsgraph原型:int isgraph(int c)功能:测试参数c是否为可打印字符(0x21~0x7E):是则返回非零;否则返回零头文件:ctype.hIslower原型:int islower(int c)功能:测试参数c是否为小写字母:是则返回非零;否则返回零头文件:ctype.hIsprint原型:int isprint(int c)功能:测试参数c是否为可打印字符(含空格符0x20~0x7E):是则返回非零;否则返回零头文件:ctype.hIspunct原型:int ispunct(int c)功能:测试参数c是否为标点符号:是则返回非零;否则返回零头文件:ctype.hIsupper原型:int isupper(inr c)功能:测试参数c是否为大写字母:是则返回非零;否则返回零Isxdigit原型:int isxdigit(int c)功能:测试参数c是否为十六进制数:是则返回非零;否则返回零2.数学函数abs原型:int abs(int i)功能:返回整数型参数i的绝对值头文件:stdlib.h,math.hacos原型:double acos(double x)功能:返回双精度参数x的反余弦三角函数值头文件:math.hasin原型:double asin(double x)功能:返回双精度参数x的反正弦三角函数值头文件:math.hatan原型:double atan(double x)功能:返回双精度参数的反正切三角函数值头文件:math.hatan2原型:double atan2(double y,double x)功能:返回双精度参数y和x由式y/x所计算的反正切三角函数值头文件:math.hcabs原型:double cabs(struct complex znum)功能:返回一个双精度数,为计算出复数znum的绝对值。
FORTRAN95第01章-概述讲课讲稿
2.实型常数 实型常数有多种不同的表示形式。 (1)基本实常数形式 基本实常数形式与日常习惯写法相同,由
一个正(或负)号、整数部分、小数点和小数 部分组成。其中正号可以省略,并且允许没有 整数部分或小数部分,但小数点是必须的。例 如 0.0 .02 314. -27.567 256.0 +0.05 都是正确的表示形式。
16
二、FORTRAN语句 每个程序段和模块由若干条FORTRAN语句
组成,这些语句又分为可执行语句和非执行语 句。可执行语句在程序执行时使计算机产生 某种特定的操作,如赋值、输入输出、控制 转移等。非执行语句只是用于将某些信息
(如变量的类型、数组的维数及大小、数 据的输入输出格式等)通知编译程序,使编 译程序在编译源程序时按这些信息要求进行 处理。程序执行时非执行语句不会使计算机 产生任何操作。
据取值范围不同,处理方式不同,存储形式和书写形 式也不同。FORTRAN语言中有五种基本数据类型。
24
一、整型(INTEGER) 整型表示整数的类型,分长整型和短整型。在PC
机中长整型占4个字节(32bit),可保存的数值范围 在-2147483648~2147483647之间(-231 ~231-1);短整 型占2个字节,保存的数值范围在-32768~32767之间, 即(-215 ~215-1)。
有规定每行的第几个字符有什么作用: 每行最多可写132个字符; 叹号“!”后的内容都是注释; 如果需要写语句标号, 则标号可以紧挨着写在语句第1个字符
前面; 一行字符的最后如果是符号“&”,则表示下一行是该行的继
续。如果一行程序代码开头是符号&,则其上一行的最后非空格 符必须是一个&号, 且&号前不能有空格,表示该行是上一行的继 续。这种形式的续行允许把一个常数、变量名、关键字等分开放 在两行上。
fortran randn函数
fortran randn函数
Fortran中的randn函数是用于生成高斯分布随机数的函数。
它是Fortran标准库中的一个函数,可以通过使用"USE, INTRINSIC :: ISO_FORTRAN_ENV"导入该函数。
使用randn函数生成高斯分布随机数需要提供两个参数:平均值和标准差。
randn函数的返回值是一个浮点数,表示生成的高斯分布随机数。
例如,下面的代码将生成一个平均值为0,标准差为1的高斯分布随机数:
```
USE, INTRINSIC :: ISO_FORTRAN_ENV
REAL :: mean = 0.0
REAL :: std_dev = 1.0
REAL :: rand_num
CALL RANDOM_SEED()
CALL RANDOM_NUMBER(rand_num)
rand_num = SQRT(-2.0 * LOG(rand_num)) * COS(2.0 * PI() * rand_num) rand_num = rand_num * std_dev + mean
```
在这个例子中,首先使用RANDOM_SEED函数初始化随机数生成器。
然后使用RANDOM_NUMBER函数生成一个0到1之间的随机数。
接着,使用Box-Muller方法将生成的随机数转换为高斯分布随机数,并最终将其缩放到所需的平均值和标准差范围内。
需要注意的是,由于randn函数生成的随机数是伪随机数,因此在每次运行程序时生成的随机数序列可能不同。
IMSL:BLAS库函数简表,Fortran语言.docx
IMSL: BLAS库函数简表,Fortran语言= = = = = = = = = = = = = = = = = = = = = = = = = >< part 7: index =================table 1: imsl level 1 biasdouble complex double complex integer realset a vector to a constant value iset tess etlc zset noael copy a vectoricopy scopy dcopy ccopy zcopyscale vectorsscal dscal cscal zscalcsscal zdscalmultiply a vector by constant svcal dvcal cvcal zvcalcsvcal zdvcaladd a constant to a vector iadd sadd dadd zadd cadd subtract a vector fromconstant times vectoraddition of vector saxpy daxpy caxpyzaxpy swap two vectorsiswap sswap dswap cswap zswapdot product(内积、点乘) cdotc sdot zdotcdot product with higherprecision accumulation | | | czdotu | zqdotu ddot cdotu zdotu dsdot czdotczqdotcconstant plus dotsdsdot dqddot czcdot zqcdotsddoti dqdoti czdoti zqdoti sddota dqdota czdota zqdota hadamard product(zi^-xiyi,阿达玛积)I I shprod | dhprod二内积Iprecision accumulationczudot zqudot product with higherdot product using the accumulator元素的总和的丨丨丨丨丨丨一个向量| ISUM丨样品| DSUM和的绝对I丨丨丨丨丨值的元素I I丨丨丨丨一个向量I I sasum | dasum | scasum | dzasum欧氏或L2范数|丨丨丨丨丨一个向量(欧氏范数)丨丨snrm2 | dnrm2 | scnrm2 | dznrm2产品的元素I丨丨丨丨丨一个向量| | sprdct | dprdct指数有I元素I丨丨丨最小值I Ilmin | 是 | idmin指数有I元素I丨丨丨最大值I Umax | ismax | IDMAX指数有I元素I丨丨丨最小绝对值I | 思明I idamin | icamin | izamin指数有|元素|丨丨丨丨最大绝对值| isamax | idamax | icamax | izamax 构建一个吉文斯I丨丨丨丨平面旋转丨丨srotg | drotg应用平面旋转I丨丨丨丨丨srot Drot csrot zdrot构建一个I丨丨丨丨丨吉文斯变换丨丨srotmg | drotmg采用改进的吉文斯I丨丨丨丨丨转型 | | srotm | drotm | csrotm | zdrotm 构建一个户主变换shoutr dhoutr应用一个户主丨丨丨丨丨I 变换 | | shouap | dhouap 表2: 2级和3级BLAS IMSL操作I房I双復杂丨复I页I矩阵向量乘法,丨丨丨丨丨一般| SGEMV | dgemv | cgemv | zgemv | SGEMV矩阵向量乘法, 带状I sgbmv | dgbmv | cgbmv | zgbmv | sgbmv矩阵向量乘法,丨丨丨丨丨Hermitian chemv zhemv chemv矩阵向量乘法,丨丨丨丨丨对称带状丨丨丨chbmv | zhbmv | chbmv矩阵向量乘法,丨丨丨丨丨对称和房 | ssymv | dsymv | | | ssymv 矩阵向量乘法,对称带状丨ssbmv dsbmv ssbmv矩阵向量乘法,三角 | strmv | dtrmv | ctrmv | ztrmv | strmv矩阵向量乘法,丨丨丨丨丨'三角和带状I stbmv | dtbmv | ctbmv | ztbmv | stbmv矩阵向量解决,丨丨丨丨丨三角 | strsv | dtrsv | ctrsv | ztrsv | strsv矩阵向量解决,三角形和带状丨stbsv | dtbsv | ctbsv | ztbsv | stbsv 秩1矩阵更新,丨丨丨丨丨丨全面、真实的 | SGER | DGER | | | SGER秩1矩阵更新,丨丨丨丨丨丨一般的,复杂的,和丨丨丨丨丨转置 | | | cgeru | zgeru | cgeru秩1矩阵更新,丨丨丨丨丨丨一般的,复杂的,和丨丨丨丨丨共觇转置丨丨丨cgerc | zgerc | cgerc秩1矩阵更新,厄米共^1 I I I I I转置I丨丨雪儿I这儿I雪儿I二阶矩阵更新,丨丨丨丨丨丨厄米共辄I I丨丨丨丨转置| | | CHER2 | zher2 | cHER2秩1矩阵更新,丨丨丨丨丨丨对称和房 | ssyr | dsyr | | | ssyr二阶矩阵更新,丨丨丨丨丨丨对称和房 | ssyr2 | dsyr2 | | | ssyr2矩阵乘法,一般 I sgemm | DGEMM | cgemm | zgemm | sgemm ssymm dsymm csymm zsymm ssymm 矩阵乘法,秩K 的更新,丨丨丨丨丨对称丨 ssyrk | dsyrk | csyrk | zsyrk | ssyrk 秩K 的更新,矩阵乘法,SyininetriHermitianchemin zhemm chemmrank~2k 更新,对称丨ssyr2k | dsyr2k | csyr2k | zsyr2k | ssyr2krank~2k 更新,Hermitian cher2k zher2k cher2k矩阵乘法,丨丨丨丨丨丨三角 | stnnin | dtrirnn | ctrirnn | ztrmm | strmm矩阵求解,丨丨丨丨丨丨三角 | strsm | DTRSM | ctrsm | ztrsm | strsm。
fortran库参考
第3 章FORTRAN 77 和VMS 内函数本章列出了FORTRAN 77 f95 接受的一系列内函数,旨在帮助将传统的FORTRAN 77 程序迁移至Fortran 95。
在f95 中,本章列出的所有FORTRAN 77 和VMS 函数以及前一章列出的所有Fortran 95 函数都识别为内函数。
为了帮助从传统的FORTRAN 77 程序迁移至f95,使用-f77=intrinsics 进行编译会让编译器只将FORTRAN 77 和VMS 函数识别为内函数,但Fortran 95 函数不会识别为内函数。
属于Sun 扩展的ANSI FORTRAN 77 标准的内函数标有¤ 符号。
使用非标准内函数和库函数的程序可能无法移植到其他平台。
内函数在接受多种数据类型的参数时,有通用名称和专用名称。
通常,通用名称返回与参数具有相同数据类型的值。
但也有一些例外,如类型转换函数(表3–2)和查询函数(表3–7)。
这些函数也可以通过函数的某个专用名称进行调用,以便处理专用参数数据类型。
对于处理多个数据项的函数(例如sign(a1,a2)),所有数据参数的类型必须相同。
下表按以下几方面列出FORTRAN 77 内函数:内函数-描述函数的作用定义-数学定义参数数量-函数接受的参数的数量通用名称-函数的通用名称专用名称-函数的专用名称参数类型-与每个专用名称关联的数据类型函数类型-针对专用参数数据类型返回的数据类型注–编译器选项-xtypemap 会更改变量的缺省大小,并且对内在引用产生影响。
请参见3.4 备注以及《Fortran 用户指南》中有关缺省大小和对齐方式的介绍。
3.1 算术和数学函数本节详细介绍算术函数、类型转换函数、三角函数以及其他函数。
“a”代表函数的单个参数,“a1”和“a2”代表两个参数函数的第一个参数和第二个参数,“ar”和“ai”代表函数的复数参数的实部和虚部。
3.1.1 算术函数3.1.2 类型转换函数表3–2 Fortran 77 类型转换函数在ASCII 平台上(包括Sun 系统):ACHAR 是CHAR 的非标准同义词IACHAR 是ICHAR 的非标准同义词在非ASCII 平台上,ACHAR 和IACHAR 专门用于提供一种直接处理ASCII 的方法。
(完整版)fortran函数总结
附录C SCILAB 部分函数指令表(c)LIAMA. All rights reserved.(注解:本指令表只收集了部分常用指令, 有关全部指令请参照文档文件) + 加- 减* 矩阵乘数组乘 *.1. 通用指令^ 矩阵乘方数组乘方 ^.\ 反斜杠或左除help 在线帮助/ 斜杠或右除apropos 文档中关键词搜寻或.\ 数组除/.ans 缺省变量名以及最新表达式的运算结果== 等号~= 不等号clear 从内存中清除变量和函数< 小于exit 关闭SCILAB> 大于quit 退出SCILAB<= 小于或等于save 把内存变量存入磁盘>= 大于或等于exec 运行脚本文件&,and 逻辑与mode 文件运行中的显示格式|,or 逻辑或getversion 显示SCILAB 版本~,not 逻辑非ieee 浮点运算溢出显示模式选择: 冒号who 列出工作内存中的变量名( ) 园括号edit 文件编辑器[ ] 方括号type 变量类型{ } 花括号what 列出SCILAB 基本命令小数点 .format 设置数据输出格式, 逗号chdir 改变当前工作目录; 分号getenv 给出环境值// 注释号mkdir 创建目录= 赋值符号pwd 显示当前工作目录' 引号evstr 执行表达式' 复数转置号转置号 '.ans 最新表达式的运算结果2.运算符和特殊算符%eps 浮点误差容限, =2 -52≈2.22×10-16%i 虚数单位= √(-1)%inf 正无穷大%pi 圆周率,π=3.1415926535897....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函数大全(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中常⽤函数列表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。
第2章 Fortran95程序设计基础
n代表整数部分,m代表小数部分,不允许出现非 数值字符(如逗号、顿号和空格等)。
实型常量
对于实数,通过实型kind值确定实数的存储空 间大小、取值范围和最大有效位数(精度)。 实型kind值有两种4、8(缺省值为4)分别 表示单精度实数和双精度实数 。
实型常量
【例2-4】 判定下列实数,哪些是合法实数?哪些是非法 实数?说明原因。
% & < > ? $ _ 空格(Tab)
Fortran95的字符集
Fortran的源程序就是上述字符及符号按照词法、 语法和语义的规定对算法的描述。
在编写源程序时需要注意的是:
(1)除字符型常量外,源程序中不区分字母的大小 写,如语句 “ReaL a” 和 “real A”是等价的。 (2)字符集以外的可打印字符,只能出现在注释、 字符常量、字符串编辑符和输入输出记录中。
空间
字符类型可以表示的东西非常广,从键盘输入的 任何内容,不论是数字、字母、文本或任何特殊符号 都可以。
教材附录A的ASCII字符集里的字符就是这个类型
所能表示的所有字符。
逻辑类型 (logical)
表示逻辑判断的结果 ,只能有两种值:
“是”(true)
“否”(false) 也可以翻译成“对”、“错”,或 “真”、“假” 等等。
程序设计基础
——Fortran 95
第二章 Fortran95 程序设计基础 本章将介绍:
•字符集、标识符和关键字
•程序的书写格式
•数据类型
•常量和变量
•算术运算符和算术表达式 •标准函数
学习目标:
了解字符集、标识符和关键字
了解程序的固定书写格式
掌握程序的自由书写格式
fortran lnblnk函数
fortran lnblnk函数Fortran语言中的`lnblnk`函数用于返回字符串中最后一个非空格字符的位置。
它的语法如下:fortran.integer function lnblnk(string)。
character(len=) :: string.这个函数接受一个字符串作为输入,并返回一个整数值,指示字符串中最后一个非空格字符的位置。
如果字符串中只包含空格,则返回0。
下面是一个简单的示例,演示了如何在Fortran中使用`lnblnk`函数:fortran.program main.character(len=20) :: myString.integer :: position.myString = 'Hello, World! '。
position = lnblnk(myString)。
print, "The last non-blank character is at position ", position.end program main.在这个示例中,`lnblnk`函数被用来确定字符串`myString`中最后一个非空格字符的位置,并将结果存储在`position`变量中。
在这种情况下,由于字符串末尾有多个空格,所以`lnblnk`函数返回的值将是包含最后一个非空格字符的位置。
需要注意的是,`lnblnk`函数在Fortran 2003标准中被引入,因此在使用这个函数时需要确保编译器支持该标准。
总之,`lnblnk`函数是Fortran中用于确定字符串中最后一个非空格字符位置的有用工具,可以帮助程序员处理字符串操作中的相关问题。
fortran min函数
fortran min函数fortran min函数是Fortran(Formula Translation)编程语言中用于求解最小值的函数。
在科学计算、工程应用等领域具有广泛的应用。
本文将介绍Fortran min函数的实现方式、应用实例以及注意事项。
一、Fortran min函数简介在Fortran语言中,min函数用于寻找一组数中的最小值。
其一般形式为:```fortranfunction min(x, y)implicit nonereal(8), intent(in) :: x, yreal(8) :: minmin = xif (x > y) thenmin = yend ifend function min```二、Fortran min函数的实现方式Fortran min函数通过比较输入参数x和y的值,将较小者赋值给变量min。
以下是一个简单的实例:```fortranprogram mainimplicit nonereal(8) :: a, b, min_vala = 3.5b = 1.2min_val = min(a, b)write(*,*) "最小值为:", min_valend program main```运行上述程序,输出结果为:```最小值为:1.2```三、应用实例与代码展示以下是一个求解一组数中的最小值的示例:```fortranprogram min_exampleimplicit noneinteger, dimension(10) :: numsreal(8) :: min_valinteger :: i, min_index! 初始化一组整数do i = 1, 10nums(i) = iend do! 寻找最小值及其索引min_val = min(nums(1:10))min_index = minloc(nums(1:10))write(*,*) "最小值为:", min_valwrite(*,*) "最小值索引为:", min_indexend program min_example```运行上述程序,输出结果为:```最小值为:1最小值索引为:1```四、注意事项与技巧1.当调用Fortran min函数时,请确保输入参数为实型数据,否则可能会引发错误。
fortran pause 函数
fortran pause 函数
在Fortran中,`PAUSE` 是一个内建函数,用于暂停程序的执行。
当你在程序中调用`PAUSE` 函数时,程序会停止执行并等待用户按下一个键。
下面是一个简单的示例:
```fortran
PROGRAM DemoPause
IMPLICIT NONE
INTEGER :: i
DO i = 1, 5
PRINT *, 'This is loop iteration', i
PAUSE 'Press any key to continue...'
END DO
END PROGRAM DemoPause
```
在这个示例中,程序会打印出"This is loop iteration" 后面跟着迭代次数,然后通
过`PAUSE` 函数暂停并等待用户按键。
需要注意的是,`PAUSE` 函数在一些编译环境中可能不可用或者有不同的行为。
如果你在使用`PAUSE` 函数时遇到问题,你可能需要查阅你所使用的编译环境的文档或者寻求更具体的帮助。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对n向左(s为正)或向右(s为负)移动s位(逻辑移位)。n:I,s:I,结果类型同n
NOT(n)*
对n进行按位逻辑“非”运算。n:I,结果类型同n
表8数组运算、查询和处理函数
函数名
说明
ALL(m[,d])*
判定逻辑数组m各元素是否都为“真”。m;L-A,d:I,结果:L(缺省d)或L-A(d=维)
ASIND(x)*
求x的反正弦arcsin(x)。x:R,结果类型同x,结果为度,值域:0~180°
ATAN(x)*
求x的反正切arctg(x)。x:R,结果类型同x,结果为弧度,值域:-π/2~π/2
ATAND(x)*
求x的反正切arctg(x)。x:R,结果类型同x,结果为度,值域:-90~90°
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
FLOOR(x)*
求小于等于x的最大整数。x:R,结果:I
IFIX(x)*
将x转换为整数(取整)。x:R,结果:I
IMAG(x)
同AIMAG(x)
INT(x[,kind])*
将x转换为整数(取整)。x:I、R、C, kind:I,结果:I(kind)
LOGICAL(x[,kind])*
按kind值转换新逻辑值。x:L,结果:L(kind)
MAX(x1,x2,x3,…)*
求x1,x2,x3,…中最大值。xI为任意类型,结果类型同xI
MAX1(x1,x2,x3,…)*
求x1,x2,x3,…中最大值(取整)。xI:R,结果:I
MIN(x1,x2,x3,…)*
求x1,x2,x3,…中最小值。xI为任意类型,结果类型同xI
MIN1(x1,x2,x3,…)*
SCAN(s,st[,b])
求串st中任一字符在串s中的位置。s:CH(*),ss:CH(*),b:L,结果:I
TRIM(s)*
求字符串s去掉首尾部空格后的字符数。s:CH(*),结果:CH(*)
VERIFY(s,st[,b])
求不在串st中字符在s中位置。s:CH(*),ss:CH(*),b:L,结果:I。b为真右起
将整数n二进制表示右起第p位置1。n:I,p:+I,p值域:0~64结果类型同n
IEOR(m,n)*
对m和n进行按位逻辑“异或”运算。m:I,n:I,结果类型同m
IOR(m,n)*
对m和n进行按位逻辑“或”运算。m:I,n:I,结果类型同m
ISHA(n,s)*
对n向左(s为正)或向右(s为负)移动s位(算术移位)。n:I,s:I,结果类型同n
ALLOCATED(a)*
判定动态数组a是否分配存储空间。a:A,结果:L。分配:.TRUE.,未分配.FALSE.
ANY(m[,d])*
判定逻辑数组m是否有一元素为“真”。m;L-A,d:I,结果:L(缺省d)或L-A(d=维)
SCALE(x,I)*
求x乘以2i。x:R,i:I,结果类型同x
SET_EXPONENT(x,i)
求由x的机内编码小数值与指数i组成的实数。x:R,i:I,结果类型同x
SPACING(x)*
求x与x最近值的差值绝对值。x:R,结果类型同x
表6字符处理函数
函数名
说明
ACHAR(n)
将ASCII码n转换为对应字符。n:I,n值域:0~127,结果:CH(1)
注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。
表4参数查询函数
函数名
说明
ALLOCATED(a)*
判定动态数组a是否分配内存。a:A,结果:L,分配:.TRUE.,未分配:.FALSE.
ASSOCIATED(p[,t])*
判定指针p是否指向目标t。p:P,t:AT,结果:L,指向:.TRUE.,未指向:.FALSE.
LEN_TRIM(s)*
求字符串s去掉尾部空格后的字符数。s:CH(*),结果:I
LGE(s1,s2)*
按ASCII码值判定字符串s1大于等于字符串s2。s1:CH(*),s1:CH(*),结果:L
LGT(s1,s2)*
按ASCII码值判定字符串s1大于字符串s2。s1:CH(*),s1:CH(*),结果:L
IACHAR(c)*
将字符c转换为对应的ASCII码。c:CH(1),结果:I
ICHAR(c)*
将字符c转换为对应的ASCII码。c:CH(1),结果:I
INDEX(s,ss[,b])*
求子串ss在串s中起始位置。s:CH(*),ss:CH(*),b:L,结果:I。b为真从右起
LEN(s)*
求字符串s的长度。s:CH(*),结果:I
求x1,x2,x3…中最小值(取整)。xI:R,结果:I
MOD(x,y)*
求x/y的余数,值为x-INT(x/y)*y。x:I、R, y的类型同x,结果类型同x
MODULO(x,y)
求x/y余数,值为x-FLOOR(x/y)*y。x:I、R, y的类型同x,结果类型同x
NINT(x[,kind])*
ISHC(n,s)*
对n向左(s为正)或向右(s为负)移动s位(循环移位)。n:I,s:I,结果类型同n
ISHFT(n,s)*
对n向左(s为正)或向右(s为负)移动s位(逻辑移位)。n:I,s:I,结果类型同n
ISHFTC(n,s[,size])
对n最右边size位向左(s为正)或向右(s为负)移动s位(循环移位)
TAN(x)*
求x的正切tg(x)。x:R,x取值弧度,结果类型同x
TAND(x)*
求x的正切tg(x)。x:R,x取值度,结果类型同x
TANH(x)
求x的双曲正切th(x)。x:R,结果类型同x
注:三角函数名前有C、D的函数为复数、双精度型函数。
表3指数、平方根和对数函数
函数名
说明
ALOG(x)
求x的自然对数ln(x)。x:R(4),结果:R(4)
表1数值和类型转换函数
函数名
说明
ABS(x)*
求x的绝对值∣x∣。x:I、R,结果类型同x; x:C,结果:R
AIMAG(x)
求x的实部。x:C,结果:R
AINT(x[,kind])*
对x取整,并转换为实数(kind)。x:R, kind:I,结果:R(kind)
AMAX0(x1,x2,x3,…)*
求x1,x2,x3,…中最大值。xI:I,结果:R
AMIN0(x1,x2,x3,…)*
求x1,x2,x3,…中最小值。xI:I,结果:R
ANINT(x[,kind])*
对x四舍五入取整,并转换为实数(kind)。x:R, kind:I,结果:R(kind)
CEILING(x)*
求大于等于x的最小整数。x:R,结果:I
KIND(x)*
查询x的kind参数值。x:I、R、C、CH、L,结果:I
MAXEXPONENT(x)*
查询x的最大正指数值。x:R,结果:I(4)
MINEXPONENT(x)*
查询x的最大负指数值。x:R,结果:I(4)
PRECISION(x)*
查询x类型有效数字位数。x:R、C,结果:I(4)
(x)
将整数n二进制表示右起第p位值取反。n:I,p:+I,p值域:0~64结果类型同n
IBCLR(n,p)
将整数n二进制表示右起第p位置0。n:I,p:+I,p值域:0~64结果类型同n
IBITS(i,p,l)
从整数n二进制表示右起第p位开始取l位。n:I,p:+I,l:+I,结果类型同n
IBSET(n,p)
ADJUSTL(string)*
将字符串string左对齐,即去掉左端空格。string:CH(*),结果类型同string
ADJUSTR(string)*
将字符串string右对齐,即去掉右端空格。string:CH(*),结果类型同string
CHAR(n)*
将ASCII码n转换为对应字符。n:I,n值域:0~255,结果:CH(1)
DIGITS(x)
查询x的机内编码数值部分二进制位数(除符号位和指数位)。x:I、R,结果:I
EPSILON(x)*
查询x类型可表示的最小正实数。x:R,结果类型同x。最小正实数:1.1920929E-07
HUGE(x)*
查询x类型可表示的最大数。x:I、R,结果类型同x
ILEN(x)
查询x的反码值。x:I,结果类型同x
LLE(s1,s2)*
按ASCII码值判定字符串s1小于等于字符串s2。s1:CH(*),s1:CH(*),结果:L
LLT(s1,s2)*
按ASCII码值判定字符串s1小于字符串s2。s1:CH(*),s1:CH(*),结果:L
REPEAT(s,n)*
求字符串s重复n次的新字符串。s:CH(*),n:I,结果:CH(*)
表7二进制位操作函数
函数名
说明
BIT_SIZE(n)*
求n类型整数的最大二进制位数。n:I,结果类型同n
BTEST(n,p)
判定整数n的二进制表示右起第p位是否为1。n:I,p:+I,p值域:0~64结果:L
IAND(m,n)*
对m和n进行按位逻辑“与”运算。m:I,n:I,结果类型同m