相关疑难解决方法(0)

Mathematica:什么是符号编程?

我是斯蒂芬·沃尔夫勒姆(Stephen Wolfram)的忠实粉丝,但他绝对不会羞于吹响自己的号角.在许多参考文献中,他将Mathematica称为不同的符号编程范例.我不是Mathematica用户.

My questions are: what is this symbolic programming? And how does it compare to functional languages (such as Haskell)?

haskell programming-languages functional-programming wolfram-mathematica

78
推荐指数
4
解决办法
2万
查看次数

"upvalue"在Mathematica中意味着什么以及何时使用它们?

对我来说,g /: f[g[x_]] := h[x]只是冗长等同于f[g[x_]] := h[x].你能提出一个你必须使用的例子/:吗?

wolfram-mathematica

23
推荐指数
3
解决办法
2880
查看次数

如何比较两个规则列表?

我需要比较两个var -> integer不匹配事实的形式规则列表.
确定,如果有任何规则相同的lhs和不同的rhs.

例如:

{a-> 3,b-> 1,c-> 4}〜??? 〜{a-> 3,b-> 1,c-> 4} =真
{a-> 3,b-> 1,c-> 4}〜??? 〜{a-> 3,b-> 2,c-> 4} = false
{ a-> 3,b-> 1,c-> 4}〜??? 〜{ a-> 1,b-> 3,c-> 4} = false
{a-> 3,b-> 1,c-> 4}〜??? 〜{c-> 4,d-> 8,e-> 9} =真
{a-> 3,b-> 1,c-> 4}〜??? 〜{d-> 8,e-> 9,f-> 7} =真

在我的情况下,它们已经按照lhs排序,并且所有lhs都是唯一的,如果它可以帮助尽可能简单的功能.

UPD:忘了一件事!列表可以有不同的长度.但似乎所有三个当前答案仍然有效.

comparison wolfram-mathematica rules

9
推荐指数
3
解决办法
287
查看次数

禁止ReplaceAll替换(/.)

从Mathematica自己的文档:

{g[1],Hold[g[1]]}/.g[n_]:>n+1
Run Code Online (Sandbox Code Playgroud)

导致

{2, Hold[1 + 1]}
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有办法保护子表达式不被ReplaceAll取代?我使用复合构造作为变量,如

v[a, b]
Run Code Online (Sandbox Code Playgroud)

并希望能够做这样的事情

v[a, b] + a - b /. {a -> x, b -> y}
Run Code Online (Sandbox Code Playgroud)

导致

v[a, b] + x - y
Run Code Online (Sandbox Code Playgroud)

并不是

v[x, y] + x - y
Run Code Online (Sandbox Code Playgroud)

没有复杂的模式.不幸的是,使用替换和级别规范不是选项.

这个成语

v[a, b] + a - b /. {catch_v -> catch, a -> x, b -> y}
Run Code Online (Sandbox Code Playgroud)

因为'catch_v - > catch'禁止后续规则应用于v.但是我宁愿禁止在表达层面上替换(使用某种Hold或HoldForm表达式).这可能吗?

wolfram-mathematica

5
推荐指数
2
解决办法
298
查看次数

Mathematica:将矩阵数据写入XML; 从XML读取矩阵数据

(部分)我使用的对象的矩阵表示如下:

 {
 {1, A,{100,  20, 30},10},
 {2, B,{100}, 0},
 {3, X,{120,20},0},
 {4, C,{},11}
 }
Run Code Online (Sandbox Code Playgroud)

我想以XML格式将这些数据存储在外部,如下所示

<data>
<row key ="1"val1 ="A"val2 ="10"> <occ> 100 </ occ> <occ> 20 </ occ> <occ> 30 </ occ> </ row>
<行密钥= "2" VAL1 = "B" VAL2 = "0"> <OCC> 100 </ OCC> </行>
<行密钥= "3" VAL1 = "X" VAL2 = "0"> <OCC> 120 </ occ> <occ> 20 </ occ> </ row>
<row key ="4"val1 ="C"val2 ="11"> </ row>
</ data>

我正在寻找一个如何:

- 将矩阵传输到XML(Mathematica命令?)

- 导入XML文件后,将XML字符串解析回矩阵格式.

wolfram-mathematica

4
推荐指数
1
解决办法
1559
查看次数