小编Sas*_*sha的帖子

随机有理数生成

理性是可以枚举的.例如,这个代码在开放区间0..1中找到第k个有理数,如果假设是互质的,{n1, d1}则排序在之前.{n2, d2}(d1<d2 || (d1==d2 && n1<n2)){n,d}

RankedRational[i_Integer?Positive] := 
 Module[{sum = 0, eph = 1, den = 1},
  While[sum < i, sum += (eph = EulerPhi[++den])];
  Select[Range[den - 1], CoprimeQ[#, den] &][[i - (sum - eph)]]/den
  ]

In[118]:= Table[RankedRational[i], {i, 1, 11}]

Out[118]= {1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6}
Run Code Online (Sandbox Code Playgroud)

现在我想生成随机有理数,给出分母的上限 - 均匀分布,这样对于足够大的分母有理数将在单位区间内均匀分布.

直觉上,人们可以选择具有相同权重的小分母的所有有理数:

RandomRational1[maxden_, len_] := 
 RandomChoice[(Table[
     i/j, {j, 2, maxden}, {i, 
      Select[Range[j - 1], CoprimeQ[#, j] &]}] // Flatten), …
Run Code Online (Sandbox Code Playgroud)

random math wolfram-mathematica

16
推荐指数
1
解决办法
2442
查看次数

告诉Plot在Mathematica中设置矢量值黑盒功能的样式

假设我编写了一个黑盒函数,它以数字方式评估昂贵的复数值函数,然后返回实部和虚部.

fun[x_?InexactNumberQ] := Module[{f = Sin[x]}, {Re[f], Im[f]}]
Run Code Online (Sandbox Code Playgroud)

然后我可以像往常一样在Plot中使用它,但是Plot不能识别该函数返回一对,并且颜色两者都是相同的颜色.如何告诉Mathematica指定的函数总是返回一个固定长度的向量?或者这个情节怎么样?

两个曲线颜色相同的情节的屏幕截图

编辑:鉴于试图回答问题的尝试,我认为只有在样式作为获得的图形的后处理执行时,避免双重重新评估才有可能.最有可能的是以下不健壮,但它似乎适用于我的例子:

gr = Plot[fun[x + I], {x, -1, 1}, ImageSize -> 250];
k = 1;
{gr, gr /. {el_Line :> {ColorData[1][k++], el}}}
Run Code Online (Sandbox Code Playgroud)

两个图像,一个应用了样式

wolfram-mathematica

11
推荐指数
1
解决办法
689
查看次数

如何在Mathematica中有效地设置矩阵的次要?

在观察belisarius关于生成具有均匀分布元素的非奇异整数矩阵的问题时,我正在研究Dana Randal 撰写的一篇论文," 高效生成随机非奇异矩阵 ".提出的算法是递归的,并且涉及生成较低维度的矩阵并将其分配给给定的次要.我使用Insert和组合Transpose,但必须有更有效的方法.你会怎么做?

以下是代码:

Clear[Gen];
Gen[p_, 1] := {{{1}}, RandomInteger[{1, p - 1}, {1, 1}]};
Gen[p_, n_] := Module[{v, r, aa, tt, afr, am, tm},
  While[True,
   v = RandomInteger[{0, p - 1}, n];
   r = LengthWhile[v, # == 0 &] + 1;
   If[r <= n, Break[]]
   ];
  afr = UnitVector[n, r];
  {am, tm} = Gen[p, n - 1];
  {Insert[
    Transpose[
     Insert[Transpose[am], RandomInteger[{0, p - 1}, n - 1], r]], …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

6
推荐指数
1
解决办法
881
查看次数

标签 统计

wolfram-mathematica ×3

math ×1

random ×1