问题标签 [wolfram-mathematica]
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# - Mathematica 语法的解析器?
是否有可以从 C# 使用的内置解析器来解析数学表达式?
我知道我可以使用内核本身来解析表达式,并使用 .NET/Link 来检索树结构......但我正在寻找不依赖内核的东西。
function - Mathematica 中的可选命名参数
使用可选命名参数定义函数的最佳/规范方法是什么?为了使其具体化,让我们创建一个foo
具有命名参数a
、b
和的函数c
,它们的默认值分别为 1、2 和 3。为了比较,这是一个foo
带有位置参数的版本:
这是命名参数版本的示例输入和输出foo
:
当然,在命名参数之前也应该很容易有位置参数。
wolfram-mathematica - Mathematica:去掉 FindInstance 结果中的“x ->”
假设我有以下结果:
我怎样才能摆脱“b->”而只得到 b 答案的数组?我可以通过以下方式到达一半:
但我怎样才能做到:
谢谢
macros - Mathematica: Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc等
我对所有声称以某种方式阻止评估的内置 Mathematica 函数感到困惑:Unevaluated
、Defer
、Hold
和超过六种形式的Hold*
. Mathematica 文档只是单独解释了每个函数,而没有解释为什么要选择其中一个。任何人都可以对所有这些功能提供一个连贯的解释吗?整件事对我来说似乎是一团糟。将这一切与 Lisp 宏联系起来可能是一个不错的起点。
大多数 Mathematica 语言都经过精心设计,但似乎 Wolfram 真的在这方面把自己画到了一个角落。或者我可能会遗漏一些东西。
image-processing - Mathematica 编程图形
我有一个包含 40,000 个数据点的文件。在 Matlab 中,我可以使用 plot 命令绘制绘图:
我如何在 Mathematica 中做到这一点?我试过了:
但它不起作用。
parsing - Mathematica 函数 foo 可以区分 foo[.2] 和 foo[.20]
假设我想要一个函数,它接受一个数字并将其作为字符串返回,与给出的完全一样。以下不起作用:
foo[.2]
和的输出foo[.20]
是相同的。
我想这样做的原因是我想要一个可以理解以点为分隔符的日期的函数,例如f[2009.10.20]
. 我意识到这是对 Mathematica 的一种奇怪的滥用,但我正在制作一种特定于领域的语言,并希望通过执行 eval (ToExpression) 来使用 Mathematica 作为它的解析器。如果我可以依赖两位数的日期和月份,我实际上可以完成这项工作,比如 2009.01.02 但我也想允许 2009.1.2 最终归结为上述问题。
我怀疑唯一的答案是将事物作为字符串传递然后解析它,但也许有一些我不知道的技巧。请注意,这与这个问题有关: Mathematica: Unevaluated vs Defer vs Hold vs HoldForm vs HoldAllComplete vs etc etc
list - 在 Mathematica 中显示重复项
在 Mathematica 我有一个列表:
我将如何制作包含重复项的列表?像:
我一直在将Lists 视为 Sets,如果列表中有诸如 except[] 之类的东西,那么我可以这样做:
(当然,如果 x 有两个以上的重复项 - 例如 {1, 2,2,2 ,3,4,4},则输出将是 {2,2,4},但额外的 Union[]会解决这个问题。)
但是没有这样的东西(如果我确实很好地理解了那里的所有功能)。
那么,该怎么做呢?
memory-management - Mathematica 内存不足
我正在尝试运行以下程序,该程序计算最多 d 的多项式的根,系数仅为 +1 或 -1,然后将其存储到文件中。
这里 f[z,i] 给出 z 中的多项式,加号或减号以二进制计数。说 d=2,我们会有
f[z,1] = -z 2 - z - 1
f[z,2] = -z 2 - z + 1
f[z,3] = -z 2 + z - 1
f[z,4] = - z 2 + z + 1
我意识到阅读这篇文章可能不太有趣,但无论如何它相对较短。我会尝试减少相关部分,但在这里我真的不知道问题出在哪里。我正在计算 f[z,i] 的所有根,然后将它们四舍五入以使它们对应于 n 网格中的一个点,并将该数据保存在各种文件中。
出于某种原因,Mathematica 中的内存使用率逐渐上升,直到填满所有内存(本机为 6 GB);然后计算继续非常缓慢;为什么是这样?
我不确定是什么在这里用尽了内存——我唯一的猜测是文件流用尽了内存,但事实并非如此:我尝试将数据附加到 2GB 文件中,但没有明显的内存使用情况。Mathematica 似乎完全没有理由在这里使用大量内存。
对于较小的 d 值(例如 15),行为如下:我有 4 个内核正在运行。当它们都运行 ParallelDo 循环时(每个都一次执行 j 的值),内存使用量会增加,直到它们都完成一次循环。然后下一次他们通过该循环时,内存使用量根本不会增加。计算最终完成,一切都很好。
此外,非常重要的是,一旦计算停止,内存使用量就不会下降。如果我开始另一个计算,会发生以下情况:
- 如果之前的计算在内存使用仍在增加时停止,它会继续增加(可能需要一段时间才能再次开始增加,基本上是为了达到计算中的同一点)。
- 如果之前的计算在内存使用没有增加时停止,它不会进一步增加。
编辑:问题似乎来自 f 的相对复杂性 - 将其更改为一些更简单的多项式似乎可以解决问题。我认为问题可能是 Mathematica 记住 f[z,i] 的 i 的特定值,但设置 f[z,i] :=。刚计算出 f[z,i] 的根后,就抱怨一开始不存在赋值,并且内存仍在使用中。
这真的很令人费解,因为 f 是我能想象的唯一占用内存的东西,但是在内部 Do 循环中定义 f 并在每次计算根后清除它并不能解决问题。
wolfram-mathematica - Mathematica 7 中列表之间的多重赋值
假设有两个列表a = {a1, a2, a3}
and b = {b1, b2, b3}
,我想写一个赋值语句来做a1=b1,a2=b2,a3=b3
只引用a
and b
:
但它只会使a={b1,b2,b3}
. 使用:=
(SetDelayed) 代替=
也不起作用。
有什么解决办法吗?谢谢。
wolfram-mathematica - Finding previously defined messages in Mathematica
Mathematica by default defines a lot of useful messages for signaling common errors, like functions being called with the wrong number of arguments or files not being found. In general, I prefer to use existing, defined messages wherever possible, because it makes it easier for them to be handled via mechanisms like Check
, Quiet
and On
/Off
. However, all my attempts at finding what messages are currently defined have failed; obvious approaches like
don't work at all.
Is there a trick I'm missing?
Thanks in advance.