在保持两端的情况下使抛物线在两侧更陡峭
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
我有一个抛物线,两个轴都从 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