我有一个用Fortran编写的标量函数,我正通过一个小的数学链接模块在Mathematica中使用它。我希望这个函数的行为尽可能接近于本地的Mathematica函数,包括它对符号常量的处理。
很多时候,我希望用mathematica编写一些带有符号常量/变量的表达式,这些常量/变量稍后将被替换为替换规则列表。但是,Mathematica立即尝试使用适当的符号参数来评估我的数学链接函数,但显然失败了。例如,即使下面的简单表达式也会失败
extf[a]/.a->5有没有一种方法可以延迟函数的计算,直到所有的符号参数都被数字替换?
我使用了一种不那么优雅的方法,并取得了一些成功(但如果我希望将此函数包含在一个通用的mathematica包中与同事分享,则不能接受)是使用外部函数的“伪”引用计算所有内容,然后使用替换规则将所有伪引用替换为真实引用,同时计算所有其他数值常量。例如:
dummyf[a]/.{a->5,dummyf->extf}发布于 2011-08-02 04:56:40
使用Mathematica模式匹配器的东西会有用吗?请注意,当输入是非数字时,您需要省略holddummyf的任何定义。
dummyf[a_?NumericQ] := extf[a]
holddummyf[a_?NumericQ] := extf[a]
dummyf[a_] := holddummyf[a]
[In] dummyf[0.3]
[Out] extf[0.3]
[In] dummyf[b]
[Out] holddummyf[b]
[In] % /. b -> 5
[Out] extf[5]我想要问的另一个问题是,在Fortran中使用extf是否是绝对必要的。
https://stackoverflow.com/questions/6904118
复制相似问题