我有问题使用Which.其中的一个参数(我在做数学的函数arg2)应该是一个Symbol(或None或Full).我希望函数的输出依赖于arg2这样,但它不起作用:
testFunction[arg1_,arg2_:None]:=Which[arg2==None,arg1*2,arg2==Full,arg1*3]
Run Code Online (Sandbox Code Playgroud)
如果arg2是None似乎没有什么问题,但对于arg2是Full,testFunction刚刚返回本身.当使用实数或整数,而不是符号None和Full,testFunction功能正常.
我在测试中使用符号时犯了错误吗?或者在使用Which和符号时我应该注意其他任何"规则" 吗?
我已经搜索了这个和其他网站的答案,但找不到任何答案.Mathematica帮助文件也没有为我提供答案.到处都是我看过哪个不是巫婆符号.
我试图在Mathematica中的点(3,5,1)处评估函数的导数.那么,这就是我的意见:
In[120]:= D[Sqrt[(z + x)/(y - 1)] - z^2, x]
Out[121]= 1/(2 (-1 + y) Sqrt[(x + z)/(-1 + y)])
In[122]:= f[x_, y_, z_] := %
In[123]:= x = 3
y = 5
z = 1
f[x, y, z]
Out[124]= (1/8)[3, 5, 1]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我得到了一些奇怪的输出.有关在(3,5,1)处评估该衍生物的任何提示吗?
当我Simplify[Log[4]/Log[2]]在Mathematica时,它恢复原状.我如何强迫Mathematica回馈2?
Log2[4]收益率为2,但Log2[x]收益率Log[x]/Log[2],表明Mathematica在这里做了一些不寻常的事情.
假设我有这个Mathematica代码,其输出是一个实数,取决于输入,比如x,y,z.如何根据代码在x,y,z中创建实值函数?
如果代码描述了x,y,z之间的简单关系,我可以直接定义这个函数.这里的要点是给定的代码是一个非常复杂的块(或模块).
例如,如果代码简单地对x,y,z求和,我只需定义
f[x_,y_,z_]=x+y+z
Run Code Online (Sandbox Code Playgroud)
如果我有一个非常复杂的例子,如下所示:
s0[a_, b_, x_] :=
{1, 0, (a + b) x + (1 - a - b)}
s1[a_, b_, c_, d_, p_, q_, n_, x_] :=
Which[0 <= x <= c, {2, n - 1, x/c*q + p},
c <= x <= c + d, {2, n, (x - c)/d*p},
c + d <= x <= 1, {1, n + 1, (x - (c + d))/(1 - c - d)*(1 - a - b)}]
s2[s_, t_, …Run Code Online (Sandbox Code Playgroud) 我试图在Mathematica v8中使用PlotLegend绘制一个带有图例的函数列表.作为一个简单的测试,说明我正在尝试做什么.
<<PlotLegends`
test = Table[f[x], {f, {Sin, Cos, Tan, Log, Exp}}]
Plot[test, {x, 0, 1}, PlotRange -> Full, Axes -> {True, False},
PlotStyle -> Thick, AxesOrigin -> {0, 0},
PlotLegend -> {"Sin", "Cos", "Tan", "Log", "Exp"},
LegendPosition -> {0, -0.5}, LegendShadow -> None]
Run Code Online (Sandbox Code Playgroud)
作为输出
{Sin[x], Cos[x], Tan[x], Log[x], E^x}
Run Code Online (Sandbox Code Playgroud)

但是,如果我明确地将表放在Plot命令中,我会得到正确的图例.
Plot[{Sin[x], Cos[x], Tan[x], Log[x], Exp[x]}, {x, 0, 1},
PlotRange -> Full, Axes -> {True, False}, PlotStyle -> Thick,
AxesOrigin -> {0, 0},
PlotLegend -> {"Sin", "Cos", "Tan", "Log", "Exp"}, …Run Code Online (Sandbox Code Playgroud) 我尝试了一些常见的角度,如pi/2,pi/3或pi/6但是它可以工作但是当你使用不常见的角度,如2 rad或12度mathematica不会返回任何值!请不要告诉我mathematica使用20入口表或类似的余弦和正弦!
有谁知道将跟踪下图的Mathematica代码?
这是图的等式,具有常系数的二阶线性微分方程:

以下是此等式跟踪的图表:

从"时间序列分析和预测示例"一书中引用:
......其中δ(t)是脉冲(δ)函数,就像豌豆击中一样,在时间t = 0时迫使摆远离其平衡,a是豌豆撞击的大小.很容易想象,这个二阶微分方程所追踪的曲线是时间的阻尼正弦函数,但是,如果摩擦或粘度足够大,(过阻尼)摆可能会在指数曲线之后逐渐停止而没有交叉中心线.
我有一个巨大的名单,例如.{a,b,c},{d,e,f}我必须只有{a,c},{d,f}.我使用url中的import.我的一句话:
Drop[Import["url"],{2}]
Run Code Online (Sandbox Code Playgroud)
它不起作用.为什么?
我试图在单位正方形的4个顶点处绘制一个函数,该函数为0,在该正方形的中间为1.我试过这个:
import matplotlib.pyplot
z = [[0,0,0], [1,0,0], [0,1,0], [1,1,0], [.5,.5,1]]
cn = matplotlib.pyplot.contour(z)
matplotlib.pyplot.show(cn)
Run Code Online (Sandbox Code Playgroud)
得到了这个:

我期待一系列同心正方形,如下所示:

这就是我做的时候
ListContourPlot[{{0,0,0}, {1,0,0}, {0,1,0}, {1,1,0}, {.5,.5,1}},
ColorFunction -> (Hue[#1]&)]
Run Code Online (Sandbox Code Playgroud)
在Mathematica.
我做错了什么?
编辑:我意识到为给定数据绘制轮廓的方法不止一种.在这种情况下,一系列同心圆也可以.
我正在使用Mathematica 9并导出大量列表(典型列表的尺寸为182500,4,8,42).每个文件大约有6个这样大小的列表(所有整数,不确定这是否会对列表产生影响,我知道它在其他数组类型中也是如此).保存它们是HDF5格式,但是,文件的大小相对较大(1.5 GB).
因此,我试图在Mathematica中使用GZIP压缩文件,因为他们声称它是导出函数中的一个选项,顺便说一下,它有很多错误.
在文档之后的所有尝试都没有完成后,无法找到任何帮助.我想知道我们的Mathematica爱好者是否可以提供一些技巧.