今天我读了关于分段定义函数的文章,并看到了这篇实际上是关于其他内容的文章:
这是从那里取来的。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\begin{axis}[
axis y line=center,
axis x line=middle,
axis on top=true,
xmin=-7,
xmax=7,
ymin=-4,
ymax=4,
clip=false
]
\addplot[
mark=none,
domain=-4:6,
samples=80,
red,
thick,
] {(x<-2)*-2 + (!(x<-2) && (x<3))*x + (!(x<3)) * 3}
node[pos=0.1,pin=135:{\color{purple}$f(x)=-2$}] {}
node[pos=0.6,pin=135:{\color{blue}$f(x)=x$}] {}
node[pos=0.9,pin=135:{\color{green!70!black}$f(x)=3$}] {}
;
\end{axis}
\end{tikzpicture}
\end{document}
and(<condition1>,<condition2>)
我得到了解释的语法这里例如,但我不明白上面例子中的语法
(x<-2)*-2 + (!(x<-2) && (x<3))*x + (!(x<3)) * 3
and
有人能给我解释一下吗?还是我只是瞎了眼?里面没有类似的东西and(a,b)
,那会做什么!
?我猜这是否定的。
更新
我可以在文档中的某处找到这个吗?或者这只是常识?
答案1
在pgfmath
真表达式中,其值为 1,在假表达式中,其值为 0。也就是说,如下表达式等同(x<-2)
于函数 f(x):
因此,这是有效的,因为:
(x<-2)
:此条件仅对 成立x < -2
。因此,这仅对 的表达式有贡献x < -2
。因此,(x<-2)*-2=-2
对于x<-2
,否则为 0。(!(x<-2) && (x<3))
:对于 ,其值为 1-2 <= x <= 2
。因此,在这个范围内, 的值为x
。!(x<3)
:仅当 时才为 1。x >=3
因此,(!(x<3)) * 3=3
当 时为x >=3
,否则为零。
如果仍有任何疑惑,这个计算各种条件值的表格应该会有所帮助:
答案2
这似乎是布尔逻辑。
因此,&&
是的运算符and
,而是!
否定运算符。
那么x = 1
(x<-2)*-2
是1 < -2
?不,好吧,那就是0
。
0*-2 = 0
。
还有!
!(x<-2)
与上面相同,但这次取反结果,因此 a0
变为 a 1
, a1
变为 a0
等等...
以下是有关布尔逻辑如何工作的一些信息
http://www.mathworks.nl/help/matlab/matlab_prog/truth-table-for-logical-operations.html