如何用R语言curve函数绘制固定参数的自定义函数图像
使用R的curve函数绘制自定义fun1函数图像的解决方案
问题背景
你已经定义了如下自定义函数:
fun1 <- function( x, y, z ){ 1 / (1 + (x / y)^z) }
需要用R的curve函数绘制该函数图像,要求固定参数y=1、z=0.5,横轴取指定的x范围(比如10到1000)或离散x值(10、50、1000),纵轴为对应x的fun1计算结果,之前参考了单参数函数的curve示例,需要可行的实现方案。
实现方案
方案1:直接在curve中使用匿名函数固定参数
curve函数要求传入的函数仅接受x作为唯一参数,因此可以直接在curve里用匿名函数,把y和z的参数固定住:
# 定义原函数 fun1 <- function( x, y, z ){ 1 / (1 + (x / y)^z) } # 调用curve绘制连续曲线,x范围从10到1000 curve(fun1(x, y=1, z=0.5), from=10, to=1000, xlab="x值", ylab="fun1计算结果", main="fun1函数连续图像(y=1, z=0.5)")
方案2:先创建固定参数的包装函数
如果需要多次调用,也可以先写一个只接受x的包装函数,再传给curve:
# 定义原函数 fun1 <- function( x, y, z ){ 1 / (1 + (x / y)^z) } # 创建固定y、z参数的包装函数 fun1_fixed <- function(x) { fun1(x, y=1, z=0.5) } # 调用curve绘制曲线 curve(fun1_fixed, from=10, to=1000, xlab="x值", ylab="fun1计算结果", main="fun1函数连续图像(y=1, z=0.5)")
方案3:绘制指定离散x值的点
如果只需要绘制10、50、1000这几个离散点,curve不适合(它是绘制连续曲线的),可以用plot函数:
# 定义原函数 fun1 <- function( x, y, z ){ 1 / (1 + (x / y)^z) } # 指定要绘制的离散x值 x_points <- c(10, 50, 1000) # 计算对应的fun1结果 y_points <- fun1(x_points, y=1, z=0.5) # 绘制离散点 plot(x_points, y_points, xlab="x值", ylab="fun1计算结果", main="fun1函数离散点图像(y=1, z=0.5)", pch=16, # 设置点的形状为实心圆 col="red") # 设置点的颜色为红色
内容的提问来源于stack exchange,提问作者user20501829
相关产品推荐
相关产品推荐

