gpt4 book ai didi

arrays - 函数在Fortran中返回数组

转载 作者:行者123 更新时间:2023-12-03 11:38:40 40 4
gpt4 key购买 nike

据我了解,您可以从Fortran中的函数返回一个数组,但是由于某种原因,我的代码只返回了我要返回的数组中的第一个值。这是功能:

function polynomialMult(npts,x,y)
integer npts
double precision x(npts), results(npts + 1), y(npts,npts)

polynomialMult = x(1:npts) + 1

end function

这就是我所说的
 C(1:numPoints) = polynomialMult(numPoints,x,f)

print *, C(1:numPoints)`

现在它没有任何用处,因为在编写逻辑之前我试图理解语法。我看到了一些有关指定函数类型的内容,但是当我写的时候
integer function polynomialMult(npts,x,y)

或任何我得到的编译错误。

最佳答案

要定义一个返回数组的函数,请在函数内部包含函数声明,如下所示:

function polynomialMult(npts,x,y)
integer npts
double precision x(npts), results(npts + 1), y(npts,npts)

! Change the next line to whatever you want
double precision, dimension(npts) :: polynomialMult

polynomialMult = x(1:npts) + 1

end function

您的声明
integer function polynomialMult(npts,x,y)

声明该函数返回一个整数。整数,而不是整数数组。我认为该标准不支持函数声明,例如:
integer, dimension(10) function polynomialMult(npts,x,y)

但我可能是错的。我总是使用上面显示的表格。

如果您拥有最新的Fortran编译器,则可以执行一些聪明的事情,例如返回分配的数组。我建议您弄清楚数组语法。例如,您的声明:
polynomialMult =  x(1:npts) + 1

可以更简洁地写成:
polynomialMult =  x + 1

因为Fortran会将标量加法映射到您声明仅具有 npts元素的数组x的所有元素。

将数组的大小传递给子例程非常有用,而且现在几乎总是没有必要。通常,您要么要对数组中的每个元素进行操作(如数组语法示例中所示),要么应让子程序确定要处理的数组的大小。

关于arrays - 函数在Fortran中返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828094/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com