我试图在Mathematica中绘制一个在单位单位上定义的函数.举一个随机的例子,假设我想在所有x1,x2,x3上绘制sin(x1*x2*x3),使得x1,x2,x3> = 0和x1 + x2 + x3 = 1.是否有一个整洁的方式这样做,除了明显的写作方式之外
Plot3D[If[x+y<=1,Sin[x y(1-x-y)]],{x,0,1},{y,0,1}]
Run Code Online (Sandbox Code Playgroud)
?
理想情况下,我想要的是一种仅在单纯形式上绘图的方式.我发现网站http://octavia.zoology.washington.edu/Mathematica/有一个旧包,但它不适用于我最新版本的Mathematica.
当我运行以下代码时
pMin = {-3, -3};
pMax = {3, 3};
range = {pMin, pMax};
Manipulate[
GraphicsGrid[
{
{Graphics[Locator[p], PlotRange -> range]},
{Graphics[Line[{{0, 0}, p}]]}
}, Frame -> All
],
{{p, {1, 1}}, Locator}
]
Run Code Online (Sandbox Code Playgroud)

我希望Locator控件在第一个Graph的范围内,但它可以在整个GraphicsGrid区域内移动.我的代码中有错误吗?
我也试过了
{{p, {1, 1}}, pMin, pMax, Locator}
Run Code Online (Sandbox Code Playgroud)
代替
{{p, {1, 1}}, Locator}
Run Code Online (Sandbox Code Playgroud)
但它表现完全错误.
UPDATE
感谢大家,这是我的最终解决方案:
Manipulate[
distr1 = BinormalDistribution[p1, {1, 1}, \[Rho]1];
distr2 = BinormalDistribution[p2, {1, 1}, \[Rho]2];
Grid[
{
{Graphics[{Locator[p1], Locator[p2]},
PlotRange -> {{-5, 5}, {-5, 5}}]},
{Plot3D[{PDF[distr1, {x, y}], PDF[distr2, {x, y}]}, {x, -5, …Run Code Online (Sandbox Code Playgroud) 我试图把赛车圈的位置表并绘制一个类似的圈图http://www.fia.com/en-GB/sport/championships/f1/2010/bahrain/Pages/lap_chart.aspx.
每排对应一圈,第一圈为第一排.汽车编号按照它们通过起点/终点线的顺序列在每一行中.表格可能如下所示(4车比赛,6圈:
1 3 2 4
1 3 2 4
1 3 4 2
3 1 4 2
3 1 4 2
3 4 1 2
在上面的例子中,第一圈后的订单是1,3,2,4,在6圈比赛结束时,3号车赢了,4号车排在第2圈,依此类推.
这很容易错误地绘制,我这样做:
ListLinePlot[Table[Position[data,x],{x,4}]]
Run Code Online (Sandbox Code Playgroud)

这确实产生了一圈的图表,但它在顶部底部和四号位第一的位置,而我真正需要的是Y轴运行4-3-2-1所以第一个位置是在顶部.
如何反转y轴使其从1(顶部)到n(底部)?
我正在寻找Mathematica中以小写字母开头的危险符号名称的完整列表.
在这一刻,我知道三个这样的名称:min,max和lim.这些名称出现在LimitsPositioningTokens列表中,并且至少在使用上标输入FrontEnd时被视为运算符:
In[3]:= Options[$FrontEnd,LimitsPositioningTokens]
Out[3]= {LimitsPositioningTokens->{\[Sum],\[Product],\[Intersection],
\[Union],\[UnionPlus],\[Wedge],\[Vee],lim,max,min,\[CirclePlus],
\[CircleMinus],\[CircleTimes],\[CircleDot]}}
Run Code Online (Sandbox Code Playgroud)
例如,键入FrontEnd以下(使用Ctrl+ ^来制作上标 - 这很重要!):
In[1]:= max^n+4
(max^n+4)//HoldComplete//FullForm
Out[1]= 4 max^n
Out[2]//FullForm= HoldComplete[Times[Power[max,n],Plus[4]]]
Run Code Online (Sandbox Code Playgroud)

您会看到在这种情况下max^n+4解释为4*max^n.
任何人都可以解释什么LimitsPositioningTokens选项真的吗?
在Mathematica中是否还有以小写字母开头的其他危险符号?
我简单的第一个调色板假设:
$PathActionMenu["test",{"The Simple Packages Path":> AppendTo[$Path, ToFileName[{NotebookDirectory[], "02 Simple Packages"}]]}]
ActionMenu["Load Packages", {"Get my package":> Get["myPackage`"]}]
OpenerView[{"my Package", Button["construct", Paste[StandardForm@Defer@construct[Placeholder["description"],Placeholder["another description"]]]]}]
问题是当我点击"获取我的包"动作菜单项时,我不断收到"影子"消息.我确信我不是故意加载包装的.当我点击"构造"时,它写道Global`construct["description","another description"].但是我确定在获得包之前我没有定义它(我在测试中杀死了内核).
你知道什么是错的吗?
(我Get在我的包上使用,而不是Needs,以确保包上下文的干净启动)
另外:你知道一种更简单的方法Paste[StandardForm@Defer...吗,即使没有选择单元格,也可以确保不评估粘贴表达式并进入输入单元格?
我想使用一对滑块为两个变量nLo和nHi设置整数值,每个变量的范围可以从1到100,但受nHi> = nLo的限制.所以我为每个变量设置了一个滑块,其范围依赖于另一个变量:
nLo = 1; nHi = 100;
Column[
{
Labeled[Slider[Dynamic[nLo], {1, Dynamic[nHi], 1},
Appearance -> "Labeled"], "nLo", Left
],
Labeled[Slider[Dynamic[nHi], {Dynamic[nLo], 100, 1},
Appearance -> "Labeled"], "nHi", Left
],
Dynamic[{nLo, nHi}]
}
]
Run Code Online (Sandbox Code Playgroud)
问题是,只要我调整nHi,它的值就变为实数(显示小数点)而不是整数.我认为这是因为nHi的滑块无法判断它的第一个范围参数Dynamic [nLo]实际上是一个整数,所以它默认为实数值.关于如何强制nHi保持整数值的任何建议?(Linux Mathematica v8.0.1)
我发现如果选项存在,a MatrixPlotin ClickPane会导致我的一个处理器内核以大约50%的活动循环FrameTicks -> Automatic.我已将代码减少到以下(实际上没有做任何事情):
a = ConstantArray[0, {2, 11}];
ClickPane[
Dynamic@
MatrixPlot[a, FrameTicks -> Automatic],
# &
]
Run Code Online (Sandbox Code Playgroud)

切换到FrameTicks -> None停止核心活动.

为了研究处理器行为,我让它Clock在20秒None和Automatic20秒之间循环(首先删除上面的ClickPane):
ClickPane[
Dynamic@
MatrixPlot[a, FrameTicks -> ft],
# &
]
Dynamic[ft = {Automatic, None}[[Clock[{1, 2, 1}, 20]]]]
Run Code Online (Sandbox Code Playgroud)
这给了我以下处理器活动显示:

这是在我的Win7-64/MMA 8.0.1系统上.
我的问题是:
MatrixPlot[a](没有任何FrameTicks设置)有这些奇怪的帧勾选?
当我写作时
Row[ {Framed@Column[{1,2}], Framed@"123"}, Alignment->Top]
Run Code Online (Sandbox Code Playgroud)

或者
Row[ {Framed@Column[{1,2}], Framed@"123"}, Alignment->{Left,Top}]
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,都不会发生任何事情。默认对齐方式为居中,并且列出的元素与彼此的中线对齐。
Grid[ {{Framed@Column[{1,2}], Framed@"123"}}, Alignment->Top]
Run Code Online (Sandbox Code Playgroud)

工作得很好,但是Grid[]当 a 就足够了时就有点过分了Row[]。
帮助系统说对齐应该可以工作({Left,Baseline}作为示例列出),但它似乎无法更改。我正在使用 v8.0.4。
当我绘制exp,2 ^ x,3 ^ x等多个函数时,是否可以生成每个函数的标签?
我的代码现在:
Plot[{Exp[x], 2^x, 3^x}, {x, -5, 2}, AspectRatio -> Automatic, PlotStyle -> {Red, Green, Blue}]
Run Code Online (Sandbox Code Playgroud)
我的意思是在这种情况下生成3个标签,告诉用户它是什么功能.
如:

你是如何产生的?