小编acl*_*acl的帖子

Mathematica对表达式求值一次,然后返回未评估的表达式

Mac OS X 10.7.2上的Mathematica 8.0.1执行此操作:退出内核并执行

MathieuS[MathieuCharacteristicA[  1, -(1/4)], -0.25`, 15.707963267948966`]
MathieuS[MathieuCharacteristicA[  1, -(1/4)], -0.25`, 15.707963267948966`]
(*
5.10119 10^-15
MathieuS[MathieuCharacteristicA[1, -(1/4)], -0.25, 15.708]
*)
Run Code Online (Sandbox Code Playgroud)

也就是说,它第一次对表达式进行数值计算,而第二次返回未评估的表单.

为什么?或者我只是花了太长时间盯着我的屏幕而且做了一些愚蠢的事情?

wolfram-mathematica

40
推荐指数
0
解决办法
1027
查看次数

动态交互问题

我试图有两个面板,左边显示一个图形和两个定位器,右边一个是定位器定义的区域中的放大版本.

我试过了

ClearAll[mndpt];
mndpt = Compile[{{c, _Complex}, {maxiter, _Integer}},
   Module[{z, iters},
        iters = 0.;
        z = c;
            While[(iters < maxiter) && (Abs@z < 2),
                iters++;
                z = z^2 + c];
        Sqrt[iters/maxiter]],
   {{z, _Complex}},
   CompilationTarget \[Rule] "C",
   RuntimeOptions \[Rule] "Speed"];
Run Code Online (Sandbox Code Playgroud)

并做

