m0_73904918 2023-04-04 20:11 采纳率: 50%
浏览 27
已结题

r语言怎么画分段函数

#遇到的问题
定义 𝑓(𝑥) =x^2 + 1,当 𝑥 > 1; 𝑓(𝑥) = 3𝑥2 − 1,当 0 < 𝑥 ≤ 1; 𝑓(𝑥) = 𝑥 − 1,当 𝑥 ≤ 0
.画出函数 𝑓(𝑥) 在 [-1,2] 上的图像
#my code

m <- function(x){
  if(x>1){f=x^2+1}
  if(x<=0){f=x-1}
  else{f=3*x^2-1}
  return(f)}
n <- Vectorize(m)
plot(m,-1,2,col=6)

#出现的问题
Error in if (x > 1) { : the condition has length > 1

##我知道如果函数只有两段的话可以用ifelse()来解决,但这个有三段没办法用此种方法,如果用curve函数的话,得分三次写,有点麻烦,有什么简便的方法来解决吗
希望得到大家的帮助,万分感谢!

  • 写回答

1条回答 默认 最新

  • Cmy_CTO 2023-04-04 20:21
    关注

    可以使用向量化函数ifelse来解决

    f <- function(x){ ifelse(x>1,x^2+1,ifelse(x<=0,x-1,3*x^2-1)) } plot(f,-1,2,type="l",col=6)

    这里ifelse函数嵌套使用
    如果x>1,则返回x^2+1,否则,进入下一层ifelse,
    如果x<=0则返回x-1,否则返回3*x^2-1。

    最后使用plot函数画图,指定type="l"来画出连续的曲线。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月4日

悬赏问题

  • ¥200 基于同花顺supermind的量化策略脚本编辑
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?