F#有一堆标准的序列操作符,我已经了解并喜欢我对Mathematica的体验.F#现在得到了很多关注,当它一般发布时,我打算经常使用它.
现在,由于F#尚未普遍发布,我无法在生产代码中真正使用它.LINQ使用类似SQL的名称来实现其中一些运算符(例如'select'是'map','where'是'filter'),但是我找不到'fold','iter'或'partition'的实现.
有没有人见过标准序列运算符的任何C#实现?这是某人应该写的东西吗?
闭门器的注意事项:这是关于编程语言(Mathematica)的问题,而不是关于学科/科学(数学)的问题.
为什么是
N[D[Sin[x], x] /. x -> Pi/4]
(*
Out -> 0.707107
*)
Run Code Online (Sandbox Code Playgroud)
但
N[D[Abs[x], x] /. x -> Pi/4]
(*
Out -> Derivative[1][Abs][0.785398]
*)
Run Code Online (Sandbox Code Playgroud)
?
强制数值结果的更好方法是什么?
Infix[]
仅适用于第一级:
Infix[(c a^b)^d]
(*
-> (a^b c) ~Power~ d
*)
Run Code Online (Sandbox Code Playgroud)
因为我想(不要问为什么)将完整的表达式切换为中缀符号,我尝试了类似的东西:
SetAttributes[toInfx, HoldAll];
toInfx[expr_] := Module[{prfx, infx},
prfx = Level[expr, {0, Infinity}];
infx = Infix /@ prfx /. {Infix[a_Symbol] -> a, Infix[a_?NumericQ] -> a};
Fold[ReplaceAll[#1, #2] &, expr, Reverse@Thread[Rule[prfx, infx]]]
]
k = toInfx[(c a^b)^d]
(*
-> (c ~Times~ (a ~Power~ b)) ~Power~ d
*)
Run Code Online (Sandbox Code Playgroud)
但这有两个明显的问题,因为
(c a^b)^d == a~Power~b~Times~c~Power~d
k = toInfx[a/b + ArcTan[a/b]]
是否有一种简单的方法来Infix[]
为All(叶子)工作?
我有一些由'折线'组成的地图文件(每条线只是一个顶点列表)代表隧道,我想尝试找到隧道的"中心线"(粗略地显示在下面的红色).
我过去在使用Delaunay三角测量方面取得了一些成功,但我想避免使用该方法,因为它(通常)不允许轻松/频繁地修改我的地图数据.
关于我如何能够做到这一点的任何想法?
有几次我发现我有一个系统,我需要指定所有变量都有不同的值(即非重复).
我经常做这样的事情:
k = {a, b, c, d, e, f, g};
Reduce[
a != 2 && f == a + b && g == c - d && f == (d + e)/2 && f == e + g &&
First[And @@@ {0 < # < 8 & /@ k}] &&
Times@(Sequence @@ (Subsets[k, {2}] /. {x_, y_} -> (x - y))) != 0,
k, Integers]
Run Code Online (Sandbox Code Playgroud)
其中Reduce等式的最后部分
Times@(Sequence @@ (Subsets[k, {2}] /. {x_, y_} -> (x - y))) != 0 …
Run Code Online (Sandbox Code Playgroud) 我有几个大的2D数组,如:
1 2 3 4 5
--------------
1 | 0 1 1 1 0
2 | 0 1 1 1 0
3 | 0 1 0 1 1
4 | 0 1 0 1 1
Run Code Online (Sandbox Code Playgroud)
因此,最大的矩形块(按区域)满足==1
从(1,2)开始,其尺寸为(2,3).
如何在没有显式迭代的情况下使用Mathematica找到它?
注意:
只是为了简化您的测试,这是我的一个样本:
matrix = ImageData@Binarize@Import@"http://i.stack.imgur.com/ux7tA.png"
Run Code Online (Sandbox Code Playgroud) 我遇到Mathematica中的"没有更多可用内存"错误消息.我明白"Parallelize []"并不(显然)会帮助我.两者都没有"ClearSystemCache []".
是什么赋予了?我只需要更多内存吗?
Needs["VectorAnalysis`"]
Needs["DifferentialEquations`InterpolatingFunctionAnatomy`"];
Clear[Eq4, EvapThickFilm, h, S, G, E1, K1, D1, VR, M, R]
Eq4[h_, {S_, G_, E1_, K1_, D1_, VR_, M_, R_}] := \!\(
\*SubscriptBox[\(\[PartialD]\), \(t\)]h\) +
Div[-h^3 G Grad[h] +
h^3 S Grad[Laplacian[h]] + (VR E1^2 h^3)/(D1 (h + K1)^3)
Grad[h] + M (h/(1 + h))^2 Grad[h]] + E1/(
h + K1) + (R/6) D[D[(h^2/(1 + h)), x] h^3, x] == 0;
SetCoordinates[Cartesian[x, y, z]];
EvapThickFilm[S_, G_, E1_, K1_, D1_, VR_, M_, R_] := …
Run Code Online (Sandbox Code Playgroud) 我需要建立一个局部的Inverted Index
.就像是:
l = {{x, {h, a, b, c}}, {y, {c, d, e}}}
iI[l]
(*
-> {{a, {x}}, {b, {x}}, {c, {x, y}}, {d, {y}}, {e, {y}}, {h, {x}}}
*)
Run Code Online (Sandbox Code Playgroud)
我认为它的作用非常清楚.在输入列表中,{x,y ...}是唯一的,而{a,b,c,..}则不是.输出应该按顺序排序#[[1]]
.
现在,我这样做:
iI[list_List] := {#, list[[Position[list, #][[All, 1]]]][[All, 1]]} & /@
(Union@Flatten@Last@Transpose@list)
Run Code Online (Sandbox Code Playgroud)
但是对于这么简单的任务看起来太复杂了,看起来太慢了,我应该能够应付军团.
试驾比较你的结果:
words = DictionaryLookup[];
abWords = DictionaryLookup["ab" ~~ ___];
l = {#, RandomChoice[abWords, RandomInteger[{1, 30}]]} & /@ words[[1 ;; 3000]];
First@Timing@iI[l]
(*
-> 5.312
*)
Run Code Online (Sandbox Code Playgroud)
那么,加速的任何想法?
有没有办法将条件格式转换为Excel中的静态格式?
我正在尝试将一系列Excel工作表导出到一个新的工作簿,外观相同但没有公式,链接等.这里的问题是我有条件格式依赖于导出范围之外的计算.
我已经尝试将工作簿保存到.html,奇怪的是IE格式化显示,但在Excel中重新打开时却没有.
由于我从未发现(或者我从来没有找到足够的)一篇关于如何管理init.m文件的好文章,我最终开发了自己的"标准",但我想知道我做得多么糟糕.
例如,我通常的init.m存储在C:\Documents and Settings\All Users\Application Data\Mathematica\Kernel\init.m
(Windows)中,我使用文本编辑器对其进行编辑.
由于我不希望定义进入全局上下文,因此内容类似于:
(** User Mathematica initialization file **)
Begin["MyInitContext`"];
Cl:=Clear["Global`*"];
(* Other definitions in this Context *)
End[]; (* End Context *)
$ContextPath = Prepend[$ContextPath,"MyInitContext`"];
Run Code Online (Sandbox Code Playgroud)
我不从init.m加载包,因为我想要严格控制我加载的内容,所以我只在这里定义我每天使用的实用程序函数的快捷方式和一些选项.
那么:有没有提到良好做法?更好的方法来实现这种行为?有什么警告吗?