首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mathlink和延迟评估/变量

Mathlink和延迟评估/变量
EN

Stack Overflow用户
提问于 2011-08-02 04:34:04
回答 1查看 282关注 0票数 1

我有一个用Fortran编写的标量函数,我正通过一个小的数学链接模块在Mathematica中使用它。我希望这个函数的行为尽可能接近于本地的Mathematica函数,包括它对符号常量的处理。

很多时候,我希望用mathematica编写一些带有符号常量/变量的表达式,这些常量/变量稍后将被替换为替换规则列表。但是,Mathematica立即尝试使用适当的符号参数来评估我的数学链接函数,但显然失败了。例如,即使下面的简单表达式也会失败

代码语言:javascript
复制
extf[a]/.a->5

有没有一种方法可以延迟函数的计算,直到所有的符号参数都被数字替换?

我使用了一种不那么优雅的方法,并取得了一些成功(但如果我希望将此函数包含在一个通用的mathematica包中与同事分享,则不能接受)是使用外部函数的“伪”引用计算所有内容,然后使用替换规则将所有伪引用替换为真实引用,同时计算所有其他数值常量。例如:

代码语言:javascript
复制
dummyf[a]/.{a->5,dummyf->extf}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-02 04:56:40

使用Mathematica模式匹配器的东西会有用吗?请注意,当输入是非数字时,您需要省略holddummyf的任何定义。

代码语言:javascript
复制
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是否是绝对必要的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6904118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档