我对数学演示很感兴趣。目前,我正在研究Python中可视化数值方法,特别是对分法。下面是我到目前为止写的代码。
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
def sgn(x):
if x > 0:
return 1
elif x < 0:
return -1
else:
return 0
def bisect(f,a,b):
fa = f(a)
fb = f(b)
p = a+(b-a)/2
fp = f(p)
if sgn(fa) == sgn(fp):
return p, fp, b, fb
else:
return a, fa, p, fp
def f(x):
return x**2-3
a, b = 1, 2
plt.figure()
plt.subplot(111)
a, fa, b, fb = bisect(f,a,b)
vf = np.vectorize(f)
x = np.linspace(a,b)
y = vf(x)
plt.plot(x, y, color='blue')
plt.plot([a,a], [0,fa], color='red', linestyle="--")
plt.plot([b,b], [0,fb], color='red', linestyle="--")
plt.grid()
plt.show()
我有三个问题想解决。首先,我希望能够多次调用二等分函数,每次我都希望用新数据重新绘制图。第二,我想重新启动动画后,应用二等分功能一些指定的次数。第三,我想保留图的原始轴线之前,二等分法被调用即。我想保持x范围为[1,2],y范围为$[-2,1]$。任何帮助将不胜感激。
3条答案
按热度按时间xxslljrj1#
我通过反复试验找到了解决问题的办法。
vaqhlq812#
您可以简单地将代码更改为:plt.plot([a,a],[0,fa],color ='red',linestyle="--",hold=TRUE),这基本上允许您绘制多个点而不重置图,一旦您绘制了多次,您可以使用hold=FALSE重置。希望这有意义。
yacmzcpb3#
我详细阐述了一个类似的问题,并计算和可视化它。
或者将计算结果也显示为图示: