小编tel*_*f14的帖子

方程式线程:为什么默认行为?

我最近重新发现了Roman Maeder的一个小包,它告诉Mathematica自动在算术和类似函数上进行线程,例如x == y.链接到Maeder的包裹.

首先,为了演示,这是Maeder给出的一个例子:

In[1]:= Needs["EqualThread`"]
Run Code Online (Sandbox Code Playgroud)

现在继续使用线程行为来解决x'手动'的以下等式:

In[7]:= a == b Log[2 x]
In[8]:= %/b
Out[8]:= a/b == Log[2 x]
Run Code Online (Sandbox Code Playgroud)

取指数:

In[9]:= Exp[%]
Out[9]= E^(a/b) == 2 x
Run Code Online (Sandbox Code Playgroud)

除以2:

In[10]:= %/2
Out[10]= (E^(a/b))/2 == x
Run Code Online (Sandbox Code Playgroud)

问:从设计角度来看,有人可以解释为什么Mathematica默认设置为这样吗?自动线程似乎是Mathematica初学者所期望的行为类型 - 至少对我来说 - 也许某人可以提供一个或两个会导致整个系统出现问题的例子.(并随意指出任何mathematica无知...)

wolfram-mathematica equations equation-solving

14
推荐指数
2
解决办法
323
查看次数

设计方法:重载vs Switch?

关于封装设计的性能和可扩展性,最好是:

  1. ...'重载'函数名称(让Mathematica根据模式/条件/测试以及系统命令定义的方式来排序使用哪个版本)?
  2. ...或者使用Switch [](或类似命令)构建单个函数来直接评估?

Mathematica的表现力经常让我感到困惑,就像这样的愚蠢(?)问题.

wolfram-mathematica package

14
推荐指数
4
解决办法
2024
查看次数

将StandardForm I/O的默认字体从"New Courier"更改为"Consolas"?

我没有找到一个确切的解决方案搜索过...有谁知道如何覆盖Mathematica的默认Monospaced字体,所以所有StandardForm输入/输出,包括在帮助浏览器中,在'Consolas'中呈现?

期权检查员没有多大帮助(可能是因为我不知道我在寻找什么?).还有一个'字体替换'列表---我觉得这看起来很混乱,因为它似乎是循环引用(例如,包括:Courier - > New Courier和New Courier - > Courier)

这是一个比较两种字体125%的屏幕截图.

在此输入图像描述

fonts frontend wolfram-mathematica

11
推荐指数
2
解决办法
7137
查看次数

当DownValues已经存在时,可以阻止OwnValues吗?

对于已经分配了与名称"a"关联的DownValues的情况,是否有可接受的方法来阻止将OwnValues分配为相同的名称?(我最初在玩某人试图实现数据字典的时候遇到过这个问题.)

这就是我要避免的意思:

Remove[a];
a[1] := somethingDelayed
a[2] = somethingImmediate;
DownValues[a]
a[1]
a[2]
Run Code Online (Sandbox Code Playgroud)

返回...

{HoldPattern[a[1]] :> somethingDelayed, 
 HoldPattern[a[2]] :> somethingImmediate}
somethingDelayed
somethingImmediate
Run Code Online (Sandbox Code Playgroud)

现在,如果我们要评估:

a = somethingThatScrewsUpHeads;
(* OwnValues[a] above stored in OwnValues *)
a[1]
a[2]
Run Code Online (Sandbox Code Playgroud)

我们得到......

somethingThatScrewsUpHeads[1]
somethingThatScrewsUpHeads[2]
Run Code Online (Sandbox Code Playgroud)

是否有一种简单/灵活的方法来防止DownValues中任何名称的OwnValues?(Lemme猜测......这是可能的,但会有性能受损吗?)

wolfram-mathematica variable-assignment

9
推荐指数
2
解决办法
887
查看次数

生成局部变量时出错(作为常量)

使用消息Set提醒我们,可以轻松地跨两个列表进行多个分配,而不必分开任何内容.例如:

Remove[x1, x2, y1, y2, z1, z2];
{x1, x2} = {a, b}
Run Code Online (Sandbox Code Playgroud)

执行赋值并返回:

{a, b}
Run Code Online (Sandbox Code Playgroud)

Thread,通常用于生成规则列表,也可以显式调用以实现相同的结果:

Thread[{y1, y2} = {a, b}]
Thread[{z1, z2} -> {a, b}]
Run Code Online (Sandbox Code Playgroud)

得到:

{a, b}
{z1 -> a, z2 -> b}
Run Code Online (Sandbox Code Playgroud)

但是,使用此方法生成局部常量会产生错误.考虑这个简单的示例函数:

Remove[f];
f[x_] :=
 With[{{x1, x2} = {a, b}},
  x + x1 + x2
  ]
f[z]
Run Code Online (Sandbox Code Playgroud)

这里出现错误信息:

With::lvset: "Local variable specification {{x1,x2}={a,b}} contains 
{x1,x2}={a,b}, which is an assignment to {x1,x2}; only assignments 
to symbols are allowed."
Run Code Online (Sandbox Code Playgroud)

错误消息documentation(ref/message/With/lvw)在"更多信息"部分中说," 当With中的第一个元素不是符号赋值列表时,将生成此消息." 鉴于这种解释,我理解为什么我的任务失败的机制.尽管如此,我很困惑并且想知道这是否是WRI的必要限制,还是应该报告的次要设计监督. …

localization wolfram-mathematica function

7
推荐指数
3
解决办法
408
查看次数

Mathematica中的TunkRank

我第一次尝试使用Mathematica并使用TunkRank作为我的首选算法.这是我想出的:

Following = {{2, 3, 4}, {0, 4}, {1, 3}, {1, 4}, {0, 2}}
Followers = {{1, 4}, {2, 3}, {0, 4}, {0, 2}, {0, 1, 3}}
p = 0.05
Influence[x_] := Influence[x] =
    Sum[1 + (p * Influence[Followers[[x, i]]])/(1 + 
        Length[Following[[x]]]), {i, 0, Length[Followers[[x]]]}]
Run Code Online (Sandbox Code Playgroud)

如果您在Mathematica中运行它,您将看到它不仅仅在跟随节点上运行.相反,递归是无限的.我究竟做错了什么?

math recursion wolfram-mathematica function ranking

6
推荐指数
2
解决办法
708
查看次数

防止衍生产品的重新排序?

最近一篇关于Wolfram博客的文章提供了以下函数,以更传统的方式格式化衍生品.

pdConv[f_] := 
 TraditionalForm[
  f /. Derivative[inds__][g_][vars__] :> 
    Apply[Defer[D[g[vars], ##]] &, 
     Transpose[{{vars}, {inds}}] /. {{var_, 0} :> 
        Sequence[], {var_, 1} :> {var}}]
 ]
Run Code Online (Sandbox Code Playgroud)

一个示例用途,Dt[d[x, a]] // pdConv给出:

在此输入图像描述

如果不打破一般功能pdConv,有人可以改变它来维持给定的变量顺序,产生如下所示的输出吗?(当然这纯粹是出于个人原因,使得人类可以更容易地进行推导)

在此输入图像描述

我怀疑这将是非常重要的 - 除非有人知道一个Global可以暂时覆盖的魔法选项Block.

对于它的价值,这些SO问题可能是相关的:

wolfram-mathematica typesetting differentiation

5
推荐指数
1
解决办法
377
查看次数