在Mathematica中绘制多重规则函数

3
我该如何在Mathematica中编写类似于这个(复杂轮廓)函数的代码: enter image description here

1
我不太明白你所说的“函数”是什么意思。你是想为一个轮廓参数化,以便进行数值或符号积分吗?丹尼尔·利希特布劳 - Daniel Lichtblau
@Daniel:在我简单地创建图形之前,我应该先阅读你的评论…… - Simon
@belisarius:你说得对。我会尽量不忘记给答案加上署名。 - asd
@Daniel:实际上我需要那个参数方程或极坐标函数的图像。顺便问一下,通常我该如何编写这样的函数代码,例如:$f(x)=x^2, if x>=0; -x+1, if x<0$? - asd
@asd,你可以用多种方式来定义它。例如,f[x_ /; x > 0] := x^2; f[x_ /; x < 0] := 1 - x; 就可以完成任务。 - acl
1
@asd 请在文档中心查看Piecewise[]。Daniel Lichtblau - Daniel Lichtblau
2个回答

5

我不确定c具体是什么,但我假设它是一个介于0和1之间的数字,表示传入直线的高度。因此,也许像这样的内容适合您的需求?

c = 0.7;
t0 = ArcSin[c];
PolarPlot[If[Abs[t] < t0, Abs[Sin[t0]/Sin[t]], 1], {t, -\[Pi], \[Pi]}]

1
我猜 c 只是一个标签(通常在书籍等中称为积分轮廓 c)。您可以使用此软件包轻松地向轮廓添加箭头:http://users.dimi.uniud.it/~gianluca.gorni/Mma/Mma.html - acl
2
箭头和标签也可以使用类似下面的Epilog添加... Epilog -> { Arrow[{{2, c}, {1, c}}], Arrow[{{1, -c}, {2, -c}}], Arrow[{{-1, .1}, {-1, -.1}}], Text["C", {1.5, c + .1}], Text["C", {1.5, -(c + .1)}] } - dwa

4
最直接的方法是使用图形原语(虽然我认为我更喜欢Felix的PolarPlot解决方案)。
With[{q = Pi/6}, 
 Graphics[{Circle[{0, 0}, 1, {q, 2 Pi - q}], 
   Arrowheads[{{.05, .8}}], 
   Arrow[{{Cos[q] + 2, Sin[q]}, {Cos[q], Sin[q]}}], 
   Arrow[{{Cos[q], Sin[-q]}, {Cos[q] + 2, Sin[-q]}}],
   FontSize -> Medium, Text["\[ScriptCapitalC]", {2, Sin[q]}, {0, -2}]}, 
  Axes -> True, PlotRange -> {{-4, 6}, {-4, 4}}]]

等高线图

如果你想要contour函数的实际功能,那么可能像这样:

contour[t_, t0_: (5 Pi/6)] := Piecewise[{
   {Exp[I (t + Pi)], -t0 < t < t0},
   {t - t0 + Exp[I (t0 + Pi)], t >= t0},
   {-t - t0 + Exp[-I (t0 + Pi)], t <= -t0}}]

ParametricPlot[Through[{Re, Im}[contour[t]]], {t, -8, 8}, PlotPoints -> 30]

contour v2

如果想在这个图表中添加箭头,我猜您需要手动添加它们(使用Epilog或绘图工具),或使用修改内置图表的包之一。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接