小编Dav*_*idC的帖子

如何对有理数进行"工作"重复十进制表示?

我已经想出如何使用OverBar显示重复小数的重复部分.

repeatingDecimal实际上不作为重复小数.我想做一个看起来和行为像重复小数的变体.


我如何才能让一个工作重复的十进制表示(可能使用Interpretation[])?


背景

如果我絮絮叨叨,请原谅.这是我的第一个问题,我想明确我的想法.

以下将"绘制"重复的小数.

repeatingDecimal[q2_] :=
 Module[{a},
  a[{{nr__Integer}, pt_}] := 
   StringJoin[
    Map[ToString, 
     If[pt > -1, Insert[{nr}, ".", pt + 1], 
      Join[{"."}, Table["0", {Abs[pt]}], {nr}]]]];
  (* repeating only *)

  a[{{{r__Integer}}, pt_}] := 
   Row[{".", OverBar@StringJoin[Map[ToString, {r}]]}];

  (* One or more non-repeating; 
  more than one repeating digit KEEP IN THIS ORDER!! *)
  a[{{nr__, {r__}}, pt_}] := 
   Row[{StringJoin[
      Map[ToString, 
       If[pt > -1, Insert[{nr}, ".", pt + 1], 
        Join[{"."}, Table["0", {Abs[pt]}], {nr}]]]], 
     OverBar@StringJoin[Map[ToString, {r}]]}];
  (* …
Run Code Online (Sandbox Code Playgroud)

math wolfram-mathematica decimal decimal-point fractions

12
推荐指数
1
解决办法
1929
查看次数

如何制作圆的有向弧(或有向曲线)?

我想在Mathematica中显示有向圆弧,使用简单的东西Arrow.我能想出的最好的例子就是把它钉Arrow在圆弧的一端.但我怀疑有更直接的方法来达到同样的效果.

start=\[Pi];
Manipulate[
Graphics[{
   Arrow[{{Cos[\[Theta] + If[\[Theta] < start, .01, -.01]], 
           Sin[\[Theta] + If[\[Theta] < start, .01, -.01]]}, 
          {Cos[\[Theta]], Sin[\[Theta]]}}],
   Circle[{0, 0}, 1, {start, \[Theta]}]},
PlotRange -> 2], 
{{\[Theta], .7 start}, 0, 2 start} 
           ]
Run Code Online (Sandbox Code Playgroud)

箭头

Arrow接受BSplineCurves,BezierCurves但我不能让他们留在圆弧上. Tube接受3D曲线的公式,但我无法弄清楚如何让它在2D中工作.

欢迎所有建议.如果您的解决方案适用于任何 2D曲线,那就更好了!


结语:

我从这些建议中学到了很多东西:Mark McClure表明,Arrow在给出一系列积分时,它本身可以处理这些要求.

yoda使用ParametricPlot提供了一个相当通用的解决方案.

我最终发现belisarius的建议最有帮助.他的方法是处理熟悉的图形对象的微小变化.最后,我小心翼翼地选择了一个新对象,arcArrow它采用了以下参数Circle:center,radius,{start,finish}. Unprotect还是吓到我了!无论如何,这就是我的定居点.我还固执地坚持了我原来方法的一些特征.

Manipulate[
 Graphics[{  
   arcArrow[center, radius, {start, end}],
   PointSize[Large], Blue, If[showCenter, Point[center]]},
  PlotRange -> p, ImageSize -> 250], …
Run Code Online (Sandbox Code Playgroud)

geometry wolfram-mathematica

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

为什么Mathematica中这些例程的相对效率?

我对Daniel Lichtblau 以两种方式指出的时间差异感到惊讶,以便得出素数因子(PrimeOmega)的数量与PrimeNu整数n 的不同素数因子()的数量之间的差异.所以我决定再深入研究一下.

的功能g1g2下面是的轻微变化那些丹尼尔使用以及其他三个.它们都返回从1到n的无平方整数的数量.但差异相当大.任何人都可以解释差异背后的原因.特别是,为什么Sumg5提供这样的速度优势?

g1[n_] := Count[PrimeOmega[Range[n]] - PrimeNu[Range[n]], 0]

g2[n_] := Count[With[{fax = FactorInteger[#]}, 
 Total[fax[[All, 2]]] - Length[fax]] & /@ Range[n], 0]

g3[n_] := Count[SquareFreeQ/@ Range[n], True]

(* g3[n_] := Count[SquareFreeQ[#] & /@ Range[n], True] Mr.Wizard's suggestion
   incorporated above. Better written but no significant increase in speed. *) 

g4[n_] := n - Count[MoebiusMu[Range[n]], 0]

g5[n_] := Sum[MoebiusMu[d]*Floor[(n - 1)/d^2], {d, 1, Sqrt[n …
Run Code Online (Sandbox Code Playgroud)

algorithm math optimization performance wolfram-mathematica

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

如何在Mathematica 8中以编程方式访问有关"Graph"对象的信息?

我正在尝试访问GraphMathematica 8中对象内的信息.出于某种原因,该Part命令似乎不起作用.

myGraph 是我想要访问的对象.

下面的第一行显示myGraph.其他人则用来检查它.

myGraph

myGraph // FullForm  
myGraph // InputForm  
myGraph // OutputForm    
myGraph[[1]]
myGraph[[2]]  
Run Code Online (Sandbox Code Playgroud)

myGraph

为什么不myGraph[[1]]回来List[1,3,4,2,5] ?[我检查了2级以防万一Graph被一些隐形包装包裹起来. Level[myGraph,1],简单地回来{}.并FullForm[myGraph][[1]]返回图表本身的图片.

我必须忽略一些明显的东西.


编辑

这是我用来生成图表的代码.其中大部分与手头的问题无关.但至少你会使用我正在使用的相同代码.

ClearAll[edges, compatibleQ, adjacentCourses, g];
edges[w_, b_] := 
 Most /@ Accumulate /@ 
   Flatten[Permutations[#] & /@ IntegerPartitions[w, All, b], 1]

compatibleQ[j_, k_, edg_] := 
 If[Intersection[edg[[j]], edg[[k]]] == {}, {j, k}, False]

adjacentCourses[edg_] := 
 Module[{len = Length[edg]},
  Cases[Flatten[Table[compatibleQ[j, k, edg], {j, len}, {k, j, len}], 
    1], …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mathematica-8

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

Mathematica:我可以将BarChart Legend与叠加的条形图相匹配吗?

我希望堆叠条形图中的颜色垂直排列与图表图例中的颜色排列相匹配.但无论我尝试什么,它们都不匹配.这是情况

BarChart[{{5, 37, 56}, {22, 49, 28}, {31, 60, 10}},
   ChartLayout -> "Percentile",
   ChartLegends -> Placed[{"1-Volume", "2-Area", "3-Length"}, Right],
   ChartLabels -> {{"Before", "During", "After"}, None}]
Run Code Online (Sandbox Code Playgroud)

Chart1

在现实世界的例子中,图例中有相当多的条目(6),所以如果图例颜色的顺序与条形图中的顺序相匹配则会很好.我意识到我可以设置ChartLegends显示Bottom,但考虑到许多图例条目,看起来不太好.

此外,反转"图例"列表无法按预期工作.传说的文本已重新排序,但颜色未重新排序(见下文),因此图例标题不再与图表中的数据匹配.

更改数据(或数据和图例项)的顺序也不起作用.

有什么建议?

在此输入图像描述

wolfram-mathematica bar-chart mathematica-8

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

如何将定位器约束到有限(但不常规)的位置?

在Mathematica中,可以通过参数LocatorPane (参见LocatorPane文档)将定位器约束到某些屏幕区域.

三个有序对的列表{{{minX, minY}, {maxX, maxY}, {dX, dY}}}通常是确定定位器行为的关键. {minX, minY}{maxX, maxY}设置区域.{dX, dY}设置跳跃大小:无限制为零,每跳的大小为任何其他正数.

在下面的代码中,{{{-.9, 0}, {1, 0}, {0, 0}}}设置定位器的区域和跳转pts.前两个有序对将定位器限制在数字线上的区间[-9,1].有序对{0, 0}不对任何一个定位器施加额外约束.但是,因为y值只能为零,所以由于前两项定义的区域,两个定位器都不能自由离开x轴.

我想将每个定位器限制在x值中myTicks.(在完整的程序中,myTicks会随着时间的推移而改变,具体取决于用户做出的决定.)由于刻度不是沿x均匀分布,因此无法通过为x-jump设置常量值来解决问题.如果该值考虑了定位器的当前位置,则下一个左跳可能与右跳的大小不同.

myTicks = {-.9, 0, .1, .2, .45, .79, 1};
pts = {{.25, 0}, {.75, 0}};

LocatorPane[Dynamic[pts],
  Graphics[{}, 
    Axes -> {True, False}, 
    PlotLabel -> Row[{"locators at: " , Dynamic[pts[[1, 1]]], " and ", 
       Dynamic[pts[[2, 1]]]}], 
    Ticks -> {myTicks, Automatic}],
{{{-.9, 0}, {1, 0}, …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mouseevent

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

以文本样式更改方程背景颜色

在Mathematica中,当您写入Text样式单元格时,如果创建格式化的等式,例如按"x ctrl_ a",则在选择等式时背景颜色会发生变化.有谁知道这个方程格式区域被调用,特别是在选择方程时如何更改背景颜色.

wolfram-mathematica mathematica-frontend

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

Mathematica,字母代

如果我有一个字母表,让我们说sigma = {1,2,3,4,a,b,c,d,e,f,g}并想生成长度为n的所有单词,有没有办法做到这一点?

我可以Flatten[Outer[Function[{x, y}, {x, y}], sigma, sigma], 1]为wordlength = 2做到这一点,但它并没有更多的字母.排列不起作用,因为它不包括双打. Permutations[sigma, {2}] 例如,不给{a,a}.

有没有一种简单的方法可以做到这一点,或者我必须为它编写一个函数?

这对于n = 2是正确的(但我想要任意n):

{{1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, a}, {1, b}, {1, c}, {1, d}, {1, 
  e}, {1, f}, {1, g}, {2, 1}, {2, 2}, {2, 3}, {2, 4}, {2, a}, {2, 
  b}, {2, c}, {2, d}, {2, e}, {2, f}, {2, g}, {3, 1}, {3, 2}, {3, 
  3}, {3, 4}, {3, a}, {3, b}, {3, c}, {3, …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

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

Mathematica对#^ 2&/ @ Range [n]的令人费解的解释

我对Mathematica对以下内容的回答感到困惑:

ClearAll[n]
#^2 & /@ Range[n]
#^2 & /@ Range[n] // StandardForm
Run Code Online (Sandbox Code Playgroud)

范围1

似乎即使Mathematica(8.0)也不相信它刚才所说的:

#^2 & /@ Range[5]
Range[5^2]
Run Code Online (Sandbox Code Playgroud)

范围2

关于发生了什么的任何想法?

编辑:

这个问题的原始背景如下.我写过

PrimeOmega[Range[n]] - PrimeNu[Range[n]]
Run Code Online (Sandbox Code Playgroud)

因为n会非常大(2 ^ 50),我想我可以通过重写它来节省时间:

 PrimeOmega[#] - PrimeNu[#] &/@Range[n]
Run Code Online (Sandbox Code Playgroud)

回想一下,这可能不是一个好主意.(我本来可以用Module来'计算'Range只一次.)

wolfram-mathematica range

3
推荐指数
2
解决办法
213
查看次数