【发布时间】:2020-11-19 15:00:09
【问题描述】:
我正在尝试解决一些特征值问题。我正在使用 gfortran。我编写了一个包含bisection_method 子例程的模块。在我的程序中,我定义了secular(m,x) 函数,它接受一个二维数组m 和一个浮点数x,并在x 处输出m 的特征多项式;即 det (m - x Id)。 bisection_method 子例程的参数之一是函数f,它旨在作为一个真实输入和真实输出的函数。但是,我想在此子例程中输入“部分应用”函数secular(m,_)。有没有办法做到这一点,而无需在模块中明确定义此功能?
我不能明确定义这个函数,因为我要为几个矩阵m 执行这个过程。另外,我不能修改bisection_method 的主体,因为我也将它用于一个实参的函数。在 Fortran 中有没有办法解决这个问题?
【问题讨论】:
-
你的意思是像closure吗?
-
@francescalus 精确
-
是否可以将“f(x)”形式的包装器内部过程(通过主机关联引用“m”)作为参数传递给“bisection_method()”?跨度>
-
@roygvib 我解决了它定义一个带有参数
m的包装函数,并添加了一个setter子例程。
标签: function fortran gfortran subroutine