import math
import matplotlib.pyplot as plt
# RootFinder
EPSILON = float(0.01);
mid_x_list = []
mid_y_list = []
def Bisection(leftX, rightX, func):
midX = 0.0;
midY = 0.0;
i = 0;
while (rightX - leftX) >= EPSILON:
midX = (leftX + rightX) / (2.0 * 100.0) ;
midY = func(midX);
mid_x_list.append(midX);
mid_y_list.append(midY);
print(i, leftX, rightX, midX, midY);
if midY < 0:
leftX = midX;
else:
rightX = midX;
i = i + 0.1;
# MainProgram
# def func(x):
# return x * x * x - x - 2; # wikipedia
# return x * x - 2;
#a = 1, b = 2; # wikipedia
a = -50
b = 50;
x_list = []
y_list = []
for i in range(a, b):
x = i/100.0
y = math.sin(x);
x_list.append(x)
y_list.append(y)
plt.plot(x_list, y_list)
Bisection(a, b, math.sin);
plt.plot(mid_x_list, mid_y_list)
为什么这个实现没有显示正弦波?