问题标签 [mathlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 可以从其他编程语言(python/C#)中使用 Mathematica 吗?
是否可以从其他语言使用 Mathematica 的计算能力?我需要做一些复杂的操作(不一定是符号的,顺便说一句),如果能够直接从我的 python/c# 程序中调用 Mathematica 的函数或运行 Mathematica 的代码,那就太好了。
是否可以?
c - 在 Mathematica/Mathlink 中计算导数
我试图弄清楚如何通过 Mathlink 从 C 中使用 Mathematica。
如果我只想计算内置函数的值,我可以
一切都很好。
现在,如果我想要导数的值,事情会变得更糟:
不起作用。我试图插入“D”功能,但我似乎无法让它工作。到目前为止我能找到的最好方法是这个
它确实有效,但速度极慢,可能是因为我要求 Mathematica 解析表达式,而不是仅仅调用函数......有更好的方法吗?
wolfram-mathematica - 通过 MathLink 从 v.7.01 会话中执行 v.5.2 内核中的代码
我在同一台机器上安装了Mathematica 7.01 和Mathematica 5.2。我希望能够在Mathematica 7.01 会话中评估 v.5.2 内核中的代码。我的意思是运行Mathematica 7.0.1 标准会话我希望有一个命令,比如kernel5Evaluate
评估 5.2 内核中的一些代码并将结果返回到 7.01 内核并链接 7.01 前端笔记本,这样代码将在7.01 内核。
例如(在标准Mathematica v.7.01 会话中):
在这两种情况下,结果应该就像在 v.7.01 前端中将 v.5.2 内核设置为“笔记本的内核”。当然,solutionFrom5
变量应该设置为 v.5.2 内核返回的真实解决方案。
wolfram-mathematica - (MathLink) 正确处理从内核生成的消息
在MathLink
使用从内核时,我遇到了正确解析TextPacket
s 的问题。特别是当这样的数据包对应于Message
从内核生成的时,我根本不明白如何正确处理它。我需要Messages
将它们打印在评估笔记本中,就好像它们是由主内核生成的一样(但有一些标记以明确它来自从属内核)。而且我需要将TextPacket
s 对应的Message
s 与 just toPrint[]
命令分开。后者我也需要正确解析,将它们打印在评估笔记本中,并带有一点标记,表明它来自从内核。
下面是一个例子:
Message
默认情况下以MathLink
以下形式出现:
它看起来很丑。我发现让它变得更好的唯一方法是在从内核中进行评估
但我认为应该有更直接的解决方案。特别是在以这种方式处理时,我在里面得到TextPacket
s HoldForm
:
我不知道如何将这样的字符串转换为适合打印为Message
.
PS这个问题来自那个问题。
wolfram-mathematica - 如何模拟 InString[]?
我发现在发送带有标题的输入时,InString[]
它在模式下不起作用。所以我需要定义我自己的函数来返回前一个输入行。我开发的一种方法在某些情况下不起作用:MathLink
EnterExpressionPacket
here
这是因为RuleDelayed
没有HoldAllComplete
属性。添加此属性使其正常:
但是修改内置函数通常不是一个好主意。有一个更好的方法吗?
wolfram-mathematica - MathLink 中的数据包链:数据包是否总是严格排序的?
文档没有说明清除从内核通过MathLink
. 很自然地假设(当发送带有 head 的输入表达式EnterExpressionPacket
并在标准模式下工作时):
1)下一个之前的最后一个数据包InputNamePacket
总是
ReturnExpressionPacket
2)可能总是只有ReturnExpressionPacket
一对一
OutputNamePacket
EnterExpressionPacket
3)ReturnExpressionPacket
永远是下一个OutputNamePacket
4)MessagePacket
在下一个数据包之后总是TextPacket
包含该消息的所有内容
5) 标准模式下只有 7 种返回数据包:InputNamePacket
, OutputNamePacket
, ReturnExpressionPacket
, DisplayPacket
, DisplayEndPacket
,
MessagePacket
, TextPacket
.
这些陈述中哪些是正确的?
wolfram-mathematica - 改变 General::stop 和主循环的行为
在我们阅读的文档page
中:General::stop
此消息是在单个评估中第三次生成指示的消息之后生成的。
消息被抑制以防止在长计算中出现冗余或重复消息。
我的问题是,在完成工作时,MathLink
我将每一点都作为一个单一的评估通过,因此General::stop
永远不会出现。
例如,如果我定义:
我得到的Message
数据包与f[z]
. 当然,我希望General::stop
在生成相同的消息 3 次后停止从内核中的消息生成。有没有办法做到这一点?
在$MessageList
我们阅读的文档页面上
使用标准Mathematica主循环,当特定输入行的处理完成时,$MessageList 被重置为 {}。
tutorial/Messages
在我们阅读的页面上:
在您进行的每一次计算中, Mathematica都会维护一个列表 $MessageList ,其中包含所有产生的消息。在标准 Mathematica会话中,在生成每一行输出后清除此列表。
可能这就是为什么General::stop
不出现的原因?如果是真的,有没有办法控制主循环的这个方面?有没有办法创建这样一个非标准的Mathematica会话?
编辑:
看来我的假设是正确的。如果我们将$MessageList
在每条消息之后清除,则General::stop
永远不会出现:
$MessageList
所以问题依然存在:生成输出后如何禁用自动清零?
wolfram-mathematica - 如何安全地杀死从内核?
LinkClose[link]
正如文档中所说,“不一定会在连接的另一端终止程序”。有没有办法安全地杀死从内核的进程?
编辑:
实际上,我需要Mathematica中的一个函数,它仅在从内核的进程已经终止并且它的内存已经释放时才返回。从内核退出时两者LinkInterrupt[link, 1]
都LinkClose[link]
不要等待。目前,唯一这样的功能似乎是killProc[procID]
我在此页面的一个答案中显示的功能。但是有内置的模拟吗?
wolfram-mathematica - MathLink 函数中的 CheckAbort?
我刚刚发现这样的MathLink
函数LinkWrite
和LinkRead
有类似它自己的内部的东西CheckAbort
,可以吸收任何中止,并且不会进一步传播它们。
这可以通过以下方式轻松显示LinkRead
:
评估上述代码后按Alt+ .,您将获得以下输出:
如您所见,中止被LinkRead
.
我的问题是它打破了我自己基于CheckAbort
.
有没有办法拦截被 和 等函数吸收的LinkRead
中止LinkWrite
?