这是一个奇怪的结果,在这个例子中定义为"functionB"的函数.有人可以解释一下吗?我想绘制functionB[x]和functionB[Sqrt[x]],它们必须是不同的,但是这个代码表示functionB[x] = functionB[Sqrt[x]],这是不可能的.
model = 4/Sqrt[3] - a1/(x + b1) - a2/(x + b2)^2 - a3/(x + b3)^4;
fit = {a1 -> 0.27, a2 -> 0.335, a3 -> -0.347, b1 -> 4.29, b2 -> 0.435,
b3 -> 0.712};
functionB[x_] := model /. fit
Show[
ParametricPlot[{x, functionB[x]}, {x, 0, 1}],
ParametricPlot[{x, functionB[Sqrt[x]]}, {x, 0, 1}]
]
Run Code Online (Sandbox Code Playgroud)
functionB[x]必须与之不同functionB[Sqrt[x]],但在这种情况下,两条线是相同的(这是不正确的).
在Mathematica 8中有一种简单的方法可以执行以下操作吗?
如果图形在两个显示之间没有变化,则布局不应该改变(或者只是最小化).使用新的显示Graph或GraphPlot都是可以接受的.
编辑:本质上我需要类似图形的类似布局.我总是通过修改现有的图形来获得类似的图形,这些图形可能已经布局,但任何通用的解决方案都是可以接受的.
编辑2:这是一个这种事情有用的例子.转到http://ccl.northwestern.edu/netlogo/models/GiantComponent并单击"在浏览器中运行"(需要Java).单击设置,然后单击执行.您可以看到图表的演变.如果我们在Mathematica中这样做,那么每个连续的图形看起来都会完全不同,并且很难看出它是同一个正在发展的图形.在几个应用程序中,能够可视化图形的小变化是非常有用的.但是,如果进行了许多连续的更改,那么重新计算布局是必须的,简单地淡化或突出显示边缘是不够的.同样,这只是一个例子:我不是试图使用Mathematica来动画图形,或者想象巨型组件的出现.
你如何使Mathematica导出Row图形.我不喜欢如何GraphicsRow处理图形,图中的所有宽高比和填充都搞砸了.我喜欢做的是处理每个人的形象,然后使用简单的Row,Column或Grid结合我的数字.举个例子:
g1 = Plot[Sin[x], {x, -Pi, Pi},
Frame -> True, FrameLabel -> {"x", "y"}, ImageSize -> 2.6*72
]
Run Code Online (Sandbox Code Playgroud)
这创造了Sin情节.我现在要做的是创建如下图:
Fig = Row[{g1, g1, g1}]
Run Code Online (Sandbox Code Playgroud)

然后你可以使用 Export
Export["TestFig.pdf", Fig]
Run Code Online (Sandbox Code Playgroud)
这是我在MMA8中获得的pdf:

我刚刚在MMA7中尝试了这个代码,它运行正常.已经有一段时间了,因为我想创建这种类型的数字,我从不打扰检查它是否在MMA8中有效.MMA8中有没有人对此有所解决?
所需的输出是我在MMA7中获得的输出:

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

在现实世界的例子中,图例中有相当多的条目(6),所以如果图例颜色的顺序与条形图中的顺序相匹配则会很好.我意识到我可以设置ChartLegends显示Bottom,但考虑到许多图例条目,看起来不太好.
此外,反转"图例"列表无法按预期工作.传说的文本已重新排序,但颜色未重新排序(见下文),因此图例标题不再与图表中的数据匹配.
更改数据(或数据和图例项)的顺序也不起作用.
有什么建议?

