编写程序,分别采用面向对象和面向函數两种方式绘制正弦曲线和余弦曲线。提示,利用numpy的inspace0、sin0或cos)函数生成样本數据、正弦值或余弦值。
时间: 2024-09-06 19:01:36 浏览: 55
面向对象编程(OOP)和面向函数编程(FP)是两种不同的编程范式。下面分别用这两种方式来绘制正弦曲线和余弦曲线。
首先是面向对象的实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 面向对象方式定义绘制曲线的类
class CurvePlotter:
def __init__(self, x):
self.x = x
self.y_sin = np.sin(x)
self.y_cos = np.cos(x)
def plot_sin(self):
plt.plot(self.x, self.y_sin)
plt.title('Sine Wave')
plt.xlabel('x')
plt.ylabel('sin(x)')
def plot_cos(self):
plt.plot(self.x, self.y_cos)
plt.title('Cosine Wave')
plt.xlabel('x')
plt.ylabel('cos(x)')
def show(self):
plt.show()
# 使用CurvePlotter类绘制曲线
x = np.linspace(0, 2 * np.pi, 100)
plotter = CurvePlotter(x)
plotter.plot_sin()
plotter.plot_cos()
```
接下来是面向函数的实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 面向函数方式绘制正弦曲线和余弦曲线
def plot_curves(x):
y_sin = np.sin(x)
y_cos = np.cos(x)
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(x, y_sin, label='sin(x)')
plt.title('Sine Wave')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.legend()
plt.subplot(1, 2, 2)
plt.plot(x, y_cos, label='cos(x)')
plt.title('Cosine Wave')
plt.xlabel('x')
plt.ylabel('cos(x)')
plt.legend()
plt.tight_layout()
plt.show()
# 生成样本数据
x = np.linspace(0, 2 * np.pi, 100)
plot_curves(x)
```
在上面的代码中,面向对象的方式创建了一个`CurvePlotter`类来封装曲线的绘制逻辑。而面向函数的方式则将绘图逻辑直接作为函数实现,没有使用类的封装。
阅读全文