Python中编写程序分别采用面对对象和面对函数两种方式,绘制正弦曲线和余弦曲线,利用numpy的Linspace()、sin()或cos()函数生成样本图、正弦或余弦值
时间: 2024-10-08 18:15:54 浏览: 13
在Python中,你可以选择面向对象的方式来设计这个程序,也可以使用函数式编程风格。这里我们以面向对象的方式为例,结合numpy库来绘制正弦和余弦曲线。
**面向对象方式(使用matplotlib库):**
```python
import numpy as np
import matplotlib.pyplot as plt
class CurveGenerator:
def __init__(self, function):
self.function = function
def generate(self, start, end, num_points):
x = np.linspace(start, end, num_points)
y = self.function(x)
return x, y
# 创建正弦和余弦曲线对象
sin_curve = CurveGenerator(np.sin)
cos_curve = CurveGenerator(np.cos)
# 绘制图形
fig, (ax1, ax2) = plt.subplots(2, sharex=True)
ax1.plot(*sin_curve.generate(-np.pi, np.pi, 400), label='Sine')
ax2.plot(*cos_curve.generate(-np.pi, np.pi, 400), label='Cosine')
for ax in [ax1, ax2]:
ax.set_title(f'{ax.get_label()} Function')
ax.legend()
plt.show()
```
**面向函数方式(直接使用numpy):**
```python
def plot_sinusoidal_functions(functions, labels, start, end, num_points):
x = np.linspace(start, end, num_points)
for func, label in zip(functions, labels):
y = func(x)
plt.plot(x, y, label=label)
plt.title('Sine and Cosine Functions')
plt.xlabel('X-axis')
plt.ylabel('Function Values')
plt.legend()
plt.show()
functions = [np.sin, np.cos]
labels = ['Sine', 'Cosine']
plot_sinusoidal_functions(functions, labels, -np.pi, np.pi, 400)
```