如果我有一个Manipulate语句,例如:
Manipulate[
Graphics[Line[{{0, 0}, pt}], PlotRange -> 2], {{pt, {1, 1}},
Locator}]
Run Code Online (Sandbox Code Playgroud)

如何以最简单的方式更改Locator对象的外观?我是否必须采用动态声明?具体来说,我本来希望使定位器不可见.
我想创建一个图形(图形理论),其中某些边缘与其他边缘具有不同的颜色,这将用于突出图形中从一个顶点到另一个顶点的路径.
以下是一些具有不同颜色边缘的示例http://demonstrations.wolfram.com/AGraphTheoryInterpretationOfTheSumOfTheFirstNIntegers/和http://demonstrations.wolfram.com/Ramsey336/.我查看了这些的源代码,但这些解决方案似乎很复杂.我需要一个简单的例子来工作.我估计我需要使用EdgeRenderingFunction作为其中一个选项GraphPlot.
此外,在"更多信息"部分的EdgeRenderingFunction文档中,它说:

这看起来很有用,但遗憾的是没有编码示例可供尝试.
从字面上看,我尝试了类似的东西
GraphPlot [{1 - > 2,2 - > 3,3 - > 4,4 - > 1,2 - > 4,4 - > 5,4 - > 6},VertexLabeling - > True,
EdgeRenderingFunction - > g [{ 1,2},{1,2},红色]]
但那不行.它需要更聪明的东西.
在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) 我正在为Mathematica中的分压器计算一个小接口.我有两个滑块(z1和z2)代表电阻值,还有几个滑块代表Vin作为正弦曲线.
问题是可用电阻值的范围(在现实世界中)大致为对数{r, 100, 1,000,000}.r但是,如果我将滑块范围设置为,则选择常见的低电阻值是不切实际的.{100, 10,000}.
是否可以创建一个扫过对数范围的滑块?
Manipulate[
Grid[{{Plot[(VinRCos[t] + VinC), {t, -3, 9},
PlotRange -> {-1, VMax}, AxesLabel -> {t, Vin}]}, {Plot[
z2/(z1 + z2)(VinR*Cos[t] + VinC), {t, -3, 9},
PlotRange -> {-1, VMax}, AxesLabel -> {t, Vout}]}},
ItemSize -> 20],
{{z1, 10000}, 10, 1000000, 10}, {z1}, {{z2, 10000}, 10,
1000000}, {z2}, Delimiter, {{VinR, 2.5}, 0,
5}, {VinR}, {{VinC, 2}, -VMax, VMax}, {VinC}]
所以我有一个值矩阵,行对应于数据集,我想使用ListPlot绘制每一个,但我希望有一个不同于索引的x轴.在matlab中我会:
x = 0:4;
ys = [10 20 40 80 160;
20 40 80 160 320;
30 60 120 240 480]';
plot(x,ys)
Run Code Online (Sandbox Code Playgroud)
这将给出三行x值为0-4,y值为每列.
我在Mathematica中最接近的是
x = Range[0,4];
ys = {{10, 20, 40, 80, 160},
{20, 40, 80, 160, 320},
{30, 60, 120, 240, 480}};
ListPlot[Transpose[{x,#}]& /@ ys]
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?这看起来有点神秘.希望有一个我缺少的功能或选项.
我有一个10乘10矩阵.我想从这个主矩阵形成一个子矩阵,使用除第1,第2和第8列和行之外的所有行和列.
我知道Part可以用来形成子矩阵,但是这些例子主要是关于仅使用连续的行和列来形成子矩阵.
专家们的轻量级问题.我无法想象这个替换的正确语法.我有这个清单
Clear[a, b, c, d]
polesList = {{3, {a, b}}, {5, {c, d}}};
Run Code Online (Sandbox Code Playgroud)
它是一个列表的形式,子列表每个都有{order,{x,y}}的形式,我想生成这个形式的新列表(x + y)^ order
目前这就是我的工作,它有效:
((#[[2, 1]] + #[[2, 2]])^#[[1]]) & /@ polesList
(* -----> {(a + b)^3, (c + d)^5} *)
Run Code Online (Sandbox Code Playgroud)
但我一直在努力学习使用,ReplaceAll因为它比纯函数更清晰,因为我可以更好地看到模式,如下所示:
Clear[a, b, c, d, n]
polesList = {{3, {a, b}}, {5, {c, d}}};
ReplaceAll[polesList, {n_, {x_, y_}} :> (x + y)^n] (*I thought this will work*)
Run Code Online (Sandbox Code Playgroud)
我得到了奇怪的结果,这是
{(5 + c)^3, {(5 + d)^a, (5 + d)^b}}
Run Code Online (Sandbox Code Playgroud)
使用ReplaceAll而不是使用纯函数方法进行此替换的正确语法是什么?
谢谢
更新:
我发现使用Replace而不是 …
给定坐标对
data = {{1, 0}, {2, 0}, {3, 1}, {4, 2}, {5, 1},
{6, 2}, {7, 3}, {8, 4}, {9, 3}, {10, 2}}
Run Code Online (Sandbox Code Playgroud)
我想提取山峰和山谷,因此:
{{4, 2}, {5, 1}, {8, 4}}
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案是这种笨拙:
Cases[
Partition[data, 3, 1],
{{ta_, a_}, {tb_, b_}, {tc_, c_}} /; Or[a < b > c, a > b < c] :> {tb, b}
]
Run Code Online (Sandbox Code Playgroud)
您可以看到,通过使用三倍大小的数据集开始Partition.我认为可以使用Cases和PatternSequence提取这些信息,但这种尝试不起作用:
Cases[
data,
({___, PatternSequence[{_, a_}, {t_, b_}, {_, c_}], ___}
/; Or[a < b > c, a …Run Code Online (Sandbox Code Playgroud) 如何绘制相同3D图中的平面和直线?
我试图让Mathematica近似一个积分,它是各种参数的函数.我不需要它非常精确 - 答案将是一小部分,5位数将是不错的,但我会满足于2.
问题是,主要有一个象征性的积分积分,我不能使用NIntegrate,因为它的符号.
F[x_, c_] := (1 - (1 - x)^c)^c;
a[n_, c_, x_] := F[a[n - 1, c, x], c];
a[0, c_, x_] = x;
MyIntegral[n_,c_] :=
NIntegrate[Integrate[(D[a[n,c,y],y]*y)/(1-a[n,c,x]),{y,x,1}],{x,0,1}]
Run Code Online (Sandbox Code Playgroud)
Mathematica在n 大于2且c大于3 时开始悬挂(通常为两者n并且c稍微高一些).
有没有重写这个表达式的技巧,以便更容易评估它?我已经打了不同的WorkingPrecision和AccuracyGoal和PrecisionGoal上外的选项NIntegrate,但没有帮助内积分,这就是问题的所在.事实上,对于更高的n和c,我甚至不能让Mathematica扩展内在导数,即
Expand[D[a[4,6,y],y]]
Run Code Online (Sandbox Code Playgroud)
挂起.
我正在为学生使用Mathematica 8.
如果有人有任何关于我如何让M近似这个的提示,我将不胜感激.