何度も試してみましたが、特に接線については、まだこのように見えるようにすることができません。
MWE:(クレジットジミーンズ)
\documentclass[tikz,border=1mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[
scale=1.5,
every node/.style={scale=0.5},
>={Triangle[scale=0.6]}
]
% Drawing the main axis:
\draw[<->] (0,1/0.25) node[above]{$y$} --
(0,0) node[below left]{0} --
(4.5,0) node[right]{$x$};
% Drawing the main function:
\draw[thick] plot[domain=0.28:4.4, samples=200](\x,{1/\x}) node[right]{$k^{0}$};
% Drawing the dotted lines:
\draw[densely dotted, thick] (1,0) node[below]{$x^{0}$} |-
(0,1) node[left]{$y^{0}$};
% Drawing the dashed lines:
\foreach \x in {0.55,1,1.3,2}{
\draw[densely dashed] (0,0) -- (\x,1/\x);
}
% Drawing the points:
\foreach \p in {0.45, 0.55, 1, 1.3, 2, 2.6}{
\draw[fill=black] (\p,1/\p) circle (1pt);
}
% Labeling the points:
\node[above right] (M'') at (0.45,1/0.45){$M''$};
\node[above right] (A) at (0.55,1/0.55){$A$};
\node[above right] at (1,1){$P$};
\node[above right] at (1.3,1/1.3){$M$};
\node[above right] (B) at (2,1/2){$B$};
\node[above right] (M') at (2.6,1/2.6){$M'$};
% Drawing the arrows:
\draw[->] (A) -- (M'');
\draw[->] (B) -- (M');
\draw[->] (0.4,3.2) -- (0.55,3.2);
\draw[->] (3.5,0.45) -- (3.65,0.45);
% Drawing the dashed function:
\draw[ thick,
xshift = 0.3cm,
yshift = 0.3cm,
dash pattern = on 10.85pt off 3pt
] plot[domain=0.28:4.4, samples=200](\x,{1/\x}) node[right]{$k^{1}$};
\end{tikzpicture}
\end{document}
答え1
ポイントCは数学的に求められますfactorA
。関数を参照してください。また、点を見つけることも可能でしょう。C図書館でintersections
探すことになりますが、バツその点の価値XYZ座標系(回転した座標系を使用しない限り、それほど難しくはありません)。
平方根の前にマイナス記号を付ける2番目の解法もありますが、それが実際に有効かどうかは確認していません。1つの> 0。b> 0、つまりその係数は1より大きい。意味け¹は常に上と右にありますけ⁰.
接線はこれら2つの関数の導関数によって決定されます(別の数学的解)。これをPGF/TikZ内で行うことは簡単ではありません。C。
のバツ価値あ、BそしてCは独自の PGFMath 関数です。xC
関数が含まれているため、factorA
この値は定数であっても使用されるたびに評価されますxC
(あまり効率的ではありません)。
コード
\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, calc}
\begin{document}
\begin{tikzpicture}[
x=2cm, y=2cm, thick, >=Triangle,
every label/.append style={inner sep=+.15em},
declare function={
a = .5; b = .5; xA = .55; xB = 2; xC = factorA(xA, a, b) * xA;
f(\x) = 1/\x; ft(\x) = -1/\x/\x;
g(\x) = 1/(\x-a)+b; gt(\x) = -1/(\x-a)/(\x-a);
factorA(\x,\a,\b) = (sqrt(\a*\a-2*\a*\b*\x*\x+\b*\b*\x*\x*\x*\x+4*\x*\x)
+\a+\b*\x*\x)/(2*\x);},
label positions/.style args={#1:#2}{label #1/.style={label={#2:##1}}},
label positions/.list={A:right, B:above, C:right, R:above right},
dot/.style={
circle, inner sep=+0pt, outer sep=+0pt, minimum size=+3pt, fill,
label #1/.try={$#1$}},
mark on axis/.style args={#1:#2}{insert path={
(#1) edge[densely dotted] node[at end, below] {$x_{#2}$} (#1|-0,0)
edge[densely dotted] node[at end, left] {$y_{#2}$} (#1-|0,0)}}
]
\draw[<->] (0,4.5) node[above]{$y$} |- (5.5,0) node[right]{$x$};
\draw[very thick, samples=200] plot[domain=.28:4.4] (\x,{f(\x)}) node[right]{$k^0$}
plot[domain=.28+a:4.4+a] (\x,{g(\x)}) node[right]{$k^1$};
\foreach[count=\cnt] \pnt/\fct in {A/f, B/f, C/g}
\node[dot=\pnt] (\pnt) at (x\pnt,{\fct(x\pnt)}) {} [mark on axis=\pnt:\cnt];
\foreach \pnt/\lbl in {A/R, B/{}}
\draw[dashed] (0,0) -- ($(0,0)!2!(\pnt)$) coordinate[label \lbl/.try=$\lbl$] ();
\foreach[/pgf/inner sep=+.15em, evaluate={\ang=atan(\fct t(x\pnt));}]
\pnt/\lbl/\fct in {A/a/f, B/{}/f, C/c/g}
\draw[dashed, shift=(\pnt)](\ang+180:1) node[above left] {$\lbl$}
-- (\ang :1) node[below] {$\lbl$};
\end{tikzpicture}
\end{document}
出力
答え2
参考までに、ここに別の例を挙げておきますあなたの他の質問に対する私の答え、また、メタポスト。
pair
これは、変数を扱う別の方法(z
この表記法では、変数を宣言せずに使用できます) と、曲線上の点に接線バーを描画する関数を示しています。前と同様に、これを でコンパイルする必要がありますlualatex
。
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path xx, yy, ff, k[];
xx = 20 left -- 300 right;
yy = xx rotated 90;
ff = (1, 1) {dir -45} for x = 2 upto 5: .. (x, 1/x) endfor;
ff := reverse ff reflectedabout(origin, (1,1)) & ff;
k0 = ff scaled 280/5;
k1 = subpath (2, 6) of ff scaled 280/3;
numeric a, b, c;
a = 3.4; b = 5.1;
z.A = point a of k0;
z.B = point b of k0;
z.R = 2.4 z.A;
z.S = 2 z.B;
(c, whatever) = k1 intersectiontimes (origin -- z.R);
z.C = point c of k1;
z.D = point c-3/4 of k1;
z.E = point c+3/4 of k1;
vardef tangent expr t of p =
(left--right) scaled 42 rotated angle direction t of p shifted point t of p
enddef;
draw tangent a of k0 dashed withdots scaled 1/8 withcolor 1/2 red;
draw tangent b of k0 dashed withdots scaled 1/8 withcolor 1/2 red;
draw tangent c of k1 dashed withdots scaled 1/8 withcolor 1/2 red;
draw z.D -- z.C -- z.E dashed evenly withpen pencircle scaled 1/4;
draw k0 withcolor 2/3 red;
draw k1 withcolor 2/3 red;
draw z.R -- origin dashed evenly withpen pencircle scaled 1/4;
draw z.S -- origin dashed evenly withpen pencircle scaled 1/4;
label.urt("$R$", z.R);
forsuffixes @ = A, B, C:
draw (x@, 0) -- z@ -- (0, y@) dashed withdots scaled 1/4;
label.bot("$\scriptstyle x^" & str @ & "$", (x@, 0));
label.lft("$\scriptstyle y^" & str @ & "$", (0, y@));
endfor
forsuffixes @ = A, B, C, D, E:
dotlabel.urt("$" & str @ & "$", z@);
endfor
drawarrow xx;
drawarrow yy;
dotlabel.llft("$0$", origin);
label.rt("$k^0$", point 8 of k0);
label.rt("$k^1$", point 8 of k1);
label.rt("$x$", point 1 of xx);
label.top("$y$", point 1 of yy);
endfig;
\end{mplibcode}
\end{document}
答え3
使用tzplot
:
\documentclass{standalone}
\usepackage{tzplot}
\begin{document}
\begin{tikzpicture}[scale=1.5,font=\scriptsize]
%\tzhelplines[thick](5,1/0.25)
\tzaxes(5,1/0.25){$x$}{$y$}
\tzshoworigin
% def functions
\def\kzero{1/\x}
\def\kone{2/\x}
\def\lineA{1.8*\x}
\def\lineB{(1/5)*\x}
% indifference curves
\tzfn\kzero[.28:4.4]{$k^0$}[r]
\tzfn\kone[.55:4.4]{$k^1$}[r]
% dashed rays
\tzfn[dashed]\lineA[0:1.5]{$R$}[ar]
\tzfn[dashed]\lineB[0:4]
% intersection points
\tzXpoint*{kzero}{lineA}(A){$A$}[r]
\tzXpoint*{kone}{lineA}(C){$C$}[r]
\tzXpoint*{kzero}{lineB}(B){$B$}[a]
% tangent lines
\tztangent[densely dashed,red]{kzero}(A)[.3:1.1]{$a$}[b]
\tztangent[densely dashed,red]{kone}(C)[.7:1.5]{$c$}[b]
\tztangent[densely dashed,red]{kzero}(B)[1.5:3]
\tztangent[draw=none]{kzero}(A)[1.1:.3]{$a$}[l] % label
\tztangent[draw=none]{kone}(C)[1.5:.7]{$c$}[l] % label
% projections
\tzproj(A){$x^A$}{$y^A$}
\tzproj(B){$x^B$}{$y^B$}
\tzproj(C){$x^C$}{$y^C$}
% more lines: CD and CE
\tzvXpointat*{kone}{0.7}(D){$D$}[r]
\tzvXpointat*{kone}{1.6}(E){$E$}[ar]
\tzline[densely dashed,blue](C)(D)
\tzline[densely dashed,blue](C)(E)
\end{tikzpicture}
\end{document}