如何在Mathematica中编写与此类似的函数(复杂轮廓)的代码:
答案 0 :(得分: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 :(得分: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[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]
要在此图中添加箭头,我猜您必须手动添加它们(使用Epilog
或绘图工具)或使用其中一个修改内置图的包。