问题标签 [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.

0 投票
5 回答
3129 浏览

c# - 可以从其他编程语言(python/C#)中使用 Mathematica 吗?

是否可以从其他语言使用 Mathematica 的计算能力?我需要做一些复杂的操作(不一定是符号的,顺便说一句),如果能够直接从我的 python/c# 程序中调用 Mathematica 的函数或运行 Mathematica 的代码,那就太好了。

是否可以?

0 投票
1 回答
299 浏览

c - 在 Mathematica/Mathlink 中计算导数

我试图弄清楚如何通过 Mathlink 从 C 中使用 Mathematica。

如果我只想计算内置函数的值,我可以

一切都很好。

现在,如果我想要导数的值,事情会变得更糟:

不起作用。我试图插入“D”功能,但我似乎无法让它工作。到目前为止我能找到的最好方法是这个

它确实有效,但速度极慢,可能是因为我要求 Mathematica 解析表达式,而不是仅仅调用函数......有更好的方法吗?

0 投票
3 回答
874 浏览

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 内核返回的真实解决方案。

0 投票
2 回答
576 浏览

wolfram-mathematica - (MathLink) 正确处理从内核生成的消息

MathLink使用从内核时,我遇到了正确解析TextPackets 的问题。特别是当这样的数据包对应于Message从内核生成的时,我根本不明白如何正确处理它。我需要Messages将它们打印在评估笔记本中,就好像它们是由主内核生成的一样(但有一些标记以明确它来自从属内核)。而且我需要将TextPackets 对应的Messages 与 just toPrint[]命令分开。后者我也需要正确解析,将它们打印在评估笔记本中,并带有一点标记,表明它来自从内核。

下面是一个例子:

Message默认情况下以MathLink以下形式出现:

它看起来很丑。我发现让它变得更好的唯一方法是在从内核中进行评估

但我认为应该有更直接的解决方案。特别是在以这种方式处理时,我在里面得到TextPackets HoldForm

我不知道如何将这样的字符串转换为适合打印为Message.

PS这个问题来自那个问题。

0 投票
3 回答
277 浏览

wolfram-mathematica - 如何模拟 InString[]?

我发现在发送带有标题的输入时,InString[]它在模式下不起作用。所以我需要定义我自己的函数来返回前一个输入行。我开发的一种方法在某些情况下不起作用:MathLinkEnterExpressionPackethere

这是因为RuleDelayed没有HoldAllComplete属性。添加此属性使其正常:

但是修改内置函数通常不是一个好主意。有一个更好的方法吗?

0 投票
1 回答
112 浏览

wolfram-mathematica - MathLink 中的数据包链:数据包是否总是严格排序的?

文档没有说明清除从内核通过MathLink. 很自然地假设(当发送带有 head 的输入表达式EnterExpressionPacket并在标准模式下工作时):

1)下一个之前的最后一个数据包InputNamePacket总是 ReturnExpressionPacket

2)可能总是只有ReturnExpressionPacket一对一 OutputNamePacketEnterExpressionPacket

3)ReturnExpressionPacket永远是下一个OutputNamePacket

4)MessagePacket在下一个数据包之后总是TextPacket包含该消息的所有内容

5) 标准模式下只有 7 种返回数据包:InputNamePacket, OutputNamePacket, ReturnExpressionPacket, DisplayPacket, DisplayEndPacket, MessagePacket, TextPacket.

这些陈述中哪些是正确的?

0 投票
1 回答
367 浏览

c++ - 在 MacOS 上编译 Pythonika

我正在 Snow Leopard 上编译Pythonika,我得到的错误表明我缺少一些标准标志,知道缺少什么吗?另一篇文章建议我需要 -lrt 标志,但这在 MacOS 上不可用

0 投票
2 回答
294 浏览

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所以问题依然存在:生成输出后如何禁用自动清零?

0 投票
2 回答
569 浏览

wolfram-mathematica - 如何安全地杀死从内核?

LinkClose[link]正如文档中所说,“不一定会在连接的另一端终止程序”。有没有办法安全地杀死从内核的进程?

编辑:

实际上,我需要Mathematica中的一个函数,它仅在从内核的进程已经终止并且它的内存已经释放时才返回。从内核退出时两者LinkInterrupt[link, 1]LinkClose[link]不要等待。目前,唯一这样的功能似乎是killProc[procID]我在此页面的一个答案中显示的功能。但是有内置的模拟吗?

0 投票
1 回答
263 浏览

wolfram-mathematica - MathLink 函数中的 CheckAbort?

我刚刚发现这样的MathLink函数LinkWriteLinkRead有类似它自己的内部的东西CheckAbort,可以吸收任何中止,并且不会进一步传播它们。

这可以通过以下方式轻松显示LinkRead

评估上述代码后按Alt+ .,您将获得以下输出:

如您所见,中止被LinkRead.

我的问题是它打破了我自己基于CheckAbort.

有没有办法拦截被 和 等函数吸收的LinkRead中止LinkWrite