在32位Linux上的Mathematica 8.0.1.0中,表达式
InverseFunction[0 &]@0
Run Code Online (Sandbox Code Playgroud)
回报33/10.(对于其他整数和有理数值也是如此;我用它0作为例子.)
根据以下文件InverseFunction:
正如在没有唯一值的函数中所讨论的那样,许多数学函数没有唯一的反转.在这种情况下,InverseFunction [f]只能表示f的可能反转之一.
由于常量函数0&将返回0而不管其输入如何,它具有无限多个反函数(每个函数仅在0处定义).如此定义,这个答案在规范范围内.
谜团是,为什么它给出33/10而不是任何其他价值?
我正在尝试使用Mathematica示例.这是Theo Gray博客上的那个.
我认为Mathematica自编写该代码以来一定发生了变化(2008年5月),因为尽管几乎改变了一切,但我无法从中得到任何合理的结果.我是否使用ImageData而不是Import?任何人都可以建议这个代码的版本适用于Mathematica 8?
imagePool =
Map[With[{i = Import[#]}, {i, Mean[Flatten[N[i[[1, 1]]], 1]]}] &,
FileNames["Pool/*.jpg"]];
closeMatch[c_] :=
RandomChoice[Take[SortBy[imagePool, Norm[c - #[[2]]] &], 20]][[1]];
Grid[Reverse[
Map[closeMatch, Import["MendeleevIcon.tif"][[1, 1]], {2}]],
Spacings -> {0, 0}]
Run Code Online (Sandbox Code Playgroud) 我有兴趣在不需要张量的列表上使用Listable Compiled函数.我想理解为什么有些函数可以工作,而有些函数却没有,关闭内核.这是一个例子.
假设我们有两个矩阵m1和m2如下.
m1 = {{1.0, 0.5, 0.5}, {0.5, 1.0, 0.5}, {0.5, 0.5, 1.0}};
m2 = {{1.0, 0.5}, {0.5, 1.0}};
Run Code Online (Sandbox Code Playgroud)
我们可以制作两个不同的列表,第一个是张量,第二个不是.
In[3]:= mList1 = {m1, m1};
In[4]:= TensorQ[mList1]
Out[4]= True
In[5]:= mList2 = {m1, m2};
In[6]:= TensorQ[mList2]
Out[6]= False
Run Code Online (Sandbox Code Playgroud)
类似地,令v1和v2为两个向量,vList1和vList2为两个列表,如下所示
v1 = {1.0, 1.5, 0.9};
v2 = {1.1, 0.7};
In[9]:= vList1 = {v1, v1};
In[10]:= TensorQ[vList1]
Out[10]= True
In[11]:= vList2 = {v1, v2};
In[12]:= TensorQ[vList2]
Out[12]= False
Run Code Online (Sandbox Code Playgroud)
现在我们定义两个可列表函数func1和func2
func1 = Compile[{{m, _Real, 2}, {v, _Real, 1}},
m.v,
RuntimeAttributes -> Listable …Run Code Online (Sandbox Code Playgroud) 我在Cell > Cell properties菜单中注意到我最近添加了一个项目,但我确实不确定(8.0.4/Win在这里).它被称为Initialization Command:

在我的文档中心找不到它.它似乎也不在网上参考:

知道这应该做什么吗?据我所知,它的效果与Initialization Cell菜单项相同.
它曾经是Mathematica 7中的Ctrl+ =,但在Mathematica 8中,而不是在下面写,这个快捷方式开始自由格式输入.tutorial/KeyboardShortcutListing上的文档尚未更新.现在使用哪种快捷方式写下面的?
检查计划任务是否处于活动状态的首选方法是什么?
我将在下面概述我的解决方案,但我不确定这确实是最好的方法.
计划任务的创建方式如下:
In[1]:= myTask=CreateScheduledTask[Print["task 1"], 30]
Out[1]= ScheduledTaskObject[1,Print[task 1],{30,Infinity},Automatic,False]
Run Code Online (Sandbox Code Playgroud)
我们可以检查这样的现有任务:
In[2]:= ScheduledTasks[]
Out[2]= {ScheduledTaskObject[1,Print[task 1],{30,Infinity},Automatic,False]}
Run Code Online (Sandbox Code Playgroud)
ScheduledTaskObject(True或False)中的最后一个条目似乎表示任务是否已启动.
现在让我们开始任务,并将变量的内容myTask与返回的列表进行比较ScheduledTasks[].
In[3]:= StartScheduledTask[myTask]
Out[3]= ScheduledTaskObject[1,Print[task 1],{30,Infinity},Automatic,False]
In[4]:= {ScheduledTasks[],myTask}
Out[4]= {{ScheduledTaskObject[1,Print[task 1],{30,Infinity},Automatic,True]},
ScheduledTaskObject[1,Print[task 1],{30,Infinity},Automatic,False]}
Run Code Online (Sandbox Code Playgroud)
请注意,它们不同.变量显示Falsewhile ScheduledTasks[]显示为false.这表明该变量实际上并不包含任务对象.通过myTask直接修改变量,我们无法修改任务.任务的真实状态由返回ScheduledTasks[].
尽管ScheduledTaskObject表达式中的第一个条目是与任务相对应的唯一编号,但看起来是合理的.因此,对任务执行的任何手动操作都可以使用此数字作为"句柄",我们可以使用以下标识符检查任务状态1:
Cases[ScheduledTasks[], ScheduledTaskObject[1,__,state_] :> state]
Run Code Online (Sandbox Code Playgroud)
我完全不确定这种方法(使用来自的标识符ScheduledTaskObject)是否正确.我注意到在新内核中已经有一些任务的情况(可能是由于前端---我打开了几个笔记本,有些是动态元素,我一直在试验任务),有时会ScheduledTasks[]返回几个任务具有相同的标识符(通常0).
综上所述:
它是通过标识符处理任务的可靠方式(来自它们的第一个数字ScheduledTaskObject)?
鉴于我们CreateScheduledTask在第一次创建它时得到的表达式,查询计划任务状态的正确方法是什么?
编辑:如果可能的话,让动态单元显示计划任务的状态,而不使用太多的CPU也是很好的.有没有人对如何做到这一点有任何想法?