gpt4 book ai didi

r - 如何绘制一个简单的分段线性函数?

转载 作者:行者123 更新时间:2023-12-04 12:37:51 24 4
gpt4 key购买 nike

enter image description here
该图像说明了我的绘图目标。在此图像上,忽略 x1 上的垂直斜率。完全没有意义。在 x 取值 x1 或更大或 y 结果为 0 之后,该函数根本没有定义。

我有以下两个条件的分段线性函数。你如何在 R 中绘制它?从语义上讲,我想声明:“如果 x 等于或大于 20(x1),则 y 必须为零,否则 y 等于 mx+y1−mx1。” .该斜率必须减小并将 y 在 20 时设置为零。

F
(
X
)
=

{




X
+


1

-


X
1



如果
0

X
<

X
1





0


如果
X


X
1






到目前为止,我试过这个(不确定如何设置 y1)

m <- -2
x1 <- 20
y1 <- ???
x <- seq(0, 100, 1)
fx <- (0 <= x & x < x1) * (m*x + y1 - m*x) + (x >= x1) * 0
plot(x, fx)

当然,这会导致错误。
Error in xy.coords(x, y, xlabel, ylabel, log) : 
'x' and 'y' lengths differ

我不确定如何表示 y 和 y1。

最佳答案

定义你需要的函数:

myf<-function(x, x1=20, y1=50, m=-2){ 
firstInds<-intersect(which(x >= 0), which(x < x1))
y<-x
y[firstInds]<-m*x[firstInds]+y1-m*x1
y[-firstInds]<-0
y
}

然后使用它:
x<-1:50
plot(x, myf(x))

就那么简单。

Just the illustration

如果你想要连接点的线,你可以做
plot(x, myf(x), ylab="Y", xlab="X"); lines(x, myf(x), col="red")

关于r - 如何绘制一个简单的分段线性函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18737357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com