在保持两端的情况下使抛物线在两侧更陡峭

Make a parabola steeper at both sides while keeping both ends

我有一个抛物线,两个轴都从 0 到 1,如下所示:

使用以下代码创建并归一化抛物线:

import matplotlib.pyplot as plt
import numpy as np

# normalize array
def min_max_scale_array(arr):
    arr = np.array(arr)
    return (arr - arr.min())/(arr.max()-arr.min())

x = np.linspace(-50,50,100)
y = x**2

x = min_max_scale_array(x)
y = min_max_scale_array(y)

fig, ax = plt.subplots()
ax.plot(x, y)

我想创建另一个两端相同但两边都变得更陡的像这样:

我想加入指数曲线及其反射,但这会使生成的抛物线在底部看起来很尖。

你能告诉我如何实现吗?谢谢!

如果要修改任意曲线,可以更改 x 值,例如取它的幂:

# x and y are defined

for factor in [1.1, 1.5, 2, 3, 4]:
    x2 = 2*x-1
    x3 = (abs(x2)**(1/factor))*np.sign(x2)/2+0.5
    ax.plot(x3, y, label=f'{factor=}')

输出:

您可以更改指数以获得在极值处具有相同值的更陡峭的曲线。您需要选择一个更大的值,它是一个偶数(奇数不会给出抛物线)。

y = x**4