调整负指数函数渐近线至指定值并限制y≤1的技术求助
调整负指数曲线使其渐近于指定值且不超过1
你需要的是让曲线在d=0时y=1,随着d增大渐近于指定值(比如0.1),同时y始终≤1。直接加常量会导致d较小时y超过1,因此需要对原指数函数做缩放平移处理。
推导后的方程
设目标渐近值为a(要求0 ≤ a < 1),调整后的方程为:
y = (1 - a) * exp(-d/z) + a
- 当
d=0时,exp(0)=1,代入得y=(1-a)*1 +a=1,符合初始值要求 - 当
d→∞时,exp(-d/z)→0,y→a,满足渐近需求 - 因为
exp(-d/z)始终≤1,所以y=(1-a)*exp(...) +a ≤ (1-a)*1 +a=1,不会超过上限
R代码实现
# 定义带渐近值参数的函数 fun_expo <- function(d, z, a) { (1 - a) * exp(-d/z) + a } d <- seq(0, 40, by = 0.1) # 原曲线(渐近于0) y_original <- fun_expo(d, z = 5, a = 0) # 目标曲线(渐近于0.1) y_target <- fun_expo(d, z = 5, a = 0.1) # 绘图对比 plot(d, y_original, type = "l", xlab = "d", ylab = "y", col = "black") lines(d, y_target, type = "l", col = "red", lwd = 2) legend("topright", legend = c("原曲线(渐近于0)", "目标曲线(渐近于0.1)"), col = c("black", "red"), lwd = c(1,2))
你可以根据需求修改a的值,只要a在[0,1)区间内,都能满足y≤1且d≥0的要求。当a=0时,函数会退回到你最初的版本。
内容的提问来源于stack exchange,提问作者flee
相关产品推荐
相关产品推荐

