gpt4 book ai didi

python - Matplotlib 无法生成准确的 slider 图

转载 作者:行者123 更新时间:2023-12-01 07:17:33 27 4
gpt4 key购买 nike

我有以下等式:

img

y = ((b-6(x**k))/c)**(1/k)
k = 10/(6+c)

我知道当 k > 1 时 y 是凹的,当 0 < k < 1 时 y 是凸的。然而,问题是在生成的图中,无论 k 的值是多少,它总是会生成凹的 y。我想知道是否有人可以帮助我找出问题所在。

生成动态图的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons

fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.25)
x = np.arange(0.0, 1.0, 0.001)
b_init = 1
c_init = 0
k = 10/(6+c_init)
delta_f = 1.0
y = ((b_init-6*(x**k))/c_init)**(1/k)
l, = plt.plot(x, y, lw=2)
ax.margins(x=0)

axcolor = 'lightgoldenrodyellow'
ax_b = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor=axcolor)
ax_c = plt.axes([0.25, 0.15, 0.65, 0.03], facecolor=axcolor)

s_b = Slider(ax_b, 'b', 0.1, 18.0, valinit=b_init, valstep=delta_f)
s_c = Slider(ax_c, 'c', 0.1, 12.0, valinit=c_init)


def update(val):
b = s_b.val
c = s_c.val
l.set_ydata(((b-6*(x**k))/c)**(1/k))
fig.canvas.draw_idle()


s_b.on_changed(update)
s_c.on_changed(update)

resetax = plt.axes([0.8, 0.025, 0.1, 0.04])
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')


def reset(event):
s_b.reset()
s_c.reset()
button.on_clicked(reset)

def colorfunc(label):
l.set_color(label)
fig.canvas.draw_idle()

plt.show()

最佳答案

如果您使用的是 juypter 笔记本,您可以使用 ipywidgets 中的小部件,如下所示。另外,为了获得直觉,打印出 b、c 和 k 值可能会有所帮助。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as p
from ipywidgets import *

def y(x,b,c):
k = 10/(6+c)
print(f' b={b:.3f},c={c:.3f},k={k:.3f}')
y = ((b-6*(x**k))/c)**(1/k)
return y

def inter(b0,c0):
y1=y(x,b0,c0)
p.figure(figsize=(20,6))
p.plot(x,y1)

dx=0.001
x = np.arange(0, 1.0+dx, dx) # assuming you want to go to 1 inclusively

b0=widgets.FloatSlider(value=10,min=-1,max=18.0,step=0.01,
description='b0',
continuous_update=False,
readout_format='.3f',
layout=Layout(width='90%', height='20px'))

c0=widgets.FloatSlider(value=0.1,min=-1,max=12.0,step=0.01,
description='c0',
continuous_update=False,
readout_format='.3f',
layout=Layout(width='90%', height='20px'))

interact(inter, b0=b0,c0=c0);

enter image description here

enter image description here

关于python - Matplotlib 无法生成准确的 slider 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57877433/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com