Manipulate[
 Grid[
  {{DensityPlot[mndpt[x + y*I, 200],
        {x, -2, 1}, {y, -1.5, 1.5},
        PlotRange \[Rule] {0, 1}, PlotPoints \[Rule] 80, 
     ColorFunction \[Rule] "Rainbow"],
    DensityPlot[mndpt[x + y*I, 200],
        Dynamic@{x, p1[[1]], p2[[1]]}, Dynamic@{y, p1[[2]], p2[[2]]},
        PlotRange \[Rule] {0, 1}, PlotPoints \[Rule] 80, 
     ColorFunction …
Run Code Online (Sandbox Code Playgroud)

frontend wolfram-mathematica interactive dynamic

17
推荐指数
1
解决办法
1110
查看次数

Mathematica中的#含义是什么?

有谁知道Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]Mathematica中的#in是什么意思?

那究竟是Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]什么意思呢?

谢谢.

syntax wolfram-mathematica

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

检索自动生成的绘图范围

是否可以在Mathematica中检索自动生成的绘图范围?

例如,如果我这样做:

Plot[Sin[x], {x, 0, 2 \[Pi]}, PlotRange -> Automatic]
Run Code Online (Sandbox Code Playgroud)

那么我想知道Y轴的范围是-1到1,X轴的范围是0到2 pi.

wolfram-mathematica

9
推荐指数
1
解决办法
1502
查看次数

使用PlotMarkers减慢ListPlot

我这样做:

ClearAll[matrix];
matrix[p_,q_,nu_:0]:=Module[{sigma},
 sigma=p/q;
 N@SparseArray[
  {{m_,m_}\[Rule]2Cos[2\[Pi]*m*p/q+nu],{i_,j_}/;
   Abs[i-j]\[Equal]1\[Rule]1},{q,q}]]

ClearAll[attachsigma]
attachsigma[sigma_,lst_]:={sigma,#}&/@lst
Run Code Online (Sandbox Code Playgroud)

然后执行

fracs = Table[p/q, {q, 2, 30}, {p, 2, q}] // Flatten // DeleteDuplicates;
pq = {Numerator@#, Denominator@#} & /@ fracs;
(ens = Eigenvalues[#] & /@ 
Normal /@ (matrix[#[[1]], #[[2]]] & /@ pq);) // Timing
pts = Flatten[#, 1] &@MapThread[attachsigma, {fracs, ens}];
Run Code Online (Sandbox Code Playgroud)

最后我将点绘制如下(这是问题的真正要点):

plot = ListPlot[pts,
 PlotMarkers \[Rule] Graphics[{PointSize[Tiny], Point[{0, 0}]}]]
Run Code Online (Sandbox Code Playgroud)

霍夫斯塔特

在我的机器上计算所有点大约需要2.6秒,但是该图需要大约25秒.另一方面,如果我这样绘制它

ListPlot[pts]
Run Code Online (Sandbox Code Playgroud)

霍夫斯塔特

然后它几乎是瞬间的,因为它应该(它只是5256点).所以,这似乎让PlotMarkers事情变得非常缓慢.

任何人都可以解释为什么(这个我模糊地理解,与Sort你给它自定义排序功能的情况类比),更重要的是,b)解释如何避免这种减速?我试图创建比这更多点的情节,所以它们真的很慢; 另外,我创造了很多(实际上是一部电影).

一种解决方案是不绘制所有这些,但是当我改变参数时,找出我应该包括哪些以及哪些不存在变得非常重要(如果我只需要这一帧,这当然会起作用).所以,我想在不删除积分的情况下加快情节创作.

编辑:在Sjoerd的提示后回答:

ListPlot[pts] /. Point[List[x___]] \[RuleDelayed] {PointSize[Tiny], Point[List[x]]}
Run Code Online (Sandbox Code Playgroud)

瞬间产生正确的东西.这只是用手将较小的点替换为结构Points内部 …

wolfram-mathematica

8
推荐指数
2
解决办法
1421
查看次数

在矩阵中选择感兴趣区域中的数据(使用Mathematica)

我有一个(mathematica 8.0.1.0-)问题,我自己无法解决.我有一个矩阵中的测量数据,我想选择其中的一些,然后将它们加起来.

为了更好地解释我的问题,这是一个简单的例子.数据可以由矩阵S产生:

S = Table[ -Sin[i/2] - Sin[j/2], {i,20}, {j,20}];
Run Code Online (Sandbox Code Playgroud)

它们可以很好地绘制:

xmin = N[Min[S]]; 
xmax = N[Max[S]]; 
mycolorfun = Function[ Blend[{Blue,Cyan,Green,Yellow,Red},#] ];
Run Code Online (Sandbox Code Playgroud)

MatrixPlot[S, PlotRange -> {All,All,All}, AspectRatio -> 1/1,
   ColorFunction -> (mycolorfun[ Rescale[ #1{xmin,xmax} ] ]&),
   ColorFunctionScaling -> False, MaxPlotPoints -> Automatic,
   FrameLabel -> {y,x} ]
Run Code Online (Sandbox Code Playgroud)

那么应该得到一张类似于这张的照片:

在此输入图像描述

现在我想选择棕色绘制多边形内部的数据.这些数据应该在最后加起来.

我怎样才能做到这一点?好吧,我可以使用矩形并通过选择/猜测好的开始和结束索引来构建子矩阵.然后我只需要构建这个子矩阵的总和.但我更喜欢多边形(如果我们不争论矩形值与多边形线交叉的小问题,则更为精确).如果我可以通过将多边形"绘制"到矩阵中来直接选择我感兴趣的区域(ROI),我会喜欢它(不再需要选择/猜测矩阵索引).
有人可以帮助我解决我的问题吗?如果使用mathematica无法解决,是否还有其他可以使用的程序?

我会很乐意提供一些帮助和提示!

wolfram-mathematica image-processing

8
推荐指数
3
解决办法
2407
查看次数

mathematica中便携式笔记本电脑的相对路径

我找不到如何在mathematica中使用相对路径.我的目录结构很简单.

Import["G:\\Research\\Acc and Vel Runs\\5-24\\Mathematica\\Data\\250 \
Acc.xls"][[1]] // TableForm  
Run Code Online (Sandbox Code Playgroud)

通过使用菜单中的插入路径演示绝对路径.我希望这款笔记本便携.我想给某人"Mathematica"目录,我希望他们能够运行代码.我不希望路径中断,因为它将在不同的机器上运行.基本上我只想使用从上面显示的Mathematica级别开始的相对路径.

windows wolfram-mathematica file relative-path